check node number limits
This commit is contained in:
		| @@ -265,32 +265,49 @@ class ComplexTest: public CppUnit::TestFixture { | ||||
|       } { | ||||
|         std::stringstream file("<base one two three></base>"); | ||||
|         CPPUNIT_ASSERT_THROW(factory.read(file), xml::illegal_attribute); | ||||
|       } { | ||||
|         std::stringstream file("<base one/>"); | ||||
|         CPPUNIT_ASSERT_NO_THROW(factory.read(file)); | ||||
|       } { | ||||
|         std::stringstream file("<base one=\"abc def ghi\"/>"); | ||||
|         CPPUNIT_ASSERT_EQUAL(std::string("abc"), | ||||
|                              (*factory.read(file)).attribute("one").front()); | ||||
|       } { | ||||
|         std::stringstream file("<base one=\"abc def ghi\"/>"); | ||||
|         CPPUNIT_ASSERT_EQUAL((size_t)3, | ||||
|                              (*factory.read(file)).attribute("one").toList() | ||||
|                              .size()); | ||||
|       } { | ||||
|         std::stringstream file("<base one=\"abc\"/>"); | ||||
|         CPPUNIT_ASSERT_EQUAL(std::string("abc"), | ||||
|                              (*factory.read(file)).attribute("one").front()); | ||||
|       } { | ||||
|         std::stringstream file("<base one/>"); | ||||
|         CPPUNIT_ASSERT_EQUAL(std::string(""), | ||||
|                              (*factory.read(file)).attribute("one").front()); | ||||
|       }       | ||||
|     } | ||||
|     void ranges() { | ||||
|       xml::Factory factory(xml::Node("base", 2, 2) | ||||
|                            <<xml::Node("mandatory", 1) | ||||
|       xml::Factory factory(xml::Node("base") | ||||
|                            <<xml::Node("mandatory", 1, 1) | ||||
|                            <<xml::Node("optional", 0, 1)); | ||||
|       { | ||||
|         std::stringstream file("<base><mandatory></mandatory></base>" | ||||
|                                "<base><mandatory/><optional/></base>"); | ||||
|         std::stringstream file("<base><mandatory/><optional/></base>"); | ||||
|         CPPUNIT_ASSERT_NO_THROW(factory.read(file)); | ||||
|       } /*{ | ||||
|         std::stringstream file("<base><mandatory></mandatory></base>" | ||||
|                                "<base><mandatory/><optional/></base>"); | ||||
|       } { | ||||
|         std::stringstream file("<base><optional/></base>"); | ||||
|         CPPUNIT_ASSERT_THROW(factory.read(file), | ||||
|                              xml::wrong_node_number); | ||||
|       } { | ||||
|         std::stringstream file("<base><mandatory></mandatory></base>" | ||||
|                                "<base><mandatory/><optional/></base>"); | ||||
|         std::stringstream file("<base><mandatory/><optional/>" | ||||
|                                "<optional/></base>"); | ||||
|         CPPUNIT_ASSERT_THROW(factory.read(file), | ||||
|                              xml::wrong_node_number); | ||||
|       } { | ||||
|         std::stringstream file("<base><mandatory></mandatory></base>" | ||||
|                                "<base><mandatory/><optional/></base>"); | ||||
|         std::stringstream file("<base><mandatory/><mandatory/></base>"); | ||||
|         CPPUNIT_ASSERT_THROW(factory.read(file), | ||||
|                              xml::wrong_node_number); | ||||
|       }*/ | ||||
|       } | ||||
|     } | ||||
|     CPPUNIT_TEST_SUITE(ComplexTest); | ||||
|     CPPUNIT_TEST(nodes); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user