dfsm: Redefine arithmetic to saturate rather than overflow
[bendy-bus:bendy-bus.git] / dfsm / tests / test-utils.c
1 /* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
2 /*
3  * D-Bus Simulator
4  * Copyright (C) Philip Withnall 2012 <philip@tecnocode.co.uk>
5  * 
6  * D-Bus Simulator is free software: you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation, either version 3 of the License, or
9  * (at your option) any later version.
10  *
11  * D-Bus Simulator is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with D-Bus Simulator.  If not, see <http://www.gnu.org/licenses/>.
18  */
19
20 #include <glib.h>
21 #include <gio/gio.h>
22 #include <dfsm/dfsm.h>
23
24 #include "test-utils.h"
25
26 gchar *
27 load_test_file (const gchar *filename)
28 {
29         guint8 *contents = NULL;
30         gsize length;
31         GFile *machine_file;
32         GError *error = NULL;
33
34         machine_file = g_file_new_for_path (filename);
35
36         /* Load the file. */
37         g_file_load_contents (machine_file, NULL, (gchar**) &contents, &length, NULL, &error);
38         g_assert_no_error (error);
39         g_assert_cmpuint (length, >, 0);
40
41         g_object_unref (machine_file);
42
43         return (gchar*) contents; /* assume it's text; g_file_load_contents() guarantees it's nul-terminated */
44 }
45
46 GVariant *
47 new_unary_tuple (GVariant *element)
48 {
49         GVariant *elements[2] = { element, NULL };
50         return g_variant_new_tuple (elements, 1);
51 }
52
53 guint
54 get_counter_from_environment (DfsmEnvironment *environment, const gchar *counter_name)
55 {
56         GVariant *variant;
57         guint retval;
58
59         variant = dfsm_environment_dup_variable_value (environment, DFSM_VARIABLE_SCOPE_OBJECT, counter_name);
60         retval = g_variant_get_uint32 (variant);
61         g_variant_unref (variant);
62
63         return retval;
64 }