浏览代码

Tests: testStringAlgorithms: Add cmTrimWhitespace, cmEscapeQuotes, cmTokenize

Extend the testStringAlgorithms test with tests for `cmTrimWhitespace`,
`cmEscapeQuotes` and `cmTokenize`.
Sebastian Holtermann 6 年之前
父节点
当前提交
959b97a27f
共有 1 个文件被更改,包括 37 次插入0 次删除
  1. 37 0
      Tests/CMakeLib/testStringAlgorithms.cxx

+ 37 - 0
Tests/CMakeLib/testStringAlgorithms.cxx

@@ -37,6 +37,28 @@ int testStringAlgorithms(int /*unused*/, char* /*unused*/ [])
     }
   };
 
+  // ----------------------------------------------------------------------
+  // Test cmTrimWhitespace
+  {
+    std::string base = "base";
+    std::string spaces = "  \f\f\n\n\r\r\t\t\v\v";
+    assert_string(cmTrimWhitespace(spaces + base), base,
+                  "cmTrimWhitespace front");
+    assert_string(cmTrimWhitespace(base + spaces), base,
+                  "cmTrimWhitespace back");
+    assert_string(cmTrimWhitespace(spaces + base + spaces), base,
+                  "cmTrimWhitespace front and back");
+  }
+
+  // ----------------------------------------------------------------------
+  // Test cmEscapeQuotes
+  {
+    assert_string(cmEscapeQuotes("plain"), "plain", "cmEscapeQuotes plain");
+    std::string base = "\"base\"\"";
+    std::string result = "\\\"base\\\"\\\"";
+    assert_string(cmEscapeQuotes(base), result, "cmEscapeQuotes escaped");
+  }
+
   // ----------------------------------------------------------------------
   // Test cmJoin
   {
@@ -51,6 +73,21 @@ int testStringAlgorithms(int /*unused*/, char* /*unused*/ [])
                   "cmJoin std::vector long sep");
   }
 
+  // ----------------------------------------------------------------------
+  // Test cmTokenize
+  {
+    typedef std::vector<std::string> VT;
+    assert_ok(cmTokenize("", ";") == VT{ "" }, "cmTokenize empty");
+    assert_ok(cmTokenize(";", ";") == VT{ "" }, "cmTokenize sep");
+    assert_ok(cmTokenize("abc", ";") == VT{ "abc" }, "cmTokenize item");
+    assert_ok(cmTokenize("abc;", ";") == VT{ "abc" }, "cmTokenize item sep");
+    assert_ok(cmTokenize(";abc", ";") == VT{ "abc" }, "cmTokenize sep item");
+    assert_ok(cmTokenize("abc;;efg", ";") == VT{ "abc", "efg" },
+              "cmTokenize item sep sep item");
+    assert_ok(cmTokenize("a1;a2;a3;a4", ";") == VT{ "a1", "a2", "a3", "a4" },
+              "cmTokenize multiple items");
+  }
+
   // ----------------------------------------------------------------------
   // Test cmStrCat
   {