2
* unit tests for the geis device module
6
#include "libgeis/geis_device.h"
7
#include "libgeis/geis_attr.h"
12
static GeisDeviceBag g_device_bag;
13
static GeisString g_device_name = "device";
14
static GeisInteger g_device_id = 12;
20
g_device_bag = geis_device_bag_new();
23
/* fixture teardown */
27
geis_device_bag_delete(g_device_bag);
30
/* verify bag construction/destruction */
33
GeisDeviceBag bag = geis_device_bag_new();
34
fail_unless(bag != NULL, "failed to create device bag");
35
geis_device_bag_delete(bag);
39
/* verify bag insertion */
40
START_TEST(insert_device)
42
GeisDevice device = geis_device_new(g_device_name, g_device_id);
43
geis_device_bag_insert(g_device_bag, device);
44
fail_unless(geis_device_bag_count(g_device_bag) == 1,
45
"unexpected bag size after insertion");
49
/* verify bag removal */
50
START_TEST(remove_device)
52
GeisDevice device = geis_device_new(g_device_name, g_device_id);
53
geis_device_bag_insert(g_device_bag, device);
54
fail_unless(geis_device_bag_count(g_device_bag) == 1,
55
"unexpected bag size after insertion");
56
geis_device_bag_remove(g_device_bag, device);
57
fail_unless(geis_device_bag_count(g_device_bag) == 0,
58
"unexpected bag size after removal");
64
* Verify retrieval by name works.
66
START_TEST(attribute_name)
68
GeisDevice device = geis_device_new(g_device_name, g_device_id);
69
GeisAttr in_attr, out_attr;
70
const char *attribute_name = "TEST_ATTRIBUTE";
72
fail_if(geis_device_attr_by_name(device, attribute_name) != NULL);
73
in_attr = geis_attr_new(attribute_name, GEIS_ATTR_TYPE_INTEGER, (void*)&attr_value);
74
geis_device_add_attr(device, in_attr);
75
out_attr = geis_device_attr_by_name(device, attribute_name);
76
fail_if(out_attr == NULL);
77
fail_if(geis_attr_value_to_integer(out_attr) != attr_value);
84
for (i = 0; i < 24; ++i)
88
sprintf(name, "%04zu", i);
89
GeisDevice device = geis_device_new(name, i);
90
geis_device_bag_insert(g_device_bag, device);
91
count = geis_device_bag_count(g_device_bag);
92
fail_unless(count == (i+1),
93
"unexpected bag size %ld after insertion, expected %d",
105
Suite *s = suite_create("geis2-device");
107
TCase *create = tcase_create("device-bag-creation");
108
tcase_add_test(create, construct);
109
suite_add_tcase(s, create);
111
TCase *usage = tcase_create("device-bag-usage");
112
tcase_add_checked_fixture(usage, construct_bag, destroy_bag);
113
tcase_add_test(usage, insert_device);
114
tcase_add_test(usage, remove_device);
115
tcase_add_test(usage, expand);
116
suite_add_tcase(s, usage);
118
TCase *dev_attr = tcase_create("device-attributes");
119
tcase_add_test(usage, attribute_name);
120
suite_add_tcase(s, dev_attr);