tests: Added progressive truncation test

git-svn-id: http://pugixml.googlecode.com/svn/trunk@436 99668b35-9821-0410-8761-19e4c4f06640
This commit is contained in:
arseny.kapoulkine 2010-05-20 18:06:58 +00:00
parent d3195470ba
commit 4878d937d9

View File

@ -626,3 +626,27 @@ TEST(document_load_buffer_empty)
CHECK(doc.load_buffer_inplace_own(0, 0, parse_default, encoding) && !doc.first_child()); CHECK(doc.load_buffer_inplace_own(0, 0, parse_default, encoding) && !doc.first_child());
} }
} }
TEST(document_progressive_truncation)
{
char* original_data;
size_t original_size;
CHECK(load_file_in_memory("tests/data/utftest_utf8.xml", original_data, original_size));
for (size_t i = 1; i < original_size; ++i)
{
char* truncated_data = new char[i];
memcpy(truncated_data, original_data, i);
xml_document doc;
bool result = doc.load_buffer(truncated_data, i);
// some truncate locations are parseable - those that come after declaration, declaration + doctype, declaration + doctype + comment and eof
CHECK(((i - 21) < 3 || (i - 66) < 3 || (i - 95) < 3 || i >= 3325) ? result : !result);
delete[] truncated_data;
}
delete[] original_data;
}