]>
git.ipfire.org Git - thirdparty/kmod.git/blob - testsuite/test-array.c
2 * Copyright (C) 2014 Intel Corporation. All rights reserved.
4 * This program is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, see <http://www.gnu.org/licenses/>.
25 #include <shared/array.h>
27 #include "testsuite.h"
29 static int test_array_append1(const struct test
*t
)
32 const char *c1
= "test1";
34 array_init(&array
, 2);
35 array_append(&array
, c1
);
36 assert_return(array
.count
== 1, EXIT_FAILURE
);
37 assert_return(array
.array
[0] == c1
, EXIT_FAILURE
);
38 array_free_array(&array
);
42 DEFINE_TEST(test_array_append1
,
43 .description
= "test simple array append");
46 static int test_array_append2(const struct test
*t
)
49 const char *c1
= "test1";
50 const char *c2
= "test2";
51 const char *c3
= "test3";
53 array_init(&array
, 2);
54 array_append(&array
, c1
);
55 array_append(&array
, c2
);
56 array_append(&array
, c3
);
57 assert_return(array
.count
== 3, EXIT_FAILURE
);
58 assert_return(array
.array
[0] == c1
, EXIT_FAILURE
);
59 assert_return(array
.array
[1] == c2
, EXIT_FAILURE
);
60 assert_return(array
.array
[2] == c3
, EXIT_FAILURE
);
61 array_free_array(&array
);
65 DEFINE_TEST(test_array_append2
,
66 .description
= "test array append over step");
68 static int test_array_append_unique(const struct test
*t
)
71 const char *c1
= "test1";
72 const char *c2
= "test2";
73 const char *c3
= "test3";
75 array_init(&array
, 2);
76 array_append_unique(&array
, c1
);
77 array_append_unique(&array
, c2
);
78 array_append_unique(&array
, c3
);
79 array_append_unique(&array
, c3
);
80 array_append_unique(&array
, c2
);
81 array_append_unique(&array
, c1
);
82 assert_return(array
.count
== 3, EXIT_FAILURE
);
83 assert_return(array
.array
[0] == c1
, EXIT_FAILURE
);
84 assert_return(array
.array
[1] == c2
, EXIT_FAILURE
);
85 assert_return(array
.array
[2] == c3
, EXIT_FAILURE
);
86 array_free_array(&array
);
90 DEFINE_TEST(test_array_append_unique
,
91 .description
= "test array append unique");
93 static int test_array_sort(const struct test
*t
)
96 const char *c1
= "test1";
97 const char *c2
= "test2";
98 const char *c3
= "test3";
100 array_init(&array
, 2);
101 array_append(&array
, c1
);
102 array_append(&array
, c2
);
103 array_append(&array
, c3
);
104 array_append(&array
, c2
);
105 array_append(&array
, c3
);
106 array_append(&array
, c1
);
107 array_sort(&array
, (int (*)(const void *a
, const void *b
)) strcmp
);
108 assert_return(array
.count
== 6, EXIT_FAILURE
);
109 assert_return(array
.array
[0] == c1
, EXIT_FAILURE
);
110 assert_return(array
.array
[1] == c1
, EXIT_FAILURE
);
111 assert_return(array
.array
[2] == c2
, EXIT_FAILURE
);
112 assert_return(array
.array
[3] == c2
, EXIT_FAILURE
);
113 assert_return(array
.array
[4] == c3
, EXIT_FAILURE
);
114 assert_return(array
.array
[5] == c3
, EXIT_FAILURE
);
115 array_free_array(&array
);
119 DEFINE_TEST(test_array_sort
,
120 .description
= "test array sort");
122 static int test_array_remove_at(const struct test
*t
)
125 const char *c1
= "test1";
126 const char *c2
= "test2";
127 const char *c3
= "test3";
129 array_init(&array
, 2);
130 array_append(&array
, c1
);
131 array_append(&array
, c2
);
132 array_append(&array
, c3
);
134 array_remove_at(&array
, 2);
135 assert_return(array
.count
== 2, EXIT_FAILURE
);
136 assert_return(array
.array
[0] == c1
, EXIT_FAILURE
);
137 assert_return(array
.array
[1] == c2
, EXIT_FAILURE
);
139 array_remove_at(&array
, 0);
140 assert_return(array
.count
== 1, EXIT_FAILURE
);
141 assert_return(array
.array
[0] == c2
, EXIT_FAILURE
);
143 array_remove_at(&array
, 0);
144 assert_return(array
.count
== 0, EXIT_FAILURE
);
146 array_append(&array
, c1
);
147 array_append(&array
, c2
);
148 array_append(&array
, c3
);
150 array_remove_at(&array
, 1);
151 assert_return(array
.count
== 2, EXIT_FAILURE
);
152 assert_return(array
.array
[0] == c1
, EXIT_FAILURE
);
153 assert_return(array
.array
[1] == c3
, EXIT_FAILURE
);
155 array_free_array(&array
);
159 DEFINE_TEST(test_array_remove_at
,
160 .description
= "test array remove at");
162 static int test_array_pop(const struct test
*t
)
165 const char *c1
= "test1";
166 const char *c2
= "test2";
167 const char *c3
= "test3";
169 array_init(&array
, 2);
170 array_append(&array
, c1
);
171 array_append(&array
, c2
);
172 array_append(&array
, c3
);
177 assert_return(array
.count
== 2, EXIT_FAILURE
);
178 assert_return(array
.array
[0] == c1
, EXIT_FAILURE
);
179 assert_return(array
.array
[1] == c2
, EXIT_FAILURE
);
184 assert_return(array
.count
== 0, EXIT_FAILURE
);
186 array_free_array(&array
);
191 DEFINE_TEST(test_array_pop
,
192 .description
= "test array pop");