2 * Copyright (C) 2016 J. Ali Harlow <ali@juiblex.co.uk>
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (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
12 * GNU General Public License for more details.
14 * You should have received a copy of the GNU General Public License along
15 * with this program; if not, write to the Free Software Foundation, Inc.,
16 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
22 #include <plover/plover.h>
24 static void test_empty(void)
26 struct plover_vector *vector;
28 vector=plover_vector_new();
30 display=plover_vector_format_for_display(vector);
31 g_assert_cmpstr(display,==,"none");
33 plover_vector_free(vector);
36 static void test_single(void)
38 struct plover_vector *vector;
40 vector=plover_vector_new();
42 plover_vector_append(vector,"single");
43 display=plover_vector_format_for_display(vector);
44 g_assert_cmpstr(display,==,"single");
46 plover_vector_free(vector);
49 static void test_pair(void)
51 struct plover_vector *vector;
53 vector=plover_vector_new();
55 plover_vector_append(vector,"one");
56 plover_vector_append(vector,"two");
57 display=plover_vector_format_for_display(vector);
58 g_assert_cmpstr(display,==,"one and two");
60 plover_vector_free(vector);
63 static void test_triple(void)
65 struct plover_vector *vector;
67 vector=plover_vector_new();
69 plover_vector_append(vector,"one");
70 plover_vector_append(vector,"two");
71 plover_vector_append(vector,"three");
72 display=plover_vector_format_for_display(vector);
73 g_assert_cmpstr(display,==,"one, two and three");
75 plover_vector_free(vector);
78 static void test_sort(void)
80 struct plover_vector *vector;
82 vector=plover_vector_new();
84 plover_vector_append(vector,"one");
85 plover_vector_append(vector,"two");
86 plover_vector_append(vector,"three");
87 plover_vector_sort(vector);
88 display=plover_vector_format_for_display(vector);
89 g_assert_cmpstr(display,==,"one, three and two");
91 plover_vector_free(vector);
94 static void test_dup(void)
96 struct plover_vector *vector,*vector2;
98 vector=plover_vector_new();
100 plover_vector_append(vector,"one");
101 plover_vector_append(vector,"two");
102 plover_vector_append(vector,"three");
103 vector2=plover_vector_dup(vector);
104 plover_vector_sort(vector2);
105 display=plover_vector_format_for_display(vector);
106 g_assert_cmpstr(display,==,"one, two and three");
108 display=plover_vector_format_for_display(vector2);
109 g_assert_cmpstr(display,==,"one, three and two");
111 plover_vector_free(vector);
112 plover_vector_free(vector2);
115 static void test_contains(void)
117 struct plover_vector *vector;
118 vector=plover_vector_new();
120 plover_vector_append(vector,"one");
121 plover_vector_append(vector,"two");
122 plover_vector_append(vector,"three");
123 g_assert(plover_vector_contains(vector,"one"));
124 g_assert(plover_vector_contains(vector,"two"));
125 g_assert(plover_vector_contains(vector,"three"));
126 g_assert(!plover_vector_contains(vector,"four"));
127 plover_vector_free(vector);
130 static void test_long(void)
133 struct plover_vector *vector;
134 char letter[2],*display;
135 vector=plover_vector_new();
141 plover_vector_append(vector,letter);
143 display=plover_vector_format_for_display(vector);
144 g_assert_cmpstr(display,==,"a, b, c, d, e, f, g, h, i, j, k, l, "
145 "m, n, o, p, q, r, s, t, u, v, w, x, y and z");
147 plover_vector_free(vector);
150 int main(int argc,char **argv)
153 g_test_init(&argc,&argv,NULL);
154 g_test_bug_base("mailto:ali@juiblex.co.uk");
155 g_test_add_func("/vector/empty",test_empty);
156 g_test_add_func("/vector/single",test_single);
157 g_test_add_func("/vector/pair",test_pair);
158 g_test_add_func("/vector/triple",test_triple);
159 g_test_add_func("/vector/sort",test_sort);
160 g_test_add_func("/vector/dup",test_dup);
161 g_test_add_func("/vector/contains",test_contains);
162 g_test_add_func("/vector/long",test_long);