From d3a3f3ed2d1b77d048e4ba0c7befebaa4b7671b8 Mon Sep 17 00:00:00 2001 From: Adam Dickmeiss Date: Fri, 22 Jan 2010 23:02:08 +0100 Subject: [PATCH] Add test of XML Include --- test/.gitignore | 1 + test/Makefile.am | 5 +-- test/tst_xml_include.c | 78 ++++++++++++++++++++++++++++++++++++++++++++++ test/tst_xml_include.xml | 1 + 4 files changed, 83 insertions(+), 2 deletions(-) create mode 100644 test/tst_xml_include.c create mode 100644 test/tst_xml_include.xml diff --git a/test/.gitignore b/test/.gitignore index dabacdc..0ffa500 100644 --- a/test/.gitignore +++ b/test/.gitignore @@ -29,6 +29,7 @@ tst_icu_I18N tst_match_glob tst_rpn2cql tst_json +tst_xml_include nfatest1 nfaxmltest1 tst_oid diff --git a/test/Makefile.am b/test/Makefile.am index 459177c..e813f65 100644 --- a/test/Makefile.am +++ b/test/Makefile.am @@ -6,7 +6,7 @@ check_PROGRAMS = tstxmalloc tsticonv tstnmem tstmatchstr tstwrbuf tstodr \ tstsoap1 tstsoap2 tstodrstack tstlogthread tstxmlquery tstpquery \ tst_comstack tst_filepath tst_record_conv tst_retrieval tst_tpath \ tst_timing tst_query_charset tst_oid tst_icu_I18N tst_match_glob \ - tst_rpn2cql tst_json + tst_rpn2cql tst_json tst_xml_include check_SCRIPTS = tstmarc.sh tstmarccol.sh tstcql2xcql.sh tstcql2pqf.sh tsticu.sh @@ -31,7 +31,7 @@ EXTRA_DIST = tstodr.asn tstodrcodec.c tstodrcodec.h cql2xcqlsample \ marccol5.u8.marc marccol5.u8.1.lst marccol5.u8.2.lst \ tsticu-0.xml tsticu-0.input tsticu-0.output \ tsticu-1.xml tsticu-1.input tsticu-1.output \ - tst_record_conv.xsl + tst_record_conv.xsl tst_xml_include.xml YAZCOMP = ../util/yaz-asncomp YAZCOMPLINE = $(YAZCOMP) -d z.tcl -i yaz -I../include $(YCFLAGS) @@ -79,3 +79,4 @@ tst_icu_I18N_SOURCES = tst_icu_I18N.c tst_match_glob_SOURCES = tst_match_glob.c tst_rpn2cql_SOURCES = tst_rpn2cql.c tst_json_SOURCES = tst_json.c +tst_xml_include_SOURCES = tst_xml_include.c diff --git a/test/tst_xml_include.c b/test/tst_xml_include.c new file mode 100644 index 0000000..235cbbe --- /dev/null +++ b/test/tst_xml_include.c @@ -0,0 +1,78 @@ +/* This file is part of the YAZ toolkit. + * Copyright (C) 1995-2010 Index Data + * See the file LICENSE for details. + */ + +#include +#include +#include + +#include +#include + +static void tst_xml_include(void) +{ + 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" + "" + "some" + "\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); +} + + +int main (int argc, char **argv) +{ + YAZ_CHECK_INIT(argc, argv); + YAZ_CHECK_LOG(); + tst_xml_include(); + YAZ_CHECK_TERM; +} + +/* + * Local variables: + * c-basic-offset: 4 + * c-file-style: "Stroustrup" + * indent-tabs-mode: nil + * End: + * vim: shiftwidth=4 tabstop=8 expandtab + */ + diff --git a/test/tst_xml_include.xml b/test/tst_xml_include.xml new file mode 100644 index 0000000..da253be --- /dev/null +++ b/test/tst_xml_include.xml @@ -0,0 +1 @@ +some -- 1.7.10.4