6 /* This test is just to be used with valgrind */
10 gchar **array = g_new (gchar *, 4);
11 array [0] = g_strdup ("one");
12 array [1] = g_strdup ("two");
13 array [2] = g_strdup ("three");
25 gchar *x = g_strconcat ("Hello", ", ", "world", NULL);
26 if (strcmp (x, "Hello, world") != 0)
27 return FAILED("concat failed, got: %s", x);
35 const gchar *to_split = "Hello world, how are we doing today?";
39 v= g_strsplit(to_split, " ", 0);
42 return FAILED("split failed, got NULL vector (1)");
45 for(i = 0; v[i] != NULL; i++);
47 return FAILED("split failed, expected 7 tokens, got %d", i);
52 v = g_strsplit(to_split, ":", -1);
54 return FAILED("split failed, got NULL vector (2)");
57 for(i = 0; v[i] != NULL; i++);
59 return FAILED("split failed, expected 1 token, got %d", i);
62 if(strcmp(v[0], to_split) != 0) {
63 return FAILED("expected vector[0] to be '%s' but it was '%s'",
68 v = g_strsplit ("", ":", 0);
70 return FAILED ("g_strsplit returned NULL");
78 gchar *a = g_strdup ("onetwothree");
79 gchar *a_target = "eerhtowteno";
80 gchar *b = g_strdup ("onetwothre");
81 gchar *b_target = "erhtowteno";
84 if (strcmp (a, a_target)) {
87 return FAILED("strreverse failed. Expecting: '%s' and got '%s'\n", a, a_target);
91 if (strcmp (b, b_target)) {
94 return FAILED("strreverse failed. Expecting: '%s' and got '%s'\n", b, b_target);
106 s = g_strjoin (NULL, "a", "b", NULL);
107 if (strcmp (s, "ab") != 0)
108 return FAILED ("Join of two strings with no separator fails");
111 s = g_strjoin ("", "a", "b", NULL);
112 if (strcmp (s, "ab") != 0)
113 return FAILED ("Join of two strings with empty separator fails");
116 s = g_strjoin ("-", "a", "b", NULL);
117 if (strcmp (s, "a-b") != 0)
118 return FAILED ("Join of two strings with separator fails");
121 s = g_strjoin ("-", "aaaa", "bbbb", "cccc", "dddd", NULL);
122 if (strcmp (s, "aaaa-bbbb-cccc-dddd") != 0)
123 return FAILED ("Join of multiple strings fails");
126 s = g_strjoin ("-", NULL);
127 if (s == NULL || (strcmp (s, "") != 0))
128 return FAILED ("Failed to join empty arguments");
137 char *str = g_strdup (" \t\n hola");
140 if (strcmp ("hola", str)) {
141 fprintf (stderr, "%s\n", str);
143 return FAILED ("Failed.");
152 char *str = g_strdup ("hola \t");
155 if (strcmp ("hola", str)) {
156 fprintf (stderr, "%s\n", str);
158 return FAILED ("Failed.");
167 char *str = g_strdup (" \t hola ");
170 if (strcmp ("hola", str)) {
171 fprintf (stderr, "%s\n", str);
173 return FAILED ("Failed.");
179 #define urit(so,j) do { s = g_filename_to_uri (so, NULL, NULL); if (strcmp (s, j) != 0) return FAILED("Got %s expected %s", s, j); g_free (s); } while (0);
181 #define errit(so) do { s = g_filename_to_uri (so, NULL, NULL); if (s != NULL) return FAILED ("got %s, expected NULL", s); } while (0);
184 test_filename_to_uri ()
188 urit ("/a", "file:///a");
189 urit ("/home/miguel", "file:///home/miguel");
190 urit ("/home/mig uel", "file:///home/mig%20uel");
191 urit ("/\303\241", "file:///%C3%A1");
192 urit ("/\303\241/octal", "file:///%C3%A1/octal");
193 urit ("/%", "file:///%25");
194 urit ("/\001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037\040", "file:///%01%02%03%04%05%06%07%08%09%0A%0B%0C%0D%0E%0F%10%11%12%13%14%15%16%17%18%19%1A%1B%1C%1D%1E%1F%20");
195 urit ("/!$&'()*+,-./", "file:///!$&'()*+,-./");
196 urit ("/\042\043\045", "file:///%22%23%25");
197 urit ("/0123456789:=", "file:///0123456789:=");
198 urit ("/\073\074\076\077", "file:///%3B%3C%3E%3F");
199 urit ("/\133\134\135\136_\140\173\174\175", "file:///%5B%5C%5D%5E_%60%7B%7C%7D");
200 urit ("/\173\174\175\176\177\200", "file:///%7B%7C%7D~%7F%80");
201 urit ("/@ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz", "file:///@ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz");
208 #define fileit(so,j) do { s = g_filename_from_uri (so, NULL, NULL); if (strcmp (s, j) != 0) return FAILED("Got %s expected %s", s, j); g_free (s); } while (0);
210 #define ferrit(so) do { s = g_filename_from_uri (so, NULL, NULL); if (s != NULL) return FAILED ("got %s, expected NULL", s); } while (0);
213 test_filename_from_uri ()
217 fileit ("file:///a", "/a");
218 fileit ("file:///%41", "/A");
219 fileit ("file:///home/miguel", "/home/miguel");
220 fileit ("file:///home/mig%20uel", "/home/mig uel");
225 ferrit ("file:///%");
226 ferrit ("file:///%0");
227 ferrit ("file:///%jj");
233 test_ascii_xdigit_value ()
237 i = g_ascii_xdigit_value ('9' + 1);
239 return FAILED ("'9' + 1");
240 i = g_ascii_xdigit_value ('0' - 1);
242 return FAILED ("'0' - 1");
243 i = g_ascii_xdigit_value ('a' - 1);
245 return FAILED ("'a' - 1");
246 i = g_ascii_xdigit_value ('f' + 1);
248 return FAILED ("'f' + 1");
249 i = g_ascii_xdigit_value ('A' - 1);
251 return FAILED ("'A' - 1");
252 i = g_ascii_xdigit_value ('F' + 1);
254 return FAILED ("'F' + 1");
256 for (i = '0'; i < '9'; i++) {
257 int c = g_ascii_xdigit_value (i);
259 return FAILED ("Digits %c -> %d", i, c);
261 for (i = 'a'; i < 'f'; i++) {
262 int c = g_ascii_xdigit_value (i);
263 if (c != (i - 'a' + 10))
264 return FAILED ("Lower %c -> %d", i, c);
266 for (i = 'A'; i < 'F'; i++) {
267 int c = g_ascii_xdigit_value (i);
268 if (c != (i - 'A' + 10))
269 return FAILED ("Upper %c -> %d", i, c);
279 str = g_strdup (G_STR_DELIMITERS);
280 str = g_strdelimit (str, NULL, 'a');
281 if (0 != strcmp ("aaaaaaa", str))
282 return FAILED ("All delimiters: '%s'", str);
284 str = g_strdup ("hola");
285 str = g_strdelimit (str, "ha", '+');
286 if (0 != strcmp ("+ol+", str))
287 return FAILED ("2 delimiters: '%s'", str);
295 const gchar *src = "onetwothree";
299 dest = g_malloc (strlen (src) + 1);
300 memset (dest, 0, strlen (src) + 1);
301 i = g_strlcpy (dest, src, -1);
302 if (i != strlen (src))
303 return FAILED ("Test1 got %d", i);
305 if (0 != strcmp (dest, src))
306 return FAILED ("Src and dest not equal");
308 i = g_strlcpy (dest, src, 3);
309 if (i != strlen (src))
310 return FAILED ("Test1 got %d", i);
311 if (0 != strcmp (dest, "on"))
312 return FAILED ("Test2");
314 i = g_strlcpy (dest, src, 1);
315 if (i != strlen (src))
316 return FAILED ("Test3 got %d", i);
318 return FAILED ("Test4");
320 i = g_strlcpy (dest, src, 12345);
321 if (i != strlen (src))
322 return FAILED ("Test4 got %d", i);
323 if (0 != strcmp (dest, src))
324 return FAILED ("Src and dest not equal 2");
334 str = g_strescape ("abc", NULL);
335 if (strcmp ("abc", str))
336 return FAILED ("#1");
337 str = g_strescape ("\t\b\f\n\r\\\"abc", NULL);
338 if (strcmp ("\\t\\b\\f\\n\\r\\\\\\\"abc", str))
339 return FAILED ("#2 %s", str);
340 str = g_strescape ("\001abc", NULL);
341 if (strcmp ("\\001abc", str))
342 return FAILED ("#3 %s", str);
343 str = g_strescape ("\001abc", "\001");
344 if (strcmp ("\001abc", str))
345 return FAILED ("#3 %s", str);
350 test_ascii_strncasecmp ()
354 n = g_ascii_strncasecmp ("123", "123", 1);
356 return FAILED ("Should have been 0");
358 n = g_ascii_strncasecmp ("423", "123", 1);
360 return FAILED ("Should have been 3, got %d", n);
362 n = g_ascii_strncasecmp ("123", "423", 1);
364 return FAILED ("Should have been -3, got %d", n);
366 n = g_ascii_strncasecmp ("1", "1", 10);
368 return FAILED ("Should have been 0, got %d", n);
372 static Test strutil_tests [] = {
373 {"g_strfreev", test_strfreev},
374 {"g_strconcat", test_concat},
375 {"g_strsplit", test_split},
376 {"g_strreverse", test_strreverse},
377 {"g_strjoin", test_strjoin},
378 {"g_strchug", test_strchug},
379 {"g_strchomp", test_strchomp},
380 {"g_strstrip", test_strstrip},
381 {"g_filename_to_uri", test_filename_to_uri},
382 {"g_filename_from_uri", test_filename_from_uri},
383 {"g_ascii_xdigit_value", test_ascii_xdigit_value},
384 {"g_strdelimit", test_strdelimit},
385 {"g_strlcpy", test_strlcpy},
386 {"g_strescape", test_strescape},
387 {"g_ascii_strncasecmp", test_ascii_strncasecmp },
391 DEFINE_TEST_GROUP_INIT(strutil_tests_init, strutil_tests)