From 7d24b9b5655d584b6dc8b89df7cbd58d2e940a81 Mon Sep 17 00:00:00 2001 From: "arseny.kapoulkine" Date: Mon, 19 Jul 2010 09:57:32 +0000 Subject: Set svn:eol-style to native for all text files git-svn-id: http://pugixml.googlecode.com/svn/trunk@607 99668b35-9821-0410-8761-19e4c4f06640 --- tests/test_parse_doctype.cpp | 550 +++++++++++++++++++++---------------------- 1 file changed, 275 insertions(+), 275 deletions(-) (limited to 'tests/test_parse_doctype.cpp') diff --git a/tests/test_parse_doctype.cpp b/tests/test_parse_doctype.cpp index 5ab8140..57f38fb 100644 --- a/tests/test_parse_doctype.cpp +++ b/tests/test_parse_doctype.cpp @@ -1,275 +1,275 @@ -#include "common.hpp" - -#include - -static bool test_doctype_wf(const std::basic_string& decl) -{ - xml_document doc; - - // standalone - if (!doc.load(decl.c_str()) || (bool)doc.first_child()) return false; - - // pcdata pre/postfix - if (!doc.load((STR("a") + decl).c_str()) || (bool)doc.first_child()) return false; - if (!doc.load((decl + STR("b")).c_str()) || (bool)doc.first_child()) return false; - if (!doc.load((STR("a") + decl + STR("b")).c_str()) || (bool)doc.first_child()) return false; - - // node pre/postfix - if (!doc.load((STR("") + decl).c_str()) || !test_node(doc, STR(""), STR(""), format_raw)) return false; - if (!doc.load((decl + STR("")).c_str()) || !test_node(doc, STR(""), STR(""), format_raw)) return false; - if (!doc.load((STR("") + decl + STR("")).c_str()) || !test_node(doc, STR(""), STR(""), format_raw)) return false; - - // wrap in node to check that doctype is parsed fully (does not leave any "pcdata") - if (!doc.load((STR("") + decl + STR("")).c_str()) || !test_node(doc, STR(""), STR(""), format_raw)) return false; - - return true; -} - -static bool test_doctype_nwf(const std::basic_string& decl) -{ - xml_document doc; - - // standalone - if (doc.load(decl.c_str()).status != status_bad_doctype) return false; - - // pcdata postfix - if (doc.load((decl + STR("b")).c_str()).status != status_bad_doctype) return false; - - // node postfix - if (doc.load((decl + STR("")).c_str()).status != status_bad_doctype) return false; - - return true; -} - -#define TEST_DOCTYPE_WF(contents) CHECK(test_doctype_wf(STR(contents))) -#define TEST_DOCTYPE_NWF(contents) CHECK(test_doctype_nwf(STR(contents))) - -TEST(parse_doctype_skip) -{ - TEST_DOCTYPE_WF(""); - TEST_DOCTYPE_WF(""); - TEST_DOCTYPE_WF(""); - TEST_DOCTYPE_WF(""); - TEST_DOCTYPE_WF(""); - TEST_DOCTYPE_WF("]>"); -} - -TEST(parse_doctype_error) -{ - TEST_DOCTYPE_NWF(""); - TEST_DOCTYPE_NWF("]"); - TEST_DOCTYPE_NWF("] "); -} - -// Examples from W3C recommendations -TEST(parse_doctype_w3c_wf) -{ - TEST_DOCTYPE_WF(""); - TEST_DOCTYPE_WF(" ]>"); - TEST_DOCTYPE_WF(" ]>"); - TEST_DOCTYPE_WF(" ]]> ]]>]>"); - TEST_DOCTYPE_WF(" ]>"); - TEST_DOCTYPE_WF(" ]>"); -} - -TEST(parse_doctype_w3c_nwf) -{ - TEST_DOCTYPE_NWF(""); - TEST_DOCTYPE_NWF(" ]"); - TEST_DOCTYPE_NWF(""); - TEST_DOCTYPE_NWF(" ]"); - TEST_DOCTYPE_NWF(""); - TEST_DOCTYPE_NWF(" ]>"); - TEST_DOCTYPE_WF(" ]>"); - TEST_DOCTYPE_WF(" %e; ]>"); - TEST_DOCTYPE_WF(" ]>"); - TEST_DOCTYPE_WF(" ]>"); - TEST_DOCTYPE_WF(" ]>"); - TEST_DOCTYPE_WF(" ]>"); - TEST_DOCTYPE_WF(" ]>"); - TEST_DOCTYPE_WF(""); - TEST_DOCTYPE_WF(" ]>"); - TEST_DOCTYPE_WF(" ]>"); - TEST_DOCTYPE_WF(" ]>"); - TEST_DOCTYPE_WF(" ]>"); - TEST_DOCTYPE_WF(" \"> ]>"); - TEST_DOCTYPE_WF(" ]>"); - TEST_DOCTYPE_WF(" ]>"); - TEST_DOCTYPE_WF(" %pe; %intpe; ]>"); - TEST_DOCTYPE_WF(" ]>"); - TEST_DOCTYPE_WF(" ]>"); - TEST_DOCTYPE_WF(" ]>"); - TEST_DOCTYPE_WF(" ]>"); - TEST_DOCTYPE_WF(" ]>"); - TEST_DOCTYPE_WF(" ]>"); - TEST_DOCTYPE_WF(" ]>"); - TEST_DOCTYPE_WF("]]> ]>"); - TEST_DOCTYPE_WF(" ]>"); - TEST_DOCTYPE_NWF(" \"> \"> "); - TEST_DOCTYPE_WF(" ]>"); -} - -TEST(parse_doctype_xmlconf_eduni_2) -{ - TEST_DOCTYPE_WF("\"> %pe; ]>"); - TEST_DOCTYPE_WF(" ]>"); - TEST_DOCTYPE_WF(" ]>"); - TEST_DOCTYPE_WF(" ]>"); - TEST_DOCTYPE_WF(" ]>"); - TEST_DOCTYPE_WF(" ]>"); -} - -TEST(parse_doctype_xmlconf_eduni_3) -{ - TEST_DOCTYPE_WF(" ]>"); - TEST_DOCTYPE_WF(" ]>"); - TEST_DOCTYPE_WF("\"> ]>"); -} - -TEST(parse_doctype_xmlconf_eduni_4) -{ - TEST_DOCTYPE_WF(" ]>"); - TEST_DOCTYPE_WF(" ]>"); - TEST_DOCTYPE_WF(" ]>"); - TEST_DOCTYPE_WF(" ]>"); -} - -TEST(parse_doctype_xmlconf_eduni_5) -{ - TEST_DOCTYPE_WF(" ]>"); - TEST_DOCTYPE_WF(" ]>"); - TEST_DOCTYPE_WF(" ]>"); -} - -TEST(parse_doctype_xmlconf_ibm_1) -{ - TEST_DOCTYPE_WF(" ]>"); - TEST_DOCTYPE_WF(" ]>"); - TEST_DOCTYPE_WF(" ]>"); - TEST_DOCTYPE_WF(" ]>"); - TEST_DOCTYPE_WF(" ]>"); - TEST_DOCTYPE_WF(" ]>"); - TEST_DOCTYPE_WF(" ]>"); - TEST_DOCTYPE_WF(" ]>"); - TEST_DOCTYPE_WF(" %pe1; ]>"); - TEST_DOCTYPE_WF(" ]>"); - TEST_DOCTYPE_WF(" \"> %pe3; ]>"); - TEST_DOCTYPE_WF(" '> %pe1; ]>"); -} - -TEST(parse_doctype_xmlconf_ibm_2) -{ - TEST_DOCTYPE_WF(" \"> ]>"); - TEST_DOCTYPE_WF(" ]>"); - TEST_DOCTYPE_WF(" ]>"); - TEST_DOCTYPE_WF(" ]>"); - TEST_DOCTYPE_WF(" ]>"); - TEST_DOCTYPE_NWF(" ]>"); - TEST_DOCTYPE_WF(" ]>"); - TEST_DOCTYPE_NWF(" ]>"); - TEST_DOCTYPE_NWF(" ]>"); - TEST_DOCTYPE_NWF(" ]>"); - TEST_DOCTYPE_NWF(" ]>"); - TEST_DOCTYPE_WF(" ]>"); - TEST_DOCTYPE_WF(" &generalE; \"> %parameterE; ] animal>"); - TEST_DOCTYPE_WF(" ]>"); - TEST_DOCTYPE_WF(" ]>"); - TEST_DOCTYPE_NWF(" \"> ]>"); - TEST_DOCTYPE_WF(" ]>"); - TEST_DOCTYPE_WF(" ]>"); - TEST_DOCTYPE_WF(" ]>"); - TEST_DOCTYPE_WF(" ]]> ]>"); - TEST_DOCTYPE_WF(" ]]> ]>"); - TEST_DOCTYPE_NWF(" ]]> ]>"); - TEST_DOCTYPE_WF(" ]]> ]>"); - TEST_DOCTYPE_WF(" ]]> ]>"); - TEST_DOCTYPE_WF(" [INCLUDE ]]> ]>"); - TEST_DOCTYPE_NWF(" ]>"); - TEST_DOCTYPE_NWF(" ]>"); - TEST_DOCTYPE_WF(" %paaa; \"> ]>"); - TEST_DOCTYPE_WF(" \"> %paaa; ]>"); - TEST_DOCTYPE_NWF(" \" %paaa; ]>"); - TEST_DOCTYPE_WF(" ]>"); -} - -TEST(parse_doctype_xmlconf_ibm_3) -{ - TEST_DOCTYPE_WF(" ]>"); - TEST_DOCTYPE_WF(" ]>"); - TEST_DOCTYPE_WF(" ]>"); - TEST_DOCTYPE_WF(""); - TEST_DOCTYPE_WF(" ]>"); - TEST_DOCTYPE_WF(""); - TEST_DOCTYPE_WF(""); - TEST_DOCTYPE_WF(""); - TEST_DOCTYPE_WF(""); - TEST_DOCTYPE_WF(""); - TEST_DOCTYPE_WF(" ]>"); - TEST_DOCTYPE_NWF(" ]>"); - TEST_DOCTYPE_WF(" ]>"); - TEST_DOCTYPE_NWF(" ]>"); - TEST_DOCTYPE_WF(" IN PI ?> ]>"); - TEST_DOCTYPE_WF(" \"> \"> \"> %make_leopard_element; %make_small; \"> %make_big; %make_attlist; ]>"); - TEST_DOCTYPE_WF("\"> ]]> %rootElement; \"> %make_tiger_element; ]]> ]>"); - TEST_DOCTYPE_WF(" General entity reference in element content\"> ]>"); - TEST_DOCTYPE_WF(" ]>"); - TEST_DOCTYPE_WF("'. These must be balanced ]>"); - TEST_DOCTYPE_WF("'. These must be balanced ]]> ]]> ]>"); - TEST_DOCTYPE_WF("'. These must be balanced ]]> nesting ]]> nesting again ]]> end ]]> ]>"); - TEST_DOCTYPE_WF(" \"> %pe1; ]> ]>"); -} - -TEST(parse_doctype_xmlconf_oasis_1) -{ - TEST_DOCTYPE_WF(" ]>"); - TEST_DOCTYPE_WF("\"> ]]> %rootel; ]]> ]>"); - TEST_DOCTYPE_WF(" ]]>]]> ]>"); - TEST_DOCTYPE_WF(" ]]>]]> ]>"); - TEST_DOCTYPE_NWF(" ]>"); - TEST_DOCTYPE_WF(" ]]> ]>"); - TEST_DOCTYPE_NWF(" ]>"); - TEST_DOCTYPE_WF(" '. These must be balanced, but it is no section keyword is required: ] ]> ]] > ]]> ]]> ]>"); - TEST_DOCTYPE_WF(" ?>/\''\"> ]>"); - TEST_DOCTYPE_WF(" ]>"); - TEST_DOCTYPE_WF(" ]>"); - TEST_DOCTYPE_WF(" "); // not actually a doctype :) - TEST_DOCTYPE_WF(" &a%b&#c?>"); // not actually a doctype :) - TEST_DOCTYPE_WF("]>"); -} - -TEST(parse_doctype_xmlconf_xmltest_1) -{ - TEST_DOCTYPE_NWF(" ]> ]>"); - TEST_DOCTYPE_NWF(" "); - TEST_DOCTYPE_NWF(" "); - TEST_DOCTYPE_WF(" %e; -->"); - TEST_DOCTYPE_WF(" ]>"); - TEST_DOCTYPE_WF(" ]>"); - TEST_DOCTYPE_WF("\"> ]>"); - TEST_DOCTYPE_WF(" \"> ]>"); -} +#include "common.hpp" + +#include + +static bool test_doctype_wf(const std::basic_string& decl) +{ + xml_document doc; + + // standalone + if (!doc.load(decl.c_str()) || (bool)doc.first_child()) return false; + + // pcdata pre/postfix + if (!doc.load((STR("a") + decl).c_str()) || (bool)doc.first_child()) return false; + if (!doc.load((decl + STR("b")).c_str()) || (bool)doc.first_child()) return false; + if (!doc.load((STR("a") + decl + STR("b")).c_str()) || (bool)doc.first_child()) return false; + + // node pre/postfix + if (!doc.load((STR("") + decl).c_str()) || !test_node(doc, STR(""), STR(""), format_raw)) return false; + if (!doc.load((decl + STR("")).c_str()) || !test_node(doc, STR(""), STR(""), format_raw)) return false; + if (!doc.load((STR("") + decl + STR("")).c_str()) || !test_node(doc, STR(""), STR(""), format_raw)) return false; + + // wrap in node to check that doctype is parsed fully (does not leave any "pcdata") + if (!doc.load((STR("") + decl + STR("")).c_str()) || !test_node(doc, STR(""), STR(""), format_raw)) return false; + + return true; +} + +static bool test_doctype_nwf(const std::basic_string& decl) +{ + xml_document doc; + + // standalone + if (doc.load(decl.c_str()).status != status_bad_doctype) return false; + + // pcdata postfix + if (doc.load((decl + STR("b")).c_str()).status != status_bad_doctype) return false; + + // node postfix + if (doc.load((decl + STR("")).c_str()).status != status_bad_doctype) return false; + + return true; +} + +#define TEST_DOCTYPE_WF(contents) CHECK(test_doctype_wf(STR(contents))) +#define TEST_DOCTYPE_NWF(contents) CHECK(test_doctype_nwf(STR(contents))) + +TEST(parse_doctype_skip) +{ + TEST_DOCTYPE_WF(""); + TEST_DOCTYPE_WF(""); + TEST_DOCTYPE_WF(""); + TEST_DOCTYPE_WF(""); + TEST_DOCTYPE_WF(""); + TEST_DOCTYPE_WF("]>"); +} + +TEST(parse_doctype_error) +{ + TEST_DOCTYPE_NWF(""); + TEST_DOCTYPE_NWF("]"); + TEST_DOCTYPE_NWF("] "); +} + +// Examples from W3C recommendations +TEST(parse_doctype_w3c_wf) +{ + TEST_DOCTYPE_WF(""); + TEST_DOCTYPE_WF(" ]>"); + TEST_DOCTYPE_WF(" ]>"); + TEST_DOCTYPE_WF(" ]]> ]]>]>"); + TEST_DOCTYPE_WF(" ]>"); + TEST_DOCTYPE_WF(" ]>"); +} + +TEST(parse_doctype_w3c_nwf) +{ + TEST_DOCTYPE_NWF(""); + TEST_DOCTYPE_NWF(" ]"); + TEST_DOCTYPE_NWF(""); + TEST_DOCTYPE_NWF(" ]"); + TEST_DOCTYPE_NWF(""); + TEST_DOCTYPE_NWF(" ]>"); + TEST_DOCTYPE_WF(" ]>"); + TEST_DOCTYPE_WF(" %e; ]>"); + TEST_DOCTYPE_WF(" ]>"); + TEST_DOCTYPE_WF(" ]>"); + TEST_DOCTYPE_WF(" ]>"); + TEST_DOCTYPE_WF(" ]>"); + TEST_DOCTYPE_WF(" ]>"); + TEST_DOCTYPE_WF(""); + TEST_DOCTYPE_WF(" ]>"); + TEST_DOCTYPE_WF(" ]>"); + TEST_DOCTYPE_WF(" ]>"); + TEST_DOCTYPE_WF(" ]>"); + TEST_DOCTYPE_WF(" \"> ]>"); + TEST_DOCTYPE_WF(" ]>"); + TEST_DOCTYPE_WF(" ]>"); + TEST_DOCTYPE_WF(" %pe; %intpe; ]>"); + TEST_DOCTYPE_WF(" ]>"); + TEST_DOCTYPE_WF(" ]>"); + TEST_DOCTYPE_WF(" ]>"); + TEST_DOCTYPE_WF(" ]>"); + TEST_DOCTYPE_WF(" ]>"); + TEST_DOCTYPE_WF(" ]>"); + TEST_DOCTYPE_WF(" ]>"); + TEST_DOCTYPE_WF("]]> ]>"); + TEST_DOCTYPE_WF(" ]>"); + TEST_DOCTYPE_NWF(" \"> \"> "); + TEST_DOCTYPE_WF(" ]>"); +} + +TEST(parse_doctype_xmlconf_eduni_2) +{ + TEST_DOCTYPE_WF("\"> %pe; ]>"); + TEST_DOCTYPE_WF(" ]>"); + TEST_DOCTYPE_WF(" ]>"); + TEST_DOCTYPE_WF(" ]>"); + TEST_DOCTYPE_WF(" ]>"); + TEST_DOCTYPE_WF(" ]>"); +} + +TEST(parse_doctype_xmlconf_eduni_3) +{ + TEST_DOCTYPE_WF(" ]>"); + TEST_DOCTYPE_WF(" ]>"); + TEST_DOCTYPE_WF("\"> ]>"); +} + +TEST(parse_doctype_xmlconf_eduni_4) +{ + TEST_DOCTYPE_WF(" ]>"); + TEST_DOCTYPE_WF(" ]>"); + TEST_DOCTYPE_WF(" ]>"); + TEST_DOCTYPE_WF(" ]>"); +} + +TEST(parse_doctype_xmlconf_eduni_5) +{ + TEST_DOCTYPE_WF(" ]>"); + TEST_DOCTYPE_WF(" ]>"); + TEST_DOCTYPE_WF(" ]>"); +} + +TEST(parse_doctype_xmlconf_ibm_1) +{ + TEST_DOCTYPE_WF(" ]>"); + TEST_DOCTYPE_WF(" ]>"); + TEST_DOCTYPE_WF(" ]>"); + TEST_DOCTYPE_WF(" ]>"); + TEST_DOCTYPE_WF(" ]>"); + TEST_DOCTYPE_WF(" ]>"); + TEST_DOCTYPE_WF(" ]>"); + TEST_DOCTYPE_WF(" ]>"); + TEST_DOCTYPE_WF(" %pe1; ]>"); + TEST_DOCTYPE_WF(" ]>"); + TEST_DOCTYPE_WF(" \"> %pe3; ]>"); + TEST_DOCTYPE_WF(" '> %pe1; ]>"); +} + +TEST(parse_doctype_xmlconf_ibm_2) +{ + TEST_DOCTYPE_WF(" \"> ]>"); + TEST_DOCTYPE_WF(" ]>"); + TEST_DOCTYPE_WF(" ]>"); + TEST_DOCTYPE_WF(" ]>"); + TEST_DOCTYPE_WF(" ]>"); + TEST_DOCTYPE_NWF(" ]>"); + TEST_DOCTYPE_WF(" ]>"); + TEST_DOCTYPE_NWF(" ]>"); + TEST_DOCTYPE_NWF(" ]>"); + TEST_DOCTYPE_NWF(" ]>"); + TEST_DOCTYPE_NWF(" ]>"); + TEST_DOCTYPE_WF(" ]>"); + TEST_DOCTYPE_WF(" &generalE; \"> %parameterE; ] animal>"); + TEST_DOCTYPE_WF(" ]>"); + TEST_DOCTYPE_WF(" ]>"); + TEST_DOCTYPE_NWF(" \"> ]>"); + TEST_DOCTYPE_WF(" ]>"); + TEST_DOCTYPE_WF(" ]>"); + TEST_DOCTYPE_WF(" ]>"); + TEST_DOCTYPE_WF(" ]]> ]>"); + TEST_DOCTYPE_WF(" ]]> ]>"); + TEST_DOCTYPE_NWF(" ]]> ]>"); + TEST_DOCTYPE_WF(" ]]> ]>"); + TEST_DOCTYPE_WF(" ]]> ]>"); + TEST_DOCTYPE_WF(" [INCLUDE ]]> ]>"); + TEST_DOCTYPE_NWF(" ]>"); + TEST_DOCTYPE_NWF(" ]>"); + TEST_DOCTYPE_WF(" %paaa; \"> ]>"); + TEST_DOCTYPE_WF(" \"> %paaa; ]>"); + TEST_DOCTYPE_NWF(" \" %paaa; ]>"); + TEST_DOCTYPE_WF(" ]>"); +} + +TEST(parse_doctype_xmlconf_ibm_3) +{ + TEST_DOCTYPE_WF(" ]>"); + TEST_DOCTYPE_WF(" ]>"); + TEST_DOCTYPE_WF(" ]>"); + TEST_DOCTYPE_WF(""); + TEST_DOCTYPE_WF(" ]>"); + TEST_DOCTYPE_WF(""); + TEST_DOCTYPE_WF(""); + TEST_DOCTYPE_WF(""); + TEST_DOCTYPE_WF(""); + TEST_DOCTYPE_WF(""); + TEST_DOCTYPE_WF(" ]>"); + TEST_DOCTYPE_NWF(" ]>"); + TEST_DOCTYPE_WF(" ]>"); + TEST_DOCTYPE_NWF(" ]>"); + TEST_DOCTYPE_WF(" IN PI ?> ]>"); + TEST_DOCTYPE_WF(" \"> \"> \"> %make_leopard_element; %make_small; \"> %make_big; %make_attlist; ]>"); + TEST_DOCTYPE_WF("\"> ]]> %rootElement; \"> %make_tiger_element; ]]> ]>"); + TEST_DOCTYPE_WF(" General entity reference in element content\"> ]>"); + TEST_DOCTYPE_WF(" ]>"); + TEST_DOCTYPE_WF("'. These must be balanced ]>"); + TEST_DOCTYPE_WF("'. These must be balanced ]]> ]]> ]>"); + TEST_DOCTYPE_WF("'. These must be balanced ]]> nesting ]]> nesting again ]]> end ]]> ]>"); + TEST_DOCTYPE_WF(" \"> %pe1; ]> ]>"); +} + +TEST(parse_doctype_xmlconf_oasis_1) +{ + TEST_DOCTYPE_WF(" ]>"); + TEST_DOCTYPE_WF("\"> ]]> %rootel; ]]> ]>"); + TEST_DOCTYPE_WF(" ]]>]]> ]>"); + TEST_DOCTYPE_WF(" ]]>]]> ]>"); + TEST_DOCTYPE_NWF(" ]>"); + TEST_DOCTYPE_WF(" ]]> ]>"); + TEST_DOCTYPE_NWF(" ]>"); + TEST_DOCTYPE_WF(" '. These must be balanced, but it is no section keyword is required: ] ]> ]] > ]]> ]]> ]>"); + TEST_DOCTYPE_WF(" ?>/\''\"> ]>"); + TEST_DOCTYPE_WF(" ]>"); + TEST_DOCTYPE_WF(" ]>"); + TEST_DOCTYPE_WF(" "); // not actually a doctype :) + TEST_DOCTYPE_WF(" &a%b&#c?>"); // not actually a doctype :) + TEST_DOCTYPE_WF("]>"); +} + +TEST(parse_doctype_xmlconf_xmltest_1) +{ + TEST_DOCTYPE_NWF(" ]> ]>"); + TEST_DOCTYPE_NWF(" "); + TEST_DOCTYPE_NWF(" "); + TEST_DOCTYPE_WF(" %e; -->"); + TEST_DOCTYPE_WF(" ]>"); + TEST_DOCTYPE_WF(" ]>"); + TEST_DOCTYPE_WF("\"> ]>"); + TEST_DOCTYPE_WF(" \"> ]>"); +} -- cgit v1.2.3