aboutsummaryrefslogtreecommitdiff
path: root/thirdparty/ryml/test/test_double_quoted.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'thirdparty/ryml/test/test_double_quoted.cpp')
-rw-r--r--thirdparty/ryml/test/test_double_quoted.cpp610
1 files changed, 0 insertions, 610 deletions
diff --git a/thirdparty/ryml/test/test_double_quoted.cpp b/thirdparty/ryml/test/test_double_quoted.cpp
deleted file mode 100644
index 6c3915873..000000000
--- a/thirdparty/ryml/test/test_double_quoted.cpp
+++ /dev/null
@@ -1,610 +0,0 @@
-#include "./test_group.hpp"
-
-namespace c4 {
-namespace yml {
-
-TEST(double_quoted, escaped_chars)
-{
- csubstr yaml = R"("\\\"\n\r\t\ \/\ \0\b\f\a\v\e\_\N\L\P")";
- // build the string like this because some of the characters are
- // filtered out under the double quotes
- std::string expected;
- expected += '\\';
- expected += '"';
- expected += '\n';
- expected += '\r';
- expected += '\t';
- expected += '\t';
- expected += '/';
- expected += ' ';
- expected += '\0';
- expected += '\b';
- expected += '\f';
- expected += '\a';
- expected += '\v';
- expected += INT8_C(0x1b); // \e
- //
- // wrap explicitly to avoid overflow
- expected += _RYML_CHCONST(-0x3e, 0xc2); // \_ (1)
- expected += _RYML_CHCONST(-0x60, 0xa0); // \_ (2)
- //
- expected += _RYML_CHCONST(-0x3e, 0xc2); // \N (1)
- expected += _RYML_CHCONST(-0x7b, 0x85); // \N (2)
- //
- expected += _RYML_CHCONST(-0x1e, 0xe2); // \L (1)
- expected += _RYML_CHCONST(-0x80, 0x80); // \L (2)
- expected += _RYML_CHCONST(-0x58, 0xa8); // \L (3)
- //
- expected += _RYML_CHCONST(-0x1e, 0xe2); // \P (1)
- expected += _RYML_CHCONST(-0x80, 0x80); // \P (2)
- expected += _RYML_CHCONST(-0x57, 0xa9); // \P (3)
- //
- Tree t = parse_in_arena(yaml);
- csubstr v = t.rootref().val();
- std::string actual = {v.str, v.len};
- EXPECT_EQ(actual, expected);
-}
-
-TEST(double_quoted, test_suite_3RLN)
-{
- csubstr yaml = R"(---
-"1 leading
- \ttab"
----
-"2 leading
- \ tab"
----
-"3 leading
- tab"
----
-"4 leading
- \t tab"
----
-"5 leading
- \ tab"
----
-"6 leading
- tab"
-)";
- test_check_emit_check(yaml, [](Tree const &t){
- EXPECT_EQ(t.docref(0).val(), "1 leading \ttab");
- EXPECT_EQ(t.docref(1).val(), "2 leading \ttab");
- EXPECT_EQ(t.docref(2).val(), "3 leading tab");
- EXPECT_EQ(t.docref(3).val(), "4 leading \t tab");
- EXPECT_EQ(t.docref(4).val(), "5 leading \t tab");
- EXPECT_EQ(t.docref(5).val(), "6 leading tab");
- });
-}
-
-TEST(double_quoted, test_suite_5GBF)
-{
- csubstr yaml = R"(
-Folding:
- "Empty line
-
- as a line feed"
-Folding2:
- "Empty line
-
- as a line feed"
-Folding3:
- "Empty line
-
- as a line feed"
-)";
- test_check_emit_check(yaml, [](Tree const &t){
- ASSERT_TRUE(t.rootref().is_map());
- EXPECT_EQ(t["Folding"].val(), csubstr("Empty line\nas a line feed"));
- EXPECT_EQ(t["Folding2"].val(), csubstr("Empty line\nas a line feed"));
- EXPECT_EQ(t["Folding3"].val(), csubstr("Empty line\nas a line feed"));
- });
-}
-
-TEST(double_quoted, test_suite_6SLA)
-{
- csubstr yaml = R"(
-"foo\nbar:baz\tx \\$%^&*()x": 23
-'x\ny:z\tx $%^&*()x': 24
-)";
- test_check_emit_check(yaml, [](Tree const &t){
- ASSERT_TRUE(t.rootref().is_map());
- ASSERT_TRUE(t.rootref().has_child("foo\nbar:baz\tx \\$%^&*()x"));
- ASSERT_TRUE(t.rootref().has_child("x\\ny:z\\tx $%^&*()x"));
- ASSERT_EQ(t["foo\nbar:baz\tx \\$%^&*()x"].val(), csubstr("23"));
- ASSERT_EQ(t["x\\ny:z\\tx $%^&*()x"].val(), csubstr("24"));
- });
-}
-
-TEST(double_quoted, test_suite_6WPF)
-{
- csubstr yaml = R"(
-"
- foo
-
- bar
-
- baz
-"
-)";
- test_check_emit_check(yaml, [](Tree const &t){
- ASSERT_TRUE(t.rootref().is_val());
- EXPECT_EQ(t.rootref().val(), csubstr(" foo\nbar\nbaz "));
- });
-}
-
-TEST(double_quoted, test_suite_9TFX)
-{
- csubstr yaml = R"(
-" 1st non-empty
-
- 2nd non-empty
- 3rd non-empty "
-)";
- test_check_emit_check(yaml, [](Tree const &t){
- ASSERT_TRUE(t.rootref().is_val());
- EXPECT_EQ(t.rootref().val(), csubstr(" 1st non-empty\n2nd non-empty 3rd non-empty "));
- });
-}
-
-TEST(double_quoted, test_suite_G4RS)
-{
- csubstr yaml = R"(---
-unicode: "\u263A\u2705\U0001D11E"
-control: "\b1998\t1999\t2000\n"
-#hex esc: "\x0d\x0a is \r\n"
-#---
-#- "\x0d\x0a is \r\n"
-#---
-#{hex esc: "\x0d\x0a is \r\n"}
-#---
-#["\x0d\x0a is \r\n"]
-)";
- test_check_emit_check(yaml, [](Tree const &t){
- EXPECT_EQ(t.docref(0)["unicode"].val(), csubstr(R"(☺✅𝄞)"));
- EXPECT_EQ(t.docref(0)["control"].val(), csubstr("\b1998\t1999\t2000\n"));
- //EXPECT_EQ(t.docref(0)["hex esc"].val(), csubstr("\r\n is \r\n")); TODO
- //EXPECT_EQ(t.docref(1)[0].val(), csubstr("\r\n is \r\n"));
- //EXPECT_EQ(t.docref(2)[0].val(), csubstr("\r\n is \r\n"));
- //EXPECT_EQ(t.docref(3)[0].val(), csubstr("\r\n is \r\n"));
- });
-}
-
-TEST(double_quoted, test_suite_KSS4)
-{
- csubstr yaml = R"(
----
-"quoted
-string"
---- "quoted
-string"
----
-- "quoted
- string"
----
-- "quoted
-string"
----
-"quoted
- string": "quoted
- string"
----
-"quoted
-string": "quoted
-string"
-)";
- test_check_emit_check(yaml, [](Tree const &t){
- EXPECT_EQ(t.docref(0).val(), "quoted string");
- EXPECT_EQ(t.docref(1).val(), "quoted string");
- EXPECT_EQ(t.docref(2)[0].val(), "quoted string");
- EXPECT_EQ(t.docref(3)[0].val(), "quoted string");
- EXPECT_EQ(t.docref(4)["quoted string"].val(), "quoted string");
- EXPECT_EQ(t.docref(5)["quoted string"].val(), "quoted string");
- });
-}
-
-TEST(double_quoted, test_suite_NAT4)
-{
- csubstr yaml = R"(
-a: '
- '
-b: '
- '
-c: "
- "
-d: "
- "
-e: '
-
- '
-f: "
-
- "
-g: '
-
-
- '
-h: "
-
-
- "
-)";
- test_check_emit_check(yaml, [](Tree const &t){
- EXPECT_EQ(t["a"].val(), csubstr(" "));
- EXPECT_EQ(t["b"].val(), csubstr(" "));
- EXPECT_EQ(t["c"].val(), csubstr(" "));
- EXPECT_EQ(t["d"].val(), csubstr(" "));
- EXPECT_EQ(t["e"].val(), csubstr("\n"));
- EXPECT_EQ(t["f"].val(), csubstr("\n"));
- EXPECT_EQ(t["g"].val(), csubstr("\n\n"));
- EXPECT_EQ(t["h"].val(), csubstr("\n\n"));
- });
-}
-
-TEST(double_quoted, test_suite_NP9H)
-{
- csubstr yaml = R"(
-"folded
-to a space,
-
-to a line feed, or \
- \ non-content"
-)";
- test_check_emit_check(yaml, [](Tree const &t){
- ASSERT_TRUE(t.rootref().is_val());
- EXPECT_EQ(t.rootref().val(), csubstr("folded to a space,\nto a line feed, or \t \tnon-content"));
- });
-}
-
-TEST(double_quoted, test_suite_Q8AD)
-{
- csubstr yaml = R"(
-"folded
-to a space,
-
-to a line feed, or \
- \ non-content"
-)";
- test_check_emit_check(yaml, [](Tree const &t){
- ASSERT_TRUE(t.rootref().is_val());
- EXPECT_EQ(t.rootref().val(), csubstr("folded to a space,\nto a line feed, or \t \tnon-content"));
- });
-}
-
-TEST(double_quoted, test_suite_R4YG)
-{
- csubstr yaml = R"(
-- "
-
-detected
-
-"
-
-)";
- test_check_emit_check(yaml, [](Tree const &t){
- EXPECT_EQ(t[0].val(), csubstr("\t\ndetected\n"));
- });
-}
-
-
-//-----------------------------------------------------------------------------
-
-void verify_error_is_reported(csubstr case_name, csubstr yaml, Location loc={})
-{
- SCOPED_TRACE(case_name);
- SCOPED_TRACE(yaml);
- Tree tree;
- ExpectError::do_check(&tree, [&](){
- parse_in_arena(yaml, &tree);
- }, loc);
-}
-
-TEST(double_quoted, error_on_unmatched_quotes)
-{
- verify_error_is_reported("map block", R"(foo: "'
-bar: "")");
- verify_error_is_reported("seq block", R"(- "'
-- "")");
- verify_error_is_reported("map flow", R"({foo: "', bar: ""})");
- verify_error_is_reported("seq flow", R"(["', ""])");
-}
-
-TEST(double_quoted, error_on_unmatched_quotes_with_escapes)
-{
- verify_error_is_reported("map block", R"(foo: "\"'
-bar: "")");
- verify_error_is_reported("seq block", R"(- "\"'
-- "")");
- verify_error_is_reported("map flow", R"({foo: "\"', bar: ""})");
- verify_error_is_reported("seq flow", R"(["\"', ""])");
-}
-
-TEST(double_quoted, error_on_unmatched_quotes_at_end)
-{
- verify_error_is_reported("map block", R"(foo: ""
-bar: "')");
- verify_error_is_reported("seq block", R"(- ""
-- "')");
- verify_error_is_reported("map flow", R"({foo: "", bar: "'})");
- verify_error_is_reported("seq flow", R"(["", "'])");
-}
-
-TEST(double_quoted, error_on_unmatched_quotes_at_end_with_escapes)
-{
- verify_error_is_reported("map block", R"(foo: ""
-bar: "\"')");
- verify_error_is_reported("seq block", R"(- ""
-- "\"')");
- verify_error_is_reported("map flow", R"({foo: "", bar: "\"'})");
- verify_error_is_reported("seq flow", R"(["", "\"'])");
-}
-
-TEST(double_quoted, error_on_unclosed_quotes)
-{
- verify_error_is_reported("map block", R"(foo: ",
-bar: what)");
- verify_error_is_reported("seq block", R"(- "
-- what)");
- verify_error_is_reported("map flow", R"({foo: ", bar: what})");
- verify_error_is_reported("seq flow", R"([", what])");
-}
-
-TEST(double_quoted, error_on_unclosed_quotes_with_escapes)
-{
- verify_error_is_reported("map block", R"(foo: "\",
-bar: what)");
- verify_error_is_reported("seq block", R"(- "\"
-- what)");
- verify_error_is_reported("map flow", R"({foo: "\", bar: what})");
- verify_error_is_reported("seq flow", R"(["\", what])");
-}
-
-TEST(double_quoted, error_on_unclosed_quotes_at_end)
-{
- verify_error_is_reported("map block", R"(foo: what
-bar: ")");
- verify_error_is_reported("seq block", R"(- what
-- ")");
- verify_error_is_reported("map flow", R"({foo: what, bar: "})");
- verify_error_is_reported("seq flow", R"([what, "])");
-}
-
-TEST(double_quoted, error_on_unclosed_quotes_at_end_with_escapes)
-{
- verify_error_is_reported("map block", R"(foo: what
-bar: "\")");
- verify_error_is_reported("seq block", R"(- what
-- "\")");
- verify_error_is_reported("map flow", R"({foo: what, bar: "\"})");
- verify_error_is_reported("seq flow", R"([what, "\"])");
-}
-
-TEST(double_quoted, error_on_bad_utf_codepoints)
-{
- verify_error_is_reported("incomplete \\x 0", R"(foo: "\x")");
- verify_error_is_reported("incomplete \\x 1", R"(foo: "\x1")");
- verify_error_is_reported("bad value \\x" , R"(foo: "\xko")");
- verify_error_is_reported("incomplete \\u 0", R"(foo: "\u")");
- verify_error_is_reported("incomplete \\u 1", R"(foo: "\u1")");
- verify_error_is_reported("incomplete \\u 2", R"(foo: "\u12")");
- verify_error_is_reported("incomplete \\u 3", R"(foo: "\u123")");
- verify_error_is_reported("bad value \\u" , R"(foo: "\ukoko")");
- verify_error_is_reported("incomplete \\U 0", R"(foo: "\U")");
- verify_error_is_reported("incomplete \\U 1", R"(foo: "\U1")");
- verify_error_is_reported("incomplete \\U 2", R"(foo: "\U12")");
- verify_error_is_reported("incomplete \\U 3", R"(foo: "\U123")");
- verify_error_is_reported("incomplete \\U 4", R"(foo: "\U1234")");
- verify_error_is_reported("incomplete \\U 5", R"(foo: "\U12345")");
- verify_error_is_reported("incomplete \\U 6", R"(foo: "\U123456")");
- verify_error_is_reported("incomplete \\U 7", R"(foo: "\U1234567")");
- verify_error_is_reported("bad value \\U" , R"(foo: "\Ukokokoko")");
-}
-
-TEST(double_quoted, github253)
-{
- {
- Tree tree;
- NodeRef root = tree.rootref();
- root |= MAP;
- root["t"] = "t't\\nt";
- root["t"] |= _WIP_VAL_DQUO;
- std::string s = emitrs_yaml<std::string>(tree);
- Tree tree2 = parse_in_arena(to_csubstr(s));
- EXPECT_EQ(tree2["t"].val(), tree["t"].val());
- }
- {
- Tree tree;
- NodeRef root = tree.rootref();
- root |= MAP;
- root["t"] = "t't\\nt";
- root["t"] |= _WIP_VAL_SQUO;
- std::string s = emitrs_yaml<std::string>(tree);
- Tree tree2 = parse_in_arena(to_csubstr(s));
- EXPECT_EQ(tree2["t"].val(), tree["t"].val());
- }
- {
- Tree tree;
- NodeRef root = tree.rootref();
- root |= MAP;
- root["s"] = "t\rt";
- root["s"] |= _WIP_VAL_DQUO;
- std::string s = emitrs_yaml<std::string>(tree);
- EXPECT_EQ(s, "s: \"t\\rt\"\n");
- Tree tree2 = parse_in_arena(to_csubstr(s));
- EXPECT_EQ(tree2["s"].val(), tree["s"].val());
- }
-}
-
-
-//-----------------------------------------------------------------------------
-//-----------------------------------------------------------------------------
-//-----------------------------------------------------------------------------
-
-CASE_GROUP(DOUBLE_QUOTED)
-{
-
-ADD_CASE_TO_GROUP("dquoted, only text",
-R"("Some text without any quotes."
-)",
- N(DOCVAL | VALQUO, "Some text without any quotes.")
-);
-
-ADD_CASE_TO_GROUP("dquoted, with single quotes",
-R"("Some text 'with single quotes'")",
- N(DOCVAL|VALQUO, "Some text 'with single quotes'")
-);
-
-ADD_CASE_TO_GROUP("dquoted, with double quotes",
-R"("Some \"text\" \"with double quotes\"")",
- N(DOCVAL|VALQUO, "Some \"text\" \"with double quotes\"")
-);
-
-ADD_CASE_TO_GROUP("dquoted, with single and double quotes",
-R"("Some text 'with single quotes' \"and double quotes\".")",
- N(DOCVAL|VALQUO, "Some text 'with single quotes' \"and double quotes\".")
-);
-
-ADD_CASE_TO_GROUP("dquoted, with escapes",
-R"("Some text with escapes \\n \\r \\t")",
- N(DOCVAL|VALQUO, "Some text with escapes \\n \\r \\t")
-);
-
-ADD_CASE_TO_GROUP("dquoted, with newline",
-R"("Some text with\nnewline")",
- N(DOCVAL|VALQUO, "Some text with\nnewline")
-);
-
-ADD_CASE_TO_GROUP("dquoted, with tabs",
-R"("\tSome\ttext\twith\ttabs\t")",
- N(DOCVAL|VALQUO, "\tSome\ttext\twith\ttabs\t")
-);
-
-ADD_CASE_TO_GROUP("dquoted, with tabs 4ZYM",
-R"(plain: text
- lines
-quoted: "text
- lines"
-block: |
- text
- lines
-)",
- L{N("plain", "text lines"),
- N(KEYVAL|VALQUO, "quoted", "text lines"),
- N(KEYVAL|VALQUO,"block", "text\n \tlines\n")}
-);
-
-ADD_CASE_TO_GROUP("dquoted, with tabs 7A4E",
-R"(" 1st non-empty
-
- 2nd non-empty
- 3rd non-empty ")",
- N(DOCVAL|VALQUO, " 1st non-empty\n2nd non-empty 3rd non-empty ")
-);
-
-ADD_CASE_TO_GROUP("dquoted, with tabs TL85",
-R"("
- foo
-
- bar
-
- baz
-")", N(DOCVAL|VALQUO, " foo\nbar\nbaz "));
-
-ADD_CASE_TO_GROUP("dquoted, all",
-R"("Several lines of text,
-containing 'single quotes' and \"double quotes\". \
-Escapes (like \\n) work.\nIn addition,
-newlines can be esc\
-aped to prevent them from being converted to a space.
-
-Newlines can also be added by leaving a blank line.
- Leading whitespace on lines is ignored."
-)",
- N(DOCVAL|VALQUO, "Several lines of text, containing 'single quotes' and \"double quotes\". Escapes (like \\n) work.\nIn addition, newlines can be escaped to prevent them from being converted to a space.\nNewlines can also be added by leaving a blank line. Leading whitespace on lines is ignored.")
-);
-
-ADD_CASE_TO_GROUP("dquoted, empty",
-R"("")",
- N(DOCVAL|VALQUO, "")
-);
-
-ADD_CASE_TO_GROUP("dquoted, blank",
-R"(
-- ""
-- " "
-- " "
-- " "
-- " "
-)",
- L{N(QV, ""), N(QV, " "), N(QV, " "), N(QV, " "), N(QV, " ")}
-);
-
-ADD_CASE_TO_GROUP("dquoted, numbers", // these should not be quoted when emitting
-R"(
-- -1
-- -1.0
-- +1.0
-- 1e-2
-- 1e+2
-)",
- L{N("-1"), N("-1.0"), N("+1.0"), N("1e-2"), N("1e+2")}
-);
-
-ADD_CASE_TO_GROUP("dquoted, trailing space",
-R"('a aaaa ')",
- N(DOCVAL|VALQUO, "a aaaa ")
-);
-
-ADD_CASE_TO_GROUP("dquoted, leading space",
-R"(' a aaaa')",
- N(DOCVAL|VALQUO, " a aaaa")
-);
-
-ADD_CASE_TO_GROUP("dquoted, trailing and leading space",
-R"(' 012345 ')",
- N(DOCVAL|VALQUO, " 012345 ")
-);
-
-ADD_CASE_TO_GROUP("dquoted, 1 dquote",
-R"("\"")",
- N(DOCVAL|VALQUO, "\"")
-);
-
-ADD_CASE_TO_GROUP("dquoted, 2 dquotes",
-R"("\"\"")",
- N(DOCVAL|VALQUO, "\"\"")
-);
-
-ADD_CASE_TO_GROUP("dquoted, 3 dquotes",
-R"("\"\"\"")",
- N(DOCVAL|VALQUO, "\"\"\"")
-);
-
-ADD_CASE_TO_GROUP("dquoted, 4 dquotes",
-R"("\"\"\"\"")",
- N(DOCVAL|VALQUO, "\"\"\"\"")
-);
-
-ADD_CASE_TO_GROUP("dquoted, 5 dquotes",
-R"("\"\"\"\"\"")",
- N(DOCVAL|VALQUO, "\"\"\"\"\"")
-);
-
-ADD_CASE_TO_GROUP("dquoted, example 2",
-R"("This is a key\nthat has multiple lines\n": and this is its value
-)",
- L{N(QK, "This is a key\nthat has multiple lines\n", "and this is its value")}
-);
-
-ADD_CASE_TO_GROUP("dquoted, example 2.1",
-R"("This is a key
-
-that has multiple lines
-
-": and this is its value
-)",
- L{N(QK, "This is a key\nthat has multiple lines\n", "and this is its value")}
-);
-}
-
-} // namespace yml
-} // namespace c4