summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFrancis Visoiu Mistrih <francisvm@yahoo.com>2017-12-21 17:14:13 +0000
committerFrancis Visoiu Mistrih <francisvm@yahoo.com>2017-12-21 17:14:13 +0000
commitc9a845142572ff09cadda9f80610835ad01781e0 (patch)
tree106566bb7be8f91c233bcc74de20163c4cf3ac4c
parentb2b961a3dbd1f30b43131676c7dcba340ac0ae08 (diff)
downloadbcm5719-llvm-c9a845142572ff09cadda9f80610835ad01781e0.tar.gz
bcm5719-llvm-c9a845142572ff09cadda9f80610835ad01781e0.zip
[YAML] Refactor escaping unittests
llvm-svn: 321284
-rw-r--r--llvm/include/llvm/Support/YAMLTraits.h2
-rw-r--r--llvm/unittests/Support/YAMLIOTest.cpp135
2 files changed, 25 insertions, 112 deletions
diff --git a/llvm/include/llvm/Support/YAMLTraits.h b/llvm/include/llvm/Support/YAMLTraits.h
index f63fdf9a35b..674c78a1169 100644
--- a/llvm/include/llvm/Support/YAMLTraits.h
+++ b/llvm/include/llvm/Support/YAMLTraits.h
@@ -1725,7 +1725,7 @@ template <typename T> struct StdMapStringCustomMappingTraitsImpl {
template <> struct ScalarTraits<Type> { \
static void output(const Type &Value, void *ctx, raw_ostream &Out); \
static StringRef input(StringRef Scalar, void *ctxt, Type &Value); \
- static QuotingType mustQuote(StringRef) { return MustQuote; } \
+ static QuotingType mustQuote(StringRef) { return MustQuote; } \
}; \
} \
}
diff --git a/llvm/unittests/Support/YAMLIOTest.cpp b/llvm/unittests/Support/YAMLIOTest.cpp
index 650b02cdea9..914b22f0fcd 100644
--- a/llvm/unittests/Support/YAMLIOTest.cpp
+++ b/llvm/unittests/Support/YAMLIOTest.cpp
@@ -7,6 +7,7 @@
//
//===----------------------------------------------------------------------===//
+#include "llvm/ADT/StringRef.h"
#include "llvm/ADT/Twine.h"
#include "llvm/Support/Casting.h"
#include "llvm/Support/Endian.h"
@@ -2450,122 +2451,34 @@ TEST(YAMLIO, TestCustomMappingStruct) {
EXPECT_EQ(4, y["bar"].bar);
}
-TEST(YAMLIO, InvalidInput) {
- // polluting 1 value in the sequence
- Input yin("---\n- foo: 3\n bar: 5\n1\n- foo: 3\n bar: 5\n...\n");
- std::vector<FooBar> Data;
- yin >> Data;
- EXPECT_TRUE((bool)yin.error());
-}
-
-TEST(YAMLIO, TestEscapedSingleQuote) {
- std::string Id = "@abc@";
-
- std::string out;
- llvm::raw_string_ostream ostr(out);
- Output xout(ostr, nullptr, 0);
-
- llvm::yaml::EmptyContext Ctx;
- yamlize(xout, Id, true, Ctx);
-
- ostr.flush();
- EXPECT_EQ("'@abc@'", out);
-}
-
-TEST(YAMLIO, TestEscapedNoQuote) {
- std::string Id = "abc/";
-
- std::string out;
- llvm::raw_string_ostream ostr(out);
- Output xout(ostr, nullptr, 0);
-
- llvm::yaml::EmptyContext Ctx;
- yamlize(xout, Id, true, Ctx);
-
- ostr.flush();
- EXPECT_EQ("abc/", out);
-}
-
-TEST(YAMLIO, TestEscapedDoubleQuoteNonPrintable) {
- std::string Id = "\01@abc@";
-
- std::string out;
- llvm::raw_string_ostream ostr(out);
- Output xout(ostr, nullptr, 0);
-
- llvm::yaml::EmptyContext Ctx;
- yamlize(xout, Id, true, Ctx);
-
- ostr.flush();
- EXPECT_EQ("\"\\x01@abc@\"", out);
-}
-
-TEST(YAMLIO, TestEscapedDoubleQuoteInsideSingleQuote) {
- std::string Id = "abc\"fdf";
-
- std::string out;
- llvm::raw_string_ostream ostr(out);
- Output xout(ostr, nullptr, 0);
-
- llvm::yaml::EmptyContext Ctx;
- yamlize(xout, Id, true, Ctx);
-
- ostr.flush();
- EXPECT_EQ("'abc\"fdf'", out);
-}
-
-TEST(YAMLIO, TestEscapedDoubleQuoteInsideDoubleQuote) {
- std::string Id = "\01bc\"fdf";
-
- std::string out;
- llvm::raw_string_ostream ostr(out);
- Output xout(ostr, nullptr, 0);
-
- llvm::yaml::EmptyContext Ctx;
- yamlize(xout, Id, true, Ctx);
-
- ostr.flush();
- EXPECT_EQ("\"\\x01bc\\\"fdf\"", out);
-}
-
-TEST(YAMLIO, TestEscapedSingleQuoteInsideSingleQuote) {
- std::string Id = "abc'fdf";
-
- std::string out;
- llvm::raw_string_ostream ostr(out);
- Output xout(ostr, nullptr, 0);
-
- llvm::yaml::EmptyContext Ctx;
- yamlize(xout, Id, true, Ctx);
-
- ostr.flush();
- EXPECT_EQ("'abc''fdf'", out);
-}
-
-TEST(YAMLIO, TestEscapedUTF8SingleQuoteInsideDoubleQuote) {
- std::string Id = "parameter 'параметр' is unused";
-
- std::string out;
- llvm::raw_string_ostream ostr(out);
- Output xout(ostr, nullptr, 0);
-
- llvm::yaml::EmptyContext Ctx;
- yamlize(xout, Id, true, Ctx);
-
- ostr.flush();
- EXPECT_EQ("\"parameter 'параметр' is unused\"", out);
-}
-
-TEST(YAMLIO, TestEscapedUTF8) {
- std::string Id = "/*параметр*/";
-
+static void TestEscaped(llvm::StringRef Input, llvm::StringRef Expected) {
std::string out;
llvm::raw_string_ostream ostr(out);
Output xout(ostr, nullptr, 0);
llvm::yaml::EmptyContext Ctx;
- yamlize(xout, Id, true, Ctx);
+ yamlize(xout, Input, true, Ctx);
ostr.flush();
- EXPECT_EQ("\"/*параметр*/\"", out);
+ EXPECT_EQ(Expected, out);
+}
+
+TEST(YAMLIO, TestEscaped) {
+ // Single quote
+ TestEscaped("@abc@", "'@abc@'");
+ // No quote
+ TestEscaped("abc/", "abc/");
+ // Double quote non-printable
+ TestEscaped("\01@abc@", "\"\\x01@abc@\"");
+ // Double quote inside single quote
+ TestEscaped("abc\"fdf", "'abc\"fdf'");
+ // Double quote inside double quote
+ TestEscaped("\01bc\"fdf", "\"\\x01bc\\\"fdf\"");
+ // Single quote inside single quote
+ TestEscaped("abc'fdf", "'abc''fdf'");
+ // UTF8
+ TestEscaped("/*параметр*/", "\"/*параметр*/\"");
+ // UTF8 with single quote inside double quote
+ TestEscaped("parameter 'параметр' is unused",
+ "\"parameter 'параметр' is unused\"");
}
OpenPOWER on IntegriCloud