fix size of returned array in str_split, doc clarification incoming
[framework/uifw/eina.git] / src / tests / eina_test_str.c
1 /* EINA - EFL data type library
2  * Copyright (C) 2010 Gustavo Sverzut Barbieri
3  *
4  * This library 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.
8  *
9  * This library 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.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with this library;
16  * if not, see <http://www.gnu.org/licenses/>.
17  */
18
19 #ifdef HAVE_CONFIG_H
20 # include "config.h"
21 #endif
22
23 #include <stdio.h>
24
25 #include "eina_suite.h"
26 #include "Eina.h"
27
28    START_TEST(str_simple)
29 {
30    eina_init();
31
32    fail_if(!eina_str_has_prefix("", ""));
33
34    fail_if(!eina_str_has_prefix("x", "x"));
35    fail_if(!eina_str_has_prefix("xab", "x"));
36    fail_if(!eina_str_has_prefix("xab", "xab"));
37
38    fail_if(eina_str_has_prefix("x", "xab"));
39    fail_if(eina_str_has_prefix("xab", "xyz"));
40    fail_if(eina_str_has_prefix("", "x"));
41    fail_if(eina_str_has_prefix("X", "x"));
42    fail_if(eina_str_has_prefix("xAb", "X"));
43    fail_if(eina_str_has_prefix("xAb", "xab"));
44
45
46    fail_if(!eina_str_has_suffix("", ""));
47
48    fail_if(!eina_str_has_suffix("x", "x"));
49    fail_if(!eina_str_has_suffix("abx", "x"));
50    fail_if(!eina_str_has_suffix("xab", "xab"));
51
52    fail_if(eina_str_has_suffix("x", "xab"));
53    fail_if(eina_str_has_suffix("xab", "xyz"));
54    fail_if(eina_str_has_suffix("", "x"));
55    fail_if(eina_str_has_suffix("X", "x"));
56    fail_if(eina_str_has_suffix("aBx", "X"));
57    fail_if(eina_str_has_suffix("xaB", "Xab"));
58
59
60    fail_if(!eina_str_has_extension("", ""));
61
62    fail_if(!eina_str_has_extension("x", "x"));
63    fail_if(!eina_str_has_extension("abx", "x"));
64    fail_if(!eina_str_has_extension("xab", "xab"));
65    fail_if(!eina_str_has_extension("x", "X"));
66    fail_if(!eina_str_has_extension("abx", "X"));
67    fail_if(!eina_str_has_extension("xab", "Xab"));
68    fail_if(!eina_str_has_extension("X", "X"));
69    fail_if(!eina_str_has_extension("aBx", "X"));
70    fail_if(!eina_str_has_extension("xaB", "Xab"));
71
72    fail_if(eina_str_has_extension("x", "xab"));
73    fail_if(eina_str_has_extension("xab", "xyz"));
74    fail_if(eina_str_has_extension("", "x"));
75    fail_if(eina_str_has_extension("x", "xAb"));
76    fail_if(eina_str_has_extension("xab", "xYz"));
77    fail_if(eina_str_has_extension("", "x"));
78
79    fail_if(eina_strlen_bounded("abc", 1024) != strlen("abc"));
80    fail_if(eina_strlen_bounded("abc", 2) != (size_t)-1);
81
82    eina_shutdown();
83 }
84 END_TEST
85
86 START_TEST(str_split)
87 {
88    char **result;
89    unsigned int elements;
90
91    eina_init();
92
93    result = eina_str_split_full("nomatch", "", -1, &elements);
94         fail_if(result != NULL);
95         fail_if(elements != 0);
96
97    result = eina_str_split_full("nomatch", "x", -1, &elements);
98         fail_if(result == NULL);
99         fail_if(elements != 1);
100         fail_if(strcmp(result[0], "nomatch") != 0);
101         fail_if(result[1]);
102         free(result[0]);
103         free(result);
104
105    result = eina_str_split_full("nomatch", "xyz", -1, &elements);
106         fail_if(result == NULL);
107         fail_if(elements != 1);
108         fail_if(strcmp(result[0], "nomatch") != 0);
109         fail_if(result[1]);
110         free(result[0]);
111         free(result);
112
113    result = eina_str_split_full("match:match:match", ":", -1, &elements);
114         fail_if(result == NULL);
115         fail_if(elements != 3);
116    for (elements = 0; elements < 3 - 1; elements++)
117      fail_if(strcmp(result[elements], "match") != 0);
118      fail_if(result[3]);
119         free(result[0]);
120         free(result);
121
122    result = eina_str_split_full("a:b:c", ":", -1, &elements);
123         fail_if(result == NULL);
124         fail_if(elements != 3);
125         fail_if(strcmp(result[0], "a") != 0);
126         fail_if(strcmp(result[1], "b") != 0);
127         fail_if(strcmp(result[2], "c") != 0);
128         fail_if(result[3]);
129         free(result[0]);
130         free(result);
131
132    result = eina_str_split_full("a:b:", ":", -1, &elements);
133         fail_if(result == NULL);
134         fail_if(elements != 3);
135         fail_if(strcmp(result[0], "a") != 0);
136         fail_if(strcmp(result[1], "b") != 0);
137         fail_if(strcmp(result[2], "") != 0);
138         fail_if(result[3]);
139         free(result[0]);
140         free(result);
141
142    result = eina_str_split_full(":b:c", ":", -1, &elements);
143         fail_if(result == NULL);
144         fail_if(elements != 3);
145         fail_if(strcmp(result[0], "") != 0);
146         fail_if(strcmp(result[1], "b") != 0);
147         fail_if(strcmp(result[2], "c") != 0);
148         fail_if(result[3]);
149         free(result[0]);
150         free(result);
151
152    result = eina_str_split_full(":", ":", -1, &elements);
153         fail_if(result == NULL);
154         fail_if(elements != 2);
155         fail_if(strcmp(result[0], "") != 0);
156         fail_if(strcmp(result[1], "") != 0);
157         fail_if(result[2]);
158         free(result[0]);
159         free(result);
160
161    result = eina_str_split_full("a", "!!!!!!!!!", -1, &elements);
162         fail_if(result == NULL);
163         fail_if(elements != 1);
164         fail_if(strcmp(result[0], "a") != 0);
165         fail_if(result[1]);
166         free(result[0]);
167         free(result);
168
169    result = eina_str_split_full("aaba", "ab", -1, &elements);
170         fail_if(result == NULL);
171         fail_if(elements != 2);
172         fail_if(strcmp(result[0], "a") != 0);
173         fail_if(strcmp(result[1], "a") != 0);
174         fail_if(result[2]);
175         free(result[0]);
176         free(result);
177
178         eina_shutdown();
179 }
180 END_TEST
181
182 void
183 eina_test_str(TCase *tc)
184 {
185    tcase_add_test(tc, str_simple);
186    tcase_add_test(tc, str_split);
187 }