X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=blobdiff_plain;f=test%2Ftest_nmem.c;h=5eaab6058c8ffcba717489c2fe90153039f952b9;hp=cd471927f7bf2e76a19dec71c7a8801a95591e27;hb=800e0637cfe783fa9966e11712b7e20023ba2245;hpb=43a9d38d20c1b1bcd1a03b2445a501d27526bd35 diff --git a/test/test_nmem.c b/test/test_nmem.c index cd47192..5eaab60 100644 --- a/test/test_nmem.c +++ b/test/test_nmem.c @@ -1,5 +1,5 @@ /* This file is part of the YAZ toolkit. - * Copyright (C) 1995-2011 Index Data + * Copyright (C) Index Data * See the file LICENSE for details. */ @@ -10,12 +10,11 @@ #include #include #include -#include #include #include -void tst(void) +void tst_nmem_malloc(void) { NMEM n; int j; @@ -37,7 +36,7 @@ void tst(void) if ((int) sizeof(double) >= j) *(double*) cp = 12.2; } - + for (j = 2000; j<20000; j+= 2000) { cp = (char *) nmem_malloc(n, j); @@ -46,10 +45,85 @@ void tst(void) nmem_destroy(n); } +void tst_nmem_strsplit(void) +{ + NMEM nmem = nmem_create(); + int num = 0; + char **array = 0; + + nmem_strsplit(nmem, ",", "", &array, &num); + YAZ_CHECK(num == 0); + + nmem_strsplitx(nmem, ",", "", &array, &num, 0); + YAZ_CHECK(num == 1); + YAZ_CHECK(num > 0 && !strcmp(array[0], "")); + + nmem_strsplit(nmem, ",", ",,", &array, &num); + YAZ_CHECK(num == 0); + + nmem_strsplitx(nmem, ",", ",,", &array, &num, 0); + YAZ_CHECK(num == 3); + YAZ_CHECK(num > 0 && !strcmp(array[0], "")); + YAZ_CHECK(num > 1 && !strcmp(array[1], "")); + YAZ_CHECK(num > 2 && !strcmp(array[2], "")); + + nmem_strsplit(nmem, ",", ",a,b,,cd", &array, &num); + 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_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")); + 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 == 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); - tst(); + YAZ_CHECK_LOG(); + tst_nmem_malloc(); + tst_nmem_strsplit(); YAZ_CHECK_TERM; } /*