summaryrefslogtreecommitdiff
path: root/projects/SelfTest/IntrospectiveTests/Xml.tests.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'projects/SelfTest/IntrospectiveTests/Xml.tests.cpp')
-rw-r--r--projects/SelfTest/IntrospectiveTests/Xml.tests.cpp64
1 files changed, 33 insertions, 31 deletions
diff --git a/projects/SelfTest/IntrospectiveTests/Xml.tests.cpp b/projects/SelfTest/IntrospectiveTests/Xml.tests.cpp
index c3886ab2..bf6c8602 100644
--- a/projects/SelfTest/IntrospectiveTests/Xml.tests.cpp
+++ b/projects/SelfTest/IntrospectiveTests/Xml.tests.cpp
@@ -40,10 +40,11 @@ TEST_CASE( "XmlEncode", "[XML]" ) {
}
// Thanks to Peter Bindels (dascandy) for some of the tests
-TEST_CASE("XmlEncode: UTF-8", "[XML][UTF-8]") {
+TEST_CASE("XmlEncode: UTF-8", "[XML][UTF-8][approvals]") {
+#define ESC(lit) (char*)(lit)
SECTION("Valid utf-8 strings") {
- CHECK(encode(u8"Here be 👾") == u8"Here be 👾");
- CHECK(encode(u8"Å¡Å¡") == u8"Å¡Å¡");
+ CHECK(encode(ESC(u8"Here be 👾")) == ESC(u8"Here be 👾"));
+ CHECK(encode(ESC(u8"Å¡Å¡")) == ESC(u8"Å¡Å¡"));
CHECK(encode("\xDF\xBF") == "\xDF\xBF"); // 0x7FF
CHECK(encode("\xE0\xA0\x80") == "\xE0\xA0\x80"); // 0x800
@@ -55,18 +56,18 @@ TEST_CASE("XmlEncode: UTF-8", "[XML][UTF-8]") {
}
SECTION("Invalid utf-8 strings") {
SECTION("Various broken strings") {
- CHECK(encode("Here \xFF be 👾") == u8"Here \\xFF be 👾");
+ CHECK(encode(ESC("Here \xFF be \xF0\x9F\x91\xBE")) == ESC(u8"Here \\xFF be 👾"));
CHECK(encode("\xFF") == "\\xFF");
- CHECK(encode("\xC5\xC5\xA0") == u8"\\xC5Å ");
- CHECK(encode("\xF4\x90\x80\x80") == u8"\\xF4\\x90\\x80\\x80"); // 0x110000 -- out of unicode range
+ CHECK(encode("\xC5\xC5\xA0") == ESC(u8"\\xC5Å "));
+ CHECK(encode("\xF4\x90\x80\x80") == ESC(u8"\\xF4\\x90\\x80\\x80")); // 0x110000 -- out of unicode range
}
SECTION("Overlong encodings") {
- CHECK(encode("\xC0\x80") == u8"\\xC0\\x80"); // \0
- CHECK(encode("\xF0\x80\x80\x80") == u8"\\xF0\\x80\\x80\\x80"); // Super-over-long \0
- CHECK(encode("\xC1\xBF") == u8"\\xC1\\xBF"); // ASCII char as UTF-8 (0x7F)
- CHECK(encode("\xE0\x9F\xBF") == u8"\\xE0\\x9F\\xBF"); // 0x7FF
- CHECK(encode("\xF0\x8F\xBF\xBF") == u8"\\xF0\\x8F\\xBF\\xBF"); // 0xFFFF
+ CHECK(encode("\xC0\x80") == "\\xC0\\x80"); // \0
+ CHECK(encode("\xF0\x80\x80\x80") == "\\xF0\\x80\\x80\\x80"); // Super-over-long \0
+ CHECK(encode("\xC1\xBF") == "\\xC1\\xBF"); // ASCII char as UTF-8 (0x7F)
+ CHECK(encode("\xE0\x9F\xBF") == "\\xE0\\x9F\\xBF"); // 0x7FF
+ CHECK(encode("\xF0\x8F\xBF\xBF") == "\\xF0\\x8F\\xBF\\xBF"); // 0xFFFF
}
// Note that we actually don't modify surrogate pairs, as we do not do strict checking
@@ -78,35 +79,36 @@ TEST_CASE("XmlEncode: UTF-8", "[XML][UTF-8]") {
}
SECTION("Invalid start byte") {
- CHECK(encode("\x80") == u8"\\x80");
- CHECK(encode("\x81") == u8"\\x81");
- CHECK(encode("\xBC") == u8"\\xBC");
- CHECK(encode("\xBF") == u8"\\xBF");
+ CHECK(encode("\x80") == "\\x80");
+ CHECK(encode("\x81") == "\\x81");
+ CHECK(encode("\xBC") == "\\xBC");
+ CHECK(encode("\xBF") == "\\xBF");
// Out of range
- CHECK(encode("\xF5\x80\x80\x80") == u8"\\xF5\\x80\\x80\\x80");
- CHECK(encode("\xF6\x80\x80\x80") == u8"\\xF6\\x80\\x80\\x80");
- CHECK(encode("\xF7\x80\x80\x80") == u8"\\xF7\\x80\\x80\\x80");
+ CHECK(encode("\xF5\x80\x80\x80") == "\\xF5\\x80\\x80\\x80");
+ CHECK(encode("\xF6\x80\x80\x80") == "\\xF6\\x80\\x80\\x80");
+ CHECK(encode("\xF7\x80\x80\x80") == "\\xF7\\x80\\x80\\x80");
}
SECTION("Missing continuation byte(s)") {
// Missing first continuation byte
- CHECK(encode("\xDE") == u8"\\xDE");
- CHECK(encode("\xDF") == u8"\\xDF");
- CHECK(encode("\xE0") == u8"\\xE0");
- CHECK(encode("\xEF") == u8"\\xEF");
- CHECK(encode("\xF0") == u8"\\xF0");
- CHECK(encode("\xF4") == u8"\\xF4");
+ CHECK(encode("\xDE") == "\\xDE");
+ CHECK(encode("\xDF") == "\\xDF");
+ CHECK(encode("\xE0") == "\\xE0");
+ CHECK(encode("\xEF") == "\\xEF");
+ CHECK(encode("\xF0") == "\\xF0");
+ CHECK(encode("\xF4") == "\\xF4");
// Missing second continuation byte
- CHECK(encode("\xE0\x80") == u8"\\xE0\\x80");
- CHECK(encode("\xE0\xBF") == u8"\\xE0\\xBF");
- CHECK(encode("\xE1\x80") == u8"\\xE1\\x80");
- CHECK(encode("\xF0\x80") == u8"\\xF0\\x80");
- CHECK(encode("\xF4\x80") == u8"\\xF4\\x80");
+ CHECK(encode("\xE0\x80") == "\\xE0\\x80");
+ CHECK(encode("\xE0\xBF") == "\\xE0\\xBF");
+ CHECK(encode("\xE1\x80") == "\\xE1\\x80");
+ CHECK(encode("\xF0\x80") == "\\xF0\\x80");
+ CHECK(encode("\xF4\x80") == "\\xF4\\x80");
// Missing third continuation byte
- CHECK(encode("\xF0\x80\x80") == u8"\\xF0\\x80\\x80");
- CHECK(encode("\xF4\x80\x80") == u8"\\xF4\\x80\\x80");
+ CHECK(encode("\xF0\x80\x80") == "\\xF0\\x80\\x80");
+ CHECK(encode("\xF4\x80\x80") == "\\xF4\\x80\\x80");
}
}
+#undef ESC
}