jeyzu pushed a commit to branch master.

commit 22220ca70ad3d06d4614633806ea64fb47f8f415
Author: Jérémy Zurcher <[email protected]>
Date:   Wed Jun 12 23:31:04 2013 +0200

    improve eina_str coverage
    
    my time killer, what a sad life ;))
---
 src/tests/eina/eina_test_str.c | 166 ++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 165 insertions(+), 1 deletion(-)

diff --git a/src/tests/eina/eina_test_str.c b/src/tests/eina/eina_test_str.c
index 7fefc26..b4c3660 100644
--- a/src/tests/eina/eina_test_str.c
+++ b/src/tests/eina/eina_test_str.c
@@ -27,6 +27,10 @@
 
    START_TEST(str_simple)
 {
+   size_t i;
+   char *str, *ret;
+   const char *escape_ret = "\\ a\\\\x\\'";
+
    eina_init();
 
    fail_if(!eina_str_has_prefix("", ""));
@@ -79,6 +83,23 @@
    fail_if(eina_strlen_bounded("abc", 1024) != strlen("abc"));
    fail_if(eina_strlen_bounded("abc", 2) != (size_t)-1);
 
+   str = malloc(sizeof(char) * 4);
+   strcpy(str, "bSd");
+   eina_str_tolower(&str);
+   fail_if(strcmp(str, "bsd") != 0);
+   eina_str_toupper(&str);
+   fail_if(strcmp(str, "BSD") != 0);
+   free(str);
+
+   str = malloc(sizeof(char) * 8);
+   strcpy(str, " a\\x'");
+   ret = eina_str_escape(str);
+   fail_if(strlen(ret) != strlen(escape_ret));
+   for (i = 0; i <= strlen(ret); i++)
+     fail_if(ret[i] != escape_ret[i]);
+   free(str);
+   free(ret);
+
    eina_shutdown();
 }
 END_TEST
@@ -87,9 +108,34 @@ START_TEST(str_split)
 {
    char **result;
    unsigned int elements;
+   char *str;
 
    eina_init();
 
+   result = eina_str_split_full(NULL, ":", 1, &elements);
+        fail_if(result != NULL);
+        fail_if(elements != 0);
+
+   result = eina_str_split_full("nomatch", NULL, 1, &elements);
+        fail_if(result != NULL);
+        fail_if(elements != 0);
+
+   result = eina_str_split_full("match:match", ":", 1, &elements);
+        fail_if(result == NULL);
+        fail_if(elements != 1);
+        fail_if(strcmp(result[0], "match:match") != 0);
+        free(result[0]);
+        free(result);
+
+   result = eina_str_split_full("match:match:nomatch:nomatch", ":", 3, 
&elements);
+        fail_if(result == NULL);
+        fail_if(elements != 3);
+        fail_if(strcmp(result[0], "match") != 0);
+        fail_if(strcmp(result[1], "match") != 0);
+        fail_if(strcmp(result[2], "nomatch:nomatch") != 0);
+        free(result[0]);
+        free(result);
+
    result = eina_str_split_full("nomatch", "", -1, &elements);
         fail_if(result != NULL);
         fail_if(elements != 0);
@@ -119,6 +165,17 @@ START_TEST(str_split)
         free(result[0]);
         free(result);
 
+   str = malloc(sizeof(char) * 1024);
+   for (elements = 0; elements < 300; elements++)
+     strcat(str, "ma:");
+   strcat(str, "ma");
+   result = eina_str_split_full(str, ":", -1, &elements);
+        fail_if(result == NULL);
+        fail_if(elements != 301);
+        free(result[0]);
+        free(result);
+   free(str);
+
    result = eina_str_split_full("a:b:c", ":", -1, &elements);
         fail_if(result == NULL);
         fail_if(elements != 3);
@@ -175,13 +232,120 @@ START_TEST(str_split)
         free(result[0]);
         free(result);
 
-        eina_shutdown();
+   eina_shutdown();
+}
+END_TEST
+
+START_TEST(str_lcat_lcpy)
+{
+   char dst[9];
+   size_t ret;
+   size_t ds = (sizeof(dst) / sizeof(char));
+
+   eina_init();
+
+   dst[0] = '\0';
+
+   ret = eina_strlcat(dst, "cat1", ds);
+        fail_if(ret != 4);
+        fail_if(strcmp(dst, "cat1") != 0);
+
+   ret = eina_strlcat(dst, NULL, ds);
+        fail_if(ret != 4);
+        fail_if(strcmp(dst, "cat1") != 0);
+
+   ret = eina_strlcat(dst, "cat234", ds);
+        fail_if(ret != (ds - 1 + 2));
+        fail_if(strcmp(dst, "cat1cat2") != 0);
+
+   ret = eina_strlcat(dst, "cat3", ds);
+        fail_if(ret != (ds - 1 + 4));
+        fail_if(strcmp(dst, "cat1cat2") != 0);
+
+   ret = eina_strlcat(dst, "cat3", ds - 1);
+        fail_if(ret != (ds - 1 + 4));
+        fail_if(strcmp(dst, "cat1cat2") != 0);
+
+   ret = eina_strlcpy(dst, "copycopy", ds);
+        fail_if(ret != 8);
+        fail_if(strcmp(dst, "copycopy") != 0);
+
+   ret = eina_strlcpy(dst, "copy2copy2", ds);
+        fail_if(ret != 10);
+        fail_if(strcmp(dst, "copy2cop") != 0);
+
+   eina_shutdown();
 }
 END_TEST
 
+START_TEST(str_join_len)
+{
+   char dst[9];
+   size_t ret;
+   size_t ds = (sizeof(dst) / sizeof(char));
+
+   eina_init();
+
+   dst[0] = '\0';
+
+   ret = eina_str_join_len(dst, ds, '#', "ab", 2, "cde", 3);
+        fail_if(ret != 6);
+        fail_if(strcmp(dst, "ab#cde") != 0);
+
+   ret = eina_str_join_len(dst, ds, '#', "abcdefghi", 9, "cde", 3);
+        fail_if(ret != 13);
+        fail_if(strcmp(dst, "abcdefgh") != 0);
+
+   ret = eina_str_join_len(dst, ds, '#', "abcdefgh", 8, "cde", 3);
+        fail_if(ret != 12);
+        fail_if(strcmp(dst, "abcdefgh") != 0);
+
+   ret = eina_str_join_len(dst, ds, '#', "abcd", 4, "efgh", 4);
+        fail_if(ret != 9);
+        fail_if(strcmp(dst, "abcd#efg") != 0);
+
+   eina_shutdown();
+}
+END_TEST
+
+#ifdef HAVE_ICONV
+START_TEST(str_convert)
+{
+   char *utf8 = 
"\xc3\xa9\xc3\xa1\xc3\xba\xc3\xad\xc3\xa8\xc3\xa0\xc3\xb9\xc3\xac\xc3\xab\xc3\xa4\xc3\xbc\xc3\xaf";
+   char *utf16 = 
"\xe9\x0\xe1\x0\xfa\x0\xed\x0\xe8\x0\xe0\x0\xf9\x0\xec\x0\xeb\x0\xe4\x0\xfc\x0\xef\x0";
+   char *ret;
+   unsigned long ret_sz;
+   int i;
+
+   eina_init();
+
+   ret = eina_str_convert("UTF-8", "UTF-16LE", utf8);
+        fail_if(ret == NULL);
+        for( i=0; i<24; i++)
+          fail_if(ret[i] != utf16[i]);
+
+   free(ret);
+
+   ret = eina_str_convert_len("UTF-8", "UTF-16LE", utf8, 24, &ret_sz);
+        fail_if(ret == NULL);
+        fail_if(ret_sz != 24);
+        for( i=0; i<24; i++)
+          fail_if(ret[i] != utf16[i]);
+   free(ret);
+
+   eina_shutdown();
+}
+END_TEST
+#endif
+
 void
 eina_test_str(TCase *tc)
 {
    tcase_add_test(tc, str_simple);
    tcase_add_test(tc, str_split);
+   tcase_add_test(tc, str_lcat_lcpy);
+   tcase_add_test(tc, str_join_len);
+#ifdef HAVE_ICONV
+   tcase_add_test(tc, str_convert);
+#endif
 }

-- 

------------------------------------------------------------------------------
This SF.net email is sponsored by Windows:

Build for Windows Store.

http://p.sf.net/sfu/windows-dev2dev

Reply via email to