ソースを参照

Test XML encoding with UTF-8 character validation

This creates a unit test for cmXMLSafe.  See issue #10003.
Brad King 16 年 前
コミット
f5ac85a29e
2 ファイル変更48 行追加0 行削除
  1. 1 0
      Tests/CMakeLib/CMakeLists.txt
  2. 47 0
      Tests/CMakeLib/testXMLSafe.cxx

+ 1 - 0
Tests/CMakeLib/CMakeLists.txt

@@ -7,6 +7,7 @@ include_directories(
 set(CMakeLib_TESTS
   testUTF8
   testXMLParser
+  testXMLSafe
   )
 
 configure_file(${CMAKE_CURRENT_SOURCE_DIR}/testXMLParser.h.in

+ 47 - 0
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;
+}