diff options
| -rw-r--r-- | tests/test_document.cpp | 70 | 
1 files changed, 54 insertions, 16 deletions
| diff --git a/tests/test_document.cpp b/tests/test_document.cpp index bb86992..d67f646 100644 --- a/tests/test_document.cpp +++ b/tests/test_document.cpp @@ -1,4 +1,5 @@  #define _CRT_SECURE_NO_WARNINGS +#define _SCL_SECURE_NO_WARNINGS  #define _CRT_NONSTDC_NO_DEPRECATE 0  #include <string.h> // because Borland's STL is braindead, we have to include <string.h> _before_ <string> in order to get memcpy @@ -14,6 +15,7 @@  #include <sstream>  #include <string> +#include <algorithm>  #ifdef __MINGW32__  #	include <io.h> // for unlink in C++0x mode @@ -210,6 +212,14 @@ TEST(document_load_file_error_previous)  	CHECK(!doc.first_child());  } +TEST(document_load_file_wide_ascii) +{ +	pugi::xml_document doc; + +	CHECK(doc.load_file(L"tests/data/small.xml")); +	CHECK_NODE(doc, STR("<node />")); +} +  TEST_XML(document_save, "<node/>")  {  	xml_writer_string writer; @@ -313,29 +323,57 @@ TEST_XML(document_save_declaration_present_last, "<node/>")  	CHECK(writer.as_string() == STR("<?xml version=\"1.0\"?>\n<node />\n<?xml encoding=\"utf8\"?>\n"));  } -TEST_XML(document_save_file, "<node/>") +struct temp_file  { -#ifdef __unix -	char path[] = "/tmp/pugiXXXXXX"; +	char path[512]; +	int fd; +	 +	temp_file(): fd(0) +	{ +	#ifdef __unix +		strcpy(path, "/tmp/pugiXXXXXX"); + +		fd = mkstemp(path); +		CHECK(fd != -1); +	#elif defined(__CELLOS_LV2__) +		path[0] = 0; // no temporary file support +	#else +		tmpnam(path); +	#endif +	} -	int fd = mkstemp(path); -	CHECK(fd != -1); -#elif defined(__CELLOS_LV2__) -	const char* path = ""; // no temporary file support -#else -	const char* path = tmpnam(0); -#endif +	~temp_file() +	{ +		CHECK(unlink(path) == 0); + +	#ifdef __unix +		CHECK(close(fd) == 0); +	#endif +	} +}; + +TEST_XML(document_save_file, "<node/>") +{ +	temp_file f; -	CHECK(doc.save_file(path)); +	CHECK(doc.save_file(f.path)); -	CHECK(doc.load_file(path, pugi::parse_default | pugi::parse_declaration)); +	CHECK(doc.load_file(f.path, pugi::parse_default | pugi::parse_declaration));  	CHECK_NODE(doc, STR("<?xml version=\"1.0\"?><node />")); +} -	CHECK(unlink(path) == 0); +TEST_XML(document_save_file_wide, "<node/>") +{ +	temp_file f; -#ifdef __unix -	CHECK(close(fd) == 0); -#endif +	// widen the path +	wchar_t wpath[32]; +	std::copy(f.path, f.path + strlen(f.path) + 1, wpath + 0); + +	CHECK(doc.save_file(wpath)); + +	CHECK(doc.load_file(f.path, pugi::parse_default | pugi::parse_declaration)); +	CHECK_NODE(doc, STR("<?xml version=\"1.0\"?><node />"));  }  TEST_XML(document_save_file_error, "<node/>") | 
