X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=blobdiff_plain;f=test%2Ftest_xml_include.c;h=aec8308f0a2f4d6104df1bebff2a291dde9a5e96;hp=10596cc8521da11632e50ef6a6dc73062ccdd211;hb=fcc2b1bffbd6dd86fc8f95f1e2e6e8b2a94e731e;hpb=d0e351c12fff564d876958e860338d43716dc269 diff --git a/test/test_xml_include.c b/test/test_xml_include.c index 10596cc..aec8308 100644 --- a/test/test_xml_include.c +++ b/test/test_xml_include.c @@ -1,5 +1,5 @@ /* This file is part of the YAZ toolkit. - * Copyright (C) 1995-2010 Index Data + * Copyright (C) Index Data * See the file LICENSE for details. */ #if HAVE_CONFIG_H @@ -13,8 +13,9 @@ #include #include -static void tst_xml_include(void) +static void tst_xml_include1(void) { +#if YAZ_HAVE_XML2 const char *srcdir = getenv("srcdir"); xmlDocPtr doc; xmlNodePtr node; @@ -59,14 +60,100 @@ static void tst_xml_include(void) } } xmlFreeDoc(doc); +#endif +} + +static void tst_xml_include2(void) +{ +#if YAZ_HAVE_XML2 + const char *srcdir = getenv("srcdir"); + xmlDocPtr doc; + xmlNodePtr node; + const char *xml_in = ""; + + if (srcdir == 0) + srcdir = "."; + + doc = xmlParseMemory(xml_in, strlen(xml_in)); + YAZ_CHECK(doc); + if (!doc) + return; + node = xmlDocGetRootElement(doc); + YAZ_CHECK(node); + if (node) + { + int ret = yaz_xml_include_glob(node, srcdir, + YAZ_FILE_GLOB_FAIL_NOTEXIST); + YAZ_CHECK_EQ(ret, -1); + } + if (node) + { + int ret = yaz_xml_include_glob(node, srcdir, + 0); + YAZ_CHECK_EQ(ret, 0); + } + xmlFreeDoc(doc); +#endif +} + +static void tst_xml_include3(void) +{ +#if YAZ_HAVE_XML2 + const char *srcdir = getenv("srcdir"); + xmlDocPtr doc; + xmlNodePtr node; + const char *xml_in = ""; + + if (srcdir == 0) + srcdir = "."; + + doc = xmlParseMemory(xml_in, strlen(xml_in)); + YAZ_CHECK(doc); + if (!doc) + return; + node = xmlDocGetRootElement(doc); + YAZ_CHECK(node); + if (node) + { + const char *expect = + "\n" + "" + "\n"; + + xmlChar *xml_out; + int len_out; + int ret = yaz_xml_include_simple(node, srcdir); + YAZ_CHECK(ret == 0); + xmlDocDumpMemory(doc, &xml_out, &len_out); + YAZ_CHECK(xml_out && len_out > 0); + if (xml_out && len_out > 0) + { + YAZ_CHECK(strlen(expect) == len_out); + if (strlen(expect) == len_out) + { + YAZ_CHECK(memcmp(expect, xml_out, len_out) == 0); + } + else + { + fwrite(xml_out, 1, len_out, stdout); + fflush(stdout); + } + xmlFree(xml_out); + } + } + xmlFreeDoc(doc); +#endif } + int main (int argc, char **argv) { YAZ_CHECK_INIT(argc, argv); YAZ_CHECK_LOG(); - tst_xml_include(); + tst_xml_include1(); + tst_xml_include2(); + tst_xml_include3(); YAZ_CHECK_TERM; }