tests: Fixed XPath OOM tests, added parsing exception test
git-svn-id: http://pugixml.googlecode.com/svn/trunk@760 99668b35-9821-0410-8761-19e4c4f06640
This commit is contained in:
parent
a6c756b8bc
commit
f725ff1170
@ -845,3 +845,24 @@ TEST(document_load_buffer_inplace_short)
|
|||||||
|
|
||||||
delete[] data;
|
delete[] data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef PUGIXML_NO_EXCEPTIONS
|
||||||
|
TEST(document_load_exceptions)
|
||||||
|
{
|
||||||
|
bool thrown = false;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
pugi::xml_document doc;
|
||||||
|
if (!doc.load("<node attribute='value")) throw std::bad_alloc();
|
||||||
|
|
||||||
|
CHECK_FORCE_FAIL("Expected parsing failure");
|
||||||
|
}
|
||||||
|
catch (const std::bad_alloc&)
|
||||||
|
{
|
||||||
|
thrown = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
CHECK(thrown);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|||||||
@ -272,25 +272,44 @@ TEST_XML(xpath_parse_absolute, "<div><s/></div>")
|
|||||||
CHECK_XPATH_NODESET(doc, STR("/*[/]")) % 2;
|
CHECK_XPATH_NODESET(doc, STR("/*[/]")) % 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef PUGIXML_NO_EXCEPTIONS
|
||||||
|
# define CHECK_XPATH_FAIL_OOM(query) CHECK_XPATH_FAIL(query)
|
||||||
|
#else
|
||||||
|
void test_xpath_fail_oom(const char_t* query)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
pugi::xpath_query q(query);
|
||||||
|
|
||||||
|
CHECK_FORCE_FAIL("Expected out of memory exception");
|
||||||
|
}
|
||||||
|
catch (const std::bad_alloc&)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# define CHECK_XPATH_FAIL_OOM(query) test_xpath_fail_oom(query)
|
||||||
|
#endif
|
||||||
|
|
||||||
TEST(xpath_parse_out_of_memory_first_page)
|
TEST(xpath_parse_out_of_memory_first_page)
|
||||||
{
|
{
|
||||||
test_runner::_memory_fail_threshold = 1;
|
test_runner::_memory_fail_threshold = 1;
|
||||||
|
|
||||||
CHECK_XPATH_FAIL(STR("1"));
|
CHECK_XPATH_FAIL_OOM(STR("1"));
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(xpath_parse_out_of_memory_second_page_node)
|
TEST(xpath_parse_out_of_memory_second_page_node)
|
||||||
{
|
{
|
||||||
test_runner::_memory_fail_threshold = 8192;
|
test_runner::_memory_fail_threshold = 8192;
|
||||||
|
|
||||||
CHECK_XPATH_FAIL(STR("1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1"));
|
CHECK_XPATH_FAIL_OOM(STR("1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1"));
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(xpath_parse_out_of_memory_string_to_number)
|
TEST(xpath_parse_out_of_memory_string_to_number)
|
||||||
{
|
{
|
||||||
test_runner::_memory_fail_threshold = 4096 + 128;
|
test_runner::_memory_fail_threshold = 4096 + 128;
|
||||||
|
|
||||||
CHECK_XPATH_FAIL(STR("0.11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111"));
|
CHECK_XPATH_FAIL_OOM(STR("0.11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111"));
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(xpath_parse_qname_error)
|
TEST(xpath_parse_qname_error)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user