From 464d0f4ff9e6d30be6a5ccf9da571ce8596840fd Mon Sep 17 00:00:00 2001
From: "arseny.kapoulkine"
 <arseny.kapoulkine@99668b35-9821-0410-8761-19e4c4f06640>
Date: Sun, 9 May 2010 17:53:59 +0000
Subject: Added empty stream/buffer tests, fixed null buffer parsing in wchar_t
 mode

git-svn-id: http://pugixml.googlecode.com/svn/trunk@397 99668b35-9821-0410-8761-19e4c4f06640
---
 tests/test_document.cpp | 44 ++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 44 insertions(+)

(limited to 'tests')

diff --git a/tests/test_document.cpp b/tests/test_document.cpp
index 97ba1d9..34d1ad1 100644
--- a/tests/test_document.cpp
+++ b/tests/test_document.cpp
@@ -71,6 +71,15 @@ TEST(document_load_stream_error)
 	CHECK(doc.load(iss).status == status_out_of_memory);
 }
 
+TEST(document_load_stream_empty)
+{
+	std::istringstream iss;
+
+	pugi::xml_document doc;
+	doc.load(iss); // parse result depends on STL implementation
+	CHECK(!doc.first_child());
+}
+
 TEST(document_load_stream_wide)
 {
 	pugi::xml_document doc;
@@ -571,3 +580,38 @@ TEST(document_convert_invalid_utf16)
 	CHECK(test_parse_fail("\x00<\xde\x24", 4, encoding_utf16_be));
 	CHECK(test_parse_fail("<\x00\x24\xde", 4, encoding_utf16_le));
 }
+
+TEST(document_load_buffer_empty)
+{
+	encoding_t encodings[] =
+	{
+		encoding_auto,
+		encoding_utf8,
+		encoding_utf16_le,
+		encoding_utf16_be,
+		encoding_utf16,
+		encoding_utf32_le,
+		encoding_utf32_be,
+		encoding_utf32,
+		encoding_wchar
+	};
+
+	char buffer[1];
+
+	for (unsigned int i = 0; i < sizeof(encodings) / sizeof(encodings[0]); ++i)
+	{
+		encoding_t encoding = encodings[i];
+
+		xml_document doc;
+		CHECK(doc.load_buffer(buffer, 0, parse_default, encoding) && !doc.first_child());
+		CHECK(doc.load_buffer(0, 0, parse_default, encoding) && !doc.first_child());
+
+		CHECK(doc.load_buffer_inplace(buffer, 0, parse_default, encoding) && !doc.first_child());
+		CHECK(doc.load_buffer_inplace(0, 0, parse_default, encoding) && !doc.first_child());
+
+		void* own_buffer = pugi::get_memory_allocation_function()(1);
+
+		CHECK(doc.load_buffer_inplace_own(own_buffer, 0, parse_default, encoding) && !doc.first_child());
+		CHECK(doc.load_buffer_inplace_own(0, 0, parse_default, encoding) && !doc.first_child());
+	}
+}
-- 
cgit v1.2.3