2
* @file check_geis_bag.c
3
* @brief Unit test for geis-util/geis_bag
6
* Copyright 2011 Canonical Ltd.
8
* This program is free software: you can redistribute it and/or modify it
9
* under the terms of the GNU General Public License version 3, as published
10
* by the Free Software Foundation.
12
* This program is distributed in the hope that it will be useful, but
13
* WITHOUT ANY WARRANTY; without even the implied warranties of
14
* MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR
15
* PURPOSE. See the GNU General Public License for more details.
17
* You should have received a copy of the GNU General Public License along
18
* with this program. If not, see <http://www.gnu.org/licenses/>.
39
g_bag = geis_bag_new(sizeof(struct TestStruct),
41
geis_bag_default_growth_factor);
44
/* fixture teardown */
48
geis_bag_delete(g_bag);
52
/* verify bag construction/destruction */
53
START_TEST(construction)
55
GeisBag bag = geis_bag_new(1,
56
geis_bag_default_init_alloc,
57
geis_bag_default_growth_factor);
58
fail_unless(bag != NULL, "failed to create generic bag");
66
struct TestStruct datum = { 1, "borf" };
67
GeisStatus status = geis_bag_append(g_bag, &datum);
68
fail_unless(status == GEIS_STATUS_SUCCESS,
69
"unexpected result from geis_bag_append()");
76
struct TestStruct datum1 = { 1, "borf" };
77
struct TestStruct datum2 = { 2, "barf" };
78
GeisSize count = geis_bag_count(g_bag);
79
fail_unless(0 == count,
80
"unexpected count in bag, expected %zu got %zu", 0, count);
81
GeisStatus status = geis_bag_append(g_bag, &datum1);
82
fail_unless(status == GEIS_STATUS_SUCCESS,
83
"unexpected result from geis_bag_append()");
84
count = geis_bag_count(g_bag);
85
fail_unless(1 == count,
86
"unexpected count in bag: expected %zu got %zu", 1, count);
87
status = geis_bag_append(g_bag, &datum2);
88
fail_unless(status == GEIS_STATUS_SUCCESS,
89
"unexpected result from geis_bag_append()");
90
count = geis_bag_count(g_bag);
91
fail_unless(2 == count,
92
"unexpected count in bag: expected %zu got %zu", 2, count);
99
struct TestStruct datum1 = { 1, "borf" };
100
struct TestStruct datum2 = { 2, "barf" };
101
GeisStatus status = geis_bag_append(g_bag, &datum1);
102
fail_unless(status == GEIS_STATUS_SUCCESS,
103
"unexpected result from geis_bag_append()");
104
status = geis_bag_append(g_bag, &datum2);
105
fail_unless(status == GEIS_STATUS_SUCCESS,
106
"unexpected result from geis_bag_append()");
108
struct TestStruct *odatum = geis_bag_at(g_bag, 0);
109
fail_unless(datum1.ival == odatum->ival,
110
"inserted and retrived data do not match: expected %d got %d",
111
datum1.ival, odatum->ival);
118
struct TestStruct datum1 = { 1, "borf" };
119
struct TestStruct datum2 = { 2, "barf" };
120
GeisStatus status = geis_bag_append(g_bag, &datum1);
121
fail_unless(status == GEIS_STATUS_SUCCESS,
122
"unexpected result from geis_bag_append()");
123
status = geis_bag_append(g_bag, &datum2);
124
fail_unless(status == GEIS_STATUS_SUCCESS,
125
"unexpected result from geis_bag_append()");
127
status = geis_bag_remove(g_bag, 0);
128
fail_unless(status == GEIS_STATUS_SUCCESS,
129
"unexpected result from geis_bag_remove()");
130
GeisSize count = geis_bag_count(g_bag);
131
fail_unless(1 == count,
132
"unexpected count in bag, expected %zu got %zu", 1, count);
133
struct TestStruct *odatum = geis_bag_at(g_bag, 0);
134
fail_unless(datum2.ival == odatum->ival,
135
"bad retrived data: expected %d got %d",
136
datum2.ival, odatum->ival);
143
make_geis_bag_suite()
145
Suite *s = suite_create("geis_bag");
147
TCase *create = tcase_create("geis-bag-creation");
148
tcase_add_test(create, construction);
149
suite_add_tcase(s, create);
151
TCase *usage = tcase_create("geis-bag-usage");
152
tcase_add_checked_fixture(usage, construct_bag, destroy_bag);
153
tcase_add_test(usage, append);
154
tcase_add_test(usage, count);
155
tcase_add_test(usage, at);
156
tcase_add_test(usage, remove);
157
suite_add_tcase(s, usage);