Happy new year
[yaz-moved-to-github.git] / test / test_nmem.c
index 027b823..a9d1363 100644 (file)
@@ -1,5 +1,5 @@
 /* This file is part of the YAZ toolkit.
- * Copyright (C) 1995-2011 Index Data
+ * Copyright (C) 1995-2012 Index Data
  * See the file LICENSE for details.
  */
 
@@ -72,8 +72,16 @@ void tst_nmem_strsplit(void)
     YAZ_CHECK(num > 0 && !strcmp(array[0], "a"));
     YAZ_CHECK(num > 1 && !strcmp(array[1], "b"));
     YAZ_CHECK(num > 2 && !strcmp(array[2], "cd"));
+
     nmem_strsplitx(nmem, ",", ",a,b,,cd", &array, &num, 0);
+    YAZ_CHECK(num == 5);
+    YAZ_CHECK(num > 0 && !strcmp(array[0], ""));
+    YAZ_CHECK(num > 1 && !strcmp(array[1], "a"));
+    YAZ_CHECK(num > 2 && !strcmp(array[2], "b"));
+    YAZ_CHECK(num > 3 && !strcmp(array[3], ""));
+    YAZ_CHECK(num > 4 && !strcmp(array[4], "cd"));
 
+    nmem_strsplit_escape(nmem, ",", ",a,b,,cd", &array, &num, 0, '\\');
     YAZ_CHECK(num == 5);
     YAZ_CHECK(num > 0 && !strcmp(array[0], ""));
     YAZ_CHECK(num > 1 && !strcmp(array[1], "a"));
@@ -81,12 +89,39 @@ void tst_nmem_strsplit(void)
     YAZ_CHECK(num > 3 && !strcmp(array[3], ""));
     YAZ_CHECK(num > 4 && !strcmp(array[4], "cd"));
 
+    nmem_strsplit_escape(nmem, ",", ",a,b\\,,cd", &array, &num, 0, '\\');
+    YAZ_CHECK(num == 4);
+    YAZ_CHECK(num > 0 && !strcmp(array[0], ""));
+    YAZ_CHECK(num > 1 && !strcmp(array[1], "a"));
+    YAZ_CHECK(num > 2 && !strcmp(array[2], "b,"));
+    YAZ_CHECK(num > 3 && !strcmp(array[3], "cd"));
+
+    nmem_strsplit_escape(nmem, ",", "\\,a,b\\,,c\\d", &array, &num, 0, '\\');
+    YAZ_CHECK(num == 3);
+    YAZ_CHECK(num > 0 && !strcmp(array[0], ",a"));
+    YAZ_CHECK(num > 1 && !strcmp(array[1], "b,"));
+    YAZ_CHECK(num > 2 && !strcmp(array[2], "cd"));
+
+    nmem_strsplit_escape2(nmem, ",", "\\,a,b\\,\\,c\\\\\\|d",
+                          &array, &num, 0, '\\', 1);
+    YAZ_CHECK(num == 2);
+    YAZ_CHECK(num > 0 && !strcmp(array[0], ",a"));
+    YAZ_CHECK(num > 1 && !strcmp(array[1], "b,,c\\|d"));
+
+
+    nmem_strsplit_escape2(nmem, ",", "\\,a,b\\,\\,c\\\\\\|d",
+                          &array, &num, 0, '\\', 0);
+    YAZ_CHECK(num == 2);
+    YAZ_CHECK(num > 0 && !strcmp(array[0], "\\,a"));
+    YAZ_CHECK(num > 1 && !strcmp(array[1], "b\\,\\,c\\\\\\|d"));
+
     nmem_destroy(nmem);
 }
 
 int main (int argc, char **argv)
 {
     YAZ_CHECK_INIT(argc, argv);
+    YAZ_CHECK_LOG();
     tst_nmem_malloc();
     tst_nmem_strsplit();
     YAZ_CHECK_TERM;