summaryrefslogtreecommitdiffstats
path: root/Tests/CMakeLib/testXMLSafe.cxx
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2009-12-08 20:44:45 (GMT)
committerBrad King <brad.king@kitware.com>2009-12-08 20:44:45 (GMT)
commitf5ac85a29eebd90c5e30f71d3daaf7475634b75c (patch)
tree4884d35f0a98a29a06de62fef710595ab456b487 /Tests/CMakeLib/testXMLSafe.cxx
parent0a64936f49f3bf23697c236397b7d763a81dfebd (diff)
downloadCMake-f5ac85a29eebd90c5e30f71d3daaf7475634b75c.zip
CMake-f5ac85a29eebd90c5e30f71d3daaf7475634b75c.tar.gz
CMake-f5ac85a29eebd90c5e30f71d3daaf7475634b75c.tar.bz2
Test XML encoding with UTF-8 character validation
This creates a unit test for cmXMLSafe. See issue #10003.
Diffstat (limited to 'Tests/CMakeLib/testXMLSafe.cxx')
-rw-r--r--Tests/CMakeLib/testXMLSafe.cxx47
1 files changed, 47 insertions, 0 deletions
diff --git a/Tests/CMakeLib/testXMLSafe.cxx b/Tests/CMakeLib/testXMLSafe.cxx
new file mode 100644
index 0000000..60442fa
--- /dev/null
+++ b/Tests/CMakeLib/testXMLSafe.cxx
@@ -0,0 +1,47 @@
+/*============================================================================
+ CMake - Cross Platform Makefile Generator
+ Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
+
+ Distributed under the OSI-approved BSD License (the "License");
+ see accompanying file Copyright.txt for details.
+
+ This software is distributed WITHOUT ANY WARRANTY; without even the
+ implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ See the License for more information.
+============================================================================*/
+#include <cmXMLSafe.h>
+
+#include "cmStandardIncludes.h"
+
+struct test_pair
+{
+ const char* in;
+ const char* out;
+};
+
+static test_pair const pairs[] = {
+ {"copyright \xC2\xA9", "copyright \xC2\xA9"},
+ {"form-feed \f", "form-feed [NON-XML-CHAR-0xC]"},
+ {"angles <>", "angles &lt;&gt;"},
+ {"ampersand &", "ampersand &amp;"},
+ {"bad-byte \x80", "bad-byte [NON-UTF-8-BYTE-0x80]"},
+ {0,0}
+};
+
+int testXMLSafe(int, char*[])
+{
+ int result = 0;
+ for(test_pair const* p = pairs; p->in; ++p)
+ {
+ cmXMLSafe xs(p->in);
+ cmOStringStream oss;
+ oss << xs;
+ std::string out = oss.str();
+ if(out != p->out)
+ {
+ printf("expected [%s], got [%s]\n", p->out, out.c_str());
+ result = 1;
+ }
+ }
+ return result;
+}