mirror of
https://github.com/zeux/pugixml.git
synced 2024-12-26 21:04:25 +08:00
tests: Add more tests to increase coverage
This change adds more thorough tests for attribute conversion as well as some assorted tests that fix gaps in coverage.
This commit is contained in:
parent
094a0c8ebe
commit
1a3e92a7cc
@ -11,15 +11,19 @@ static void overflow_hash_table(xml_document& doc)
|
||||
CHECK(n.prepend_child(node_element));
|
||||
}
|
||||
|
||||
TEST_XML(compact_out_of_memory_string, "<n/>")
|
||||
TEST_XML_FLAGS(compact_out_of_memory_string, "<n a='v'/><?n v?>", parse_pi)
|
||||
{
|
||||
test_runner::_memory_fail_threshold = 1;
|
||||
|
||||
overflow_hash_table(doc);
|
||||
|
||||
xml_node n = doc.child(STR("n"));
|
||||
xml_attribute a = doc.child(STR("n")).attribute(STR("a"));
|
||||
xml_node pi = doc.last_child();
|
||||
|
||||
CHECK_ALLOC_FAIL(CHECK(!n.set_name(STR("name"))));
|
||||
CHECK_ALLOC_FAIL(CHECK(!pi.set_name(STR("name"))));
|
||||
CHECK_ALLOC_FAIL(CHECK(!pi.set_value(STR("value"))));
|
||||
CHECK_ALLOC_FAIL(CHECK(!a.set_name(STR("name"))));
|
||||
CHECK_ALLOC_FAIL(CHECK(!a.set_value(STR("value"))));
|
||||
}
|
||||
|
||||
TEST_XML(compact_out_of_memory_attribute, "<n a='v'/>")
|
||||
|
@ -137,6 +137,10 @@ TEST_XML(dom_attr_as_integer_space, "<node attr1=' \t1234' attr2='\t 0x123' attr
|
||||
CHECK(node.attribute(STR("attr2")).as_int() == 291);
|
||||
CHECK(node.attribute(STR("attr3")).as_int() == 0);
|
||||
CHECK(node.attribute(STR("attr4")).as_int() == 0);
|
||||
|
||||
#ifdef PUGIXML_HAS_LONG_LONG
|
||||
CHECK(node.attribute(STR("attr1")).as_llong() == 1234);
|
||||
#endif
|
||||
}
|
||||
|
||||
TEST_XML(dom_attr_as_float, "<node attr1='0' attr2='1' attr3='0.12' attr4='-5.1' attr5='3e-4' attr6='3.14159265358979323846'/>")
|
||||
|
@ -746,6 +746,36 @@ TEST(parse_attribute_quot_inside)
|
||||
}
|
||||
}
|
||||
|
||||
TEST(parse_attribute_wnorm_coverage)
|
||||
{
|
||||
xml_document doc;
|
||||
CHECK(doc.load_string(STR("<n a1='v' a2=' ' a3='x y' a4='x y' a5='x y' />"), parse_wnorm_attribute));
|
||||
CHECK_NODE(doc, STR("<n a1=\"v\" a2=\"\" a3=\"x y\" a4=\"x y\" a5=\"x y\"/>"));
|
||||
|
||||
CHECK(doc.load_string(STR("<n a1='v' a2=' ' a3='x y' a4='x y' a5='x y' />"), parse_wnorm_attribute | parse_escapes));
|
||||
CHECK_NODE(doc, STR("<n a1=\"v\" a2=\"\" a3=\"x y\" a4=\"x y\" a5=\"x y\"/>"));
|
||||
}
|
||||
|
||||
TEST(parse_attribute_wconv_coverage)
|
||||
{
|
||||
xml_document doc;
|
||||
CHECK(doc.load_string(STR("<n a1='v' a2='\r' a3='\r\n\n' a4='\n' />"), parse_wconv_attribute));
|
||||
CHECK_NODE(doc, STR("<n a1=\"v\" a2=\" \" a3=\" \" a4=\" \"/>"));
|
||||
|
||||
CHECK(doc.load_string(STR("<n a1='v' a2='\r' a3='\r\n\n' a4='\n' />"), parse_wconv_attribute | parse_escapes));
|
||||
CHECK_NODE(doc, STR("<n a1=\"v\" a2=\" \" a3=\" \" a4=\" \"/>"));
|
||||
}
|
||||
|
||||
TEST(parse_attribute_eol_coverage)
|
||||
{
|
||||
xml_document doc;
|
||||
CHECK(doc.load_string(STR("<n a1='v' a2='\r' a3='\r\n\n' a4='\n' />"), parse_eol));
|
||||
CHECK_NODE(doc, STR("<n a1=\"v\" a2=\" \" a3=\" \" a4=\" \"/>"));
|
||||
|
||||
CHECK(doc.load_string(STR("<n a1='v' a2='\r' a3='\r\n\n' a4='\n' />"), parse_eol | parse_escapes));
|
||||
CHECK_NODE(doc, STR("<n a1=\"v\" a2=\" \" a3=\" \" a4=\" \"/>"));
|
||||
}
|
||||
|
||||
TEST(parse_tag_single)
|
||||
{
|
||||
xml_document doc;
|
||||
|
@ -69,6 +69,12 @@ TEST_XML_FLAGS(write_cdata_escape, "<![CDATA[value]]>", parse_cdata | parse_frag
|
||||
|
||||
doc.first_child().set_value(STR("1]]>2]]>3"));
|
||||
CHECK_NODE(doc, STR("<![CDATA[1]]]]><![CDATA[>2]]]]><![CDATA[>3]]>"));
|
||||
|
||||
doc.first_child().set_value(STR("1]"));
|
||||
CHECK_NODE(doc, STR("<![CDATA[1]]]>"));
|
||||
|
||||
doc.first_child().set_value(STR("1]]"));
|
||||
CHECK_NODE(doc, STR("<![CDATA[1]]]]>"));
|
||||
}
|
||||
|
||||
TEST_XML(write_cdata_inner, "<node><![CDATA[value]]></node>")
|
||||
|
Loading…
x
Reference in New Issue
Block a user