summaryrefslogtreecommitdiff
path: root/tests/test_parse.cpp
diff options
context:
space:
mode:
authorArseny Kapoulkine <arseny.kapoulkine@gmail.com>2015-04-12 03:05:58 -0700
committerArseny Kapoulkine <arseny.kapoulkine@gmail.com>2015-04-12 03:05:58 -0700
commita19da1c246f244da57197915df3ab70f24bf1502 (patch)
tree08522294870adb468c37042365095ebbae2c0177 /tests/test_parse.cpp
parente90d2ac8ba44fbcf4d5702643f708f2c86bde42e (diff)
parenta0d065cd22d1d43c417f6d3db88a04bf57b67ed0 (diff)
Merge branch 'master' into compact
Diffstat (limited to 'tests/test_parse.cpp')
-rw-r--r--tests/test_parse.cpp17
1 files changed, 13 insertions, 4 deletions
diff --git a/tests/test_parse.cpp b/tests/test_parse.cpp
index 7bb2663..08ddee4 100644
--- a/tests/test_parse.cpp
+++ b/tests/test_parse.cpp
@@ -873,7 +873,7 @@ TEST(parse_out_of_memory)
test_runner::_memory_fail_threshold = 256;
xml_document doc;
- CHECK(doc.load_string(STR("<foo a='1'/>")).status == status_out_of_memory);
+ CHECK_ALLOC_FAIL(CHECK(doc.load_string(STR("<foo a='1'/>")).status == status_out_of_memory));
CHECK(!doc.first_child());
}
@@ -893,7 +893,7 @@ TEST(parse_out_of_memory_halfway_node)
test_runner::_memory_fail_threshold = 65536;
xml_document doc;
- CHECK(doc.load_buffer_inplace(text, count * 4).status == status_out_of_memory);
+ CHECK_ALLOC_FAIL(CHECK(doc.load_buffer_inplace(text, count * 4).status == status_out_of_memory));
CHECK_NODE(doc.first_child(), STR("<n />"));
}
@@ -920,12 +920,21 @@ TEST(parse_out_of_memory_halfway_attr)
test_runner::_memory_fail_threshold = 65536;
xml_document doc;
- CHECK(doc.load_buffer_inplace(text, count * 5 + 4).status == status_out_of_memory);
+ CHECK_ALLOC_FAIL(CHECK(doc.load_buffer_inplace(text, count * 5 + 4).status == status_out_of_memory));
CHECK_STRING(doc.first_child().name(), STR("n"));
CHECK_STRING(doc.first_child().first_attribute().name(), STR("a"));
CHECK_STRING(doc.first_child().last_attribute().name(), STR("a"));
}
+TEST(parse_out_of_memory_conversion)
+{
+ test_runner::_memory_fail_threshold = 256;
+
+ xml_document doc;
+ CHECK_ALLOC_FAIL(CHECK(doc.load_buffer("<foo\x90/>", 7, parse_default, encoding_latin1).status == status_out_of_memory));
+ CHECK(!doc.first_child());
+}
+
static bool test_offset(const char_t* contents, unsigned int options, pugi::xml_parse_status status, ptrdiff_t offset)
{
xml_document doc;
@@ -941,7 +950,7 @@ TEST(parse_error_offset)
CHECK_OFFSET("<node/>", parse_default, status_ok, 0);
test_runner::_memory_fail_threshold = 1;
- CHECK_OFFSET("<node/>", parse_default, status_out_of_memory, 0);
+ CHECK_ALLOC_FAIL(CHECK_OFFSET("<node/>", parse_default, status_out_of_memory, 0));
test_runner::_memory_fail_threshold = 0;
CHECK_OFFSET("<3d/>", parse_default, status_unrecognized_tag, 1);