From 3d986d2b0dcae25c5248b40f2dde27ed078905ee Mon Sep 17 00:00:00 2001 From: "arseny.kapoulkine" Date: Tue, 20 Oct 2009 17:49:52 +0000 Subject: tests: Added declaration and document load/load_file error tests git-svn-id: http://pugixml.googlecode.com/svn/trunk@157 99668b35-9821-0410-8761-19e4c4f06640 --- tests/test_document.cpp | 21 +++++++++++++++++++++ tests/test_parse.cpp | 42 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 63 insertions(+) (limited to 'tests') diff --git a/tests/test_document.cpp b/tests/test_document.cpp index a2e76b0..e839b2f 100644 --- a/tests/test_document.cpp +++ b/tests/test_document.cpp @@ -1,5 +1,7 @@ #include "common.hpp" +#include + TEST(document_create) { pugi::xml_document doc; @@ -16,6 +18,17 @@ TEST(document_load_stream) CHECK_NODE(doc, ""); } +TEST(document_load_stream_error) +{ + pugi::xml_document doc; + + std::ifstream fs1(""); + CHECK(doc.load(fs1).status == status_io_error); + + std::ifstream fs2("con"); + CHECK(doc.load(fs2).status == status_io_error); +} + TEST(document_load_string) { pugi::xml_document doc; @@ -46,6 +59,14 @@ TEST(document_load_file_large) CHECK_NODE(doc, oss.str().c_str()); } +TEST(document_load_file_error) +{ + pugi::xml_document doc; + + CHECK(doc.load_file("").status == status_file_not_found); + CHECK(doc.load_file("con").status == status_io_error); +} + TEST_XML(document_save, "") { std::ostringstream oss; diff --git a/tests/test_parse.cpp b/tests/test_parse.cpp index 81cd84f..749e686 100644 --- a/tests/test_parse.cpp +++ b/tests/test_parse.cpp @@ -355,3 +355,45 @@ TEST(parse_tag_error) CHECK(doc.load("", parse_minimal).status == status_end_element_mismatch); } + +TEST(parse_declaration_skip) +{ + xml_document doc; + CHECK(doc.load("", parse_minimal)); + CHECK(!doc.first_child()); +} + +TEST(parse_declaration_parse) +{ + xml_document doc; + CHECK(doc.load("", parse_minimal | parse_declaration)); + + xml_node d1 = doc.first_child(); + xml_node d2 = doc.last_child(); + + CHECK(d1 != d2); + CHECK(d1.type() == node_declaration); + CHECK_STRING(d1.name(), "xml"); + CHECK(d2.type() == node_declaration); + CHECK_STRING(d2.name(), "xml"); + CHECK_STRING(d2.attribute("version").value(), "1.0"); +} + +TEST(parse_declaration_error) +{ + xml_document doc; + + unsigned int flag_sets[] = {parse_minimal, parse_minimal | parse_declaration}; + + for (unsigned int i = 0; i < sizeof(flag_sets) / sizeof(flag_sets[0]); ++i) + { + unsigned int flags = flag_sets[i]; + + CHECK(doc.load("", flags).status == status_bad_pi); + CHECK(doc.load("", flags).status == status_bad_pi); + } + + CHECK(doc.load("", parse_minimal | parse_declaration).status == status_bad_attribute); +} -- cgit v1.2.3