aboutsummaryrefslogtreecommitdiff
path: root/thirdparty/ryml/test/test_seq_of_map.cpp
diff options
context:
space:
mode:
authorStefan Boberg <[email protected]>2026-02-23 11:19:52 +0100
committerGitHub Enterprise <[email protected]>2026-02-23 11:19:52 +0100
commit9aac0fd369b87e965fb34b5168646387de7ea1cd (patch)
tree367a820685a829adbab31cd1374b1af2cece4b7e /thirdparty/ryml/test/test_seq_of_map.cpp
parentchanged command names and descriptions to use class members instead of string... (diff)
downloadzen-9aac0fd369b87e965fb34b5168646387de7ea1cd.tar.xz
zen-9aac0fd369b87e965fb34b5168646387de7ea1cd.zip
implement yaml generation (#774)
this implements a yaml generation strategy similar to the JSON generation where we just build a string instead of building a ryml tree. This also removes the dependency on ryml for reduced binary/build times.
Diffstat (limited to 'thirdparty/ryml/test/test_seq_of_map.cpp')
-rw-r--r--thirdparty/ryml/test/test_seq_of_map.cpp348
1 files changed, 0 insertions, 348 deletions
diff --git a/thirdparty/ryml/test/test_seq_of_map.cpp b/thirdparty/ryml/test/test_seq_of_map.cpp
deleted file mode 100644
index 90bbcbd79..000000000
--- a/thirdparty/ryml/test/test_seq_of_map.cpp
+++ /dev/null
@@ -1,348 +0,0 @@
-#include "./test_group.hpp"
-#include "test_case.hpp"
-
-namespace c4 {
-namespace yml {
-
-TEST(seq_of_map, with_anchors)
-{
- {
- // this case is vanilla:
- csubstr yaml = R"(- a0: v0
- &a1 a1: v1
- &a2 a2: v2
- &a3 a3: v3
-- a0: w0
- *a1: w1
- *a2: w2
- *a3: w3
-- &seq
- a4: v4
-)";
- Tree t = parse_in_arena(yaml);
- EXPECT_EQ(emitrs_yaml<std::string>(t), yaml);
- ASSERT_EQ(t.rootref().num_children(), 3u);
- ASSERT_EQ(t[2].has_val_anchor(), true);
- ASSERT_EQ(t[2].val_anchor(), "seq");
- }
- {
- // but this case may fail because the indentation
- // may be set from the scalar instead of the tag:
- csubstr yaml = R"(- &a1 a1: v1
- &a2 a2: v2
- &a3 a3: v3
-- *a1: w1
- *a2: w2
- *a3: w3
-)";
- Tree t = parse_in_arena(yaml);
- EXPECT_EQ(emitrs_yaml<std::string>(t), yaml);
- }
-}
-
-TEST(seq_of_map, with_tags)
-{
- {
- // this case is vanilla:
- csubstr yaml = R"(- a0: v0
- !!str a1: v1
- !!str a2: v2
- !!str a3: v3
-- a0: w0
- !!int a1: !!str w1
- !!int a2: !!str w2
- !!int a3: !!str w3
-- a0: v1
- !foo a1: v1
- !foo a2: v2
- !foo a3: v3
-)";
- Tree t = parse_in_arena(yaml);
- EXPECT_EQ(emitrs_yaml<std::string>(t), yaml);
- }
- {
- // but this case may fail because the indentation
- // may be set from the scalar instead of the tag:
- csubstr yaml = R"(- !!str a1: v1
- !!str a2: v2
- !!str a3: v3
-- !!int a1: !!str w1
- !!int a2: !!str w2
- !!int a3: !!str w3
-- !foo a1: v1
- !foo a2: v2
- !foo a3: v3
-)";
- Tree t = parse_in_arena(yaml);
- EXPECT_EQ(emitrs_yaml<std::string>(t), yaml);
- }
-}
-
-TEST(seq_of_map, missing_scalars_v1)
-{
- Tree t = parse_in_arena(R"(a:
- - ~: ~
- - ~: ~
-)");
- #ifdef RYML_DBG
- print_tree(t);
- #endif
- ASSERT_EQ(t["a"].num_children(), 2u);
- ASSERT_EQ(t["a"][0].num_children(), 1u);
- EXPECT_EQ(t["a"][0].first_child().key(), "~");
- EXPECT_EQ(t["a"][0].first_child().val(), "~");
- ASSERT_EQ(t["a"][1].num_children(), 1u);
- EXPECT_EQ(t["a"][1].first_child().key(), "~");
- EXPECT_EQ(t["a"][1].first_child().val(), "~");
-}
-
-TEST(seq_of_map, missing_scalars_v2)
-{
- Tree t = parse_in_arena(R"(a:
- - :
- - :
-)");
- #ifdef RYML_DBG
- print_tree(t);
- #endif
- ASSERT_EQ(t["a"].num_children(), 2u);
- ASSERT_EQ(t["a"][0].num_children(), 1u);
- EXPECT_EQ(t["a"][0].first_child().key(), nullptr);
- EXPECT_EQ(t["a"][0].first_child().val(), nullptr);
- ASSERT_EQ(t["a"][1].num_children(), 1u);
- EXPECT_EQ(t["a"][1].first_child().key(), nullptr);
- EXPECT_EQ(t["a"][1].first_child().val(), nullptr);
-}
-
-TEST(seq_of_map, missing_scalars_v3)
-{
- Tree t = parse_in_arena(R"(a:
- - :
- - :
-)");
- #ifdef RYML_DBG
- print_tree(t);
- #endif
- ASSERT_EQ(t["a"].num_children(), 2u);
- ASSERT_EQ(t["a"][0].num_children(), 1u);
- EXPECT_EQ(t["a"][0].first_child().key(), nullptr);
- EXPECT_EQ(t["a"][0].first_child().val(), nullptr);
- ASSERT_EQ(t["a"][1].num_children(), 1u);
- EXPECT_EQ(t["a"][1].first_child().key(), nullptr);
- EXPECT_EQ(t["a"][1].first_child().val(), nullptr);
-}
-
-#ifdef RYML_WITH_TAB_TOKENS
-TEST(seq_of_map, test_suite_6BCT)
-{
- Tree t = parse_in_arena(R"(
-- foo0: bar0
-- foo1 : bar1
-- foo2 : bar2
-)");
- #ifdef RYML_DBG
- print_tree(t);
- #endif
- ASSERT_TRUE(t[0].is_map());
- ASSERT_TRUE(t[1].is_map());
- ASSERT_TRUE(t[2].is_map());
- EXPECT_EQ(t[0]["foo0"].val(), csubstr("bar0"));
- EXPECT_EQ(t[1]["foo1"].val(), csubstr("bar1"));
- EXPECT_EQ(t[2]["foo2"].val(), csubstr("bar2"));
-}
-#endif
-
-
-//-----------------------------------------------------------------------------
-//-----------------------------------------------------------------------------
-//-----------------------------------------------------------------------------
-
-
-CASE_GROUP(SEQ_OF_MAP)
-{
-
-ADD_CASE_TO_GROUP("seq of empty maps, one line",
-R"([{}, {}, {}])",
- L{MAP, MAP, MAP}
-);
-
-ADD_CASE_TO_GROUP("seq of maps, one line",
-R"([{name: John Smith, age: 33}, {name: Mary Smith, age: 27}])",
- L{
- N{L{N("name", "John Smith"), N("age", "33")}},
- N{L{N("name", "Mary Smith"), N("age", "27")}}
- }
-);
-
-ADD_CASE_TO_GROUP("seq of maps, implicit seq, explicit maps",
-R"(
-- {name: John Smith, age: 33}
-- {name: Mary Smith, age: 27}
-)",
- L{
- N{L{N("name", "John Smith"), N("age", "33")}},
- N{L{N("name", "Mary Smith"), N("age", "27")}}
- }
-);
-
-ADD_CASE_TO_GROUP("seq of maps",
-R"(
-- name: John Smith
- age: 33
-- name: Mary Smith
- age: 27
-)",
- L{
- N{L{N("name", "John Smith"), N("age", "33")}},
- N{L{N("name", "Mary Smith"), N("age", "27")}}
- }
-);
-
-ADD_CASE_TO_GROUP("seq of maps, next line",
-R"(
--
- name:
- John Smith
- age:
- 33
--
- name:
- Mary Smith
- age:
- 27
-)",
- L{
- N{L{N("name", "John Smith"), N("age", "33")}},
- N{L{N("name", "Mary Smith"), N("age", "27")}}
- }
-);
-
-ADD_CASE_TO_GROUP("seq of maps, bug #32 ex1",
-R"(
-- 'a': 1
- b: 2
-)",
- L{
- N{L{N(QK, "a", "1"), N("b", "2")}}
- }
-);
-
-ADD_CASE_TO_GROUP("seq of maps, bug #32 ex2",
-R"(
-- a: 1
- b: 2
-- b: 2
- 'a': 1
-- b: 2
- 'a': 1
- c: 3
-- {'a': 1, b: 2}
-)",
- L{
- N{L{N("a", "1"), N("b", "2")}},
- N{L{N("b", "2"), N(QK, "a", "1")}},
- N{L{N("b", "2"), N(QK, "a", "1"), N("c", "3")}},
- N{L{N(QK, "a", "1"), N("b", "2")}},
- }
-);
-
-ADD_CASE_TO_GROUP("seq of maps, bug #32 ex3",
-R"(
-'a': 1
-b: 2
-b: 2
-'a': 1
-)",
-L{
- N(QK, "a", "1"), N("b", "2"), N("b", "2"), N(QK, "a", "1"),
-});
-
-
-ADD_CASE_TO_GROUP("seq of maps, implicit map in seq",
-R"('implicit block key' : [
- 'implicit flow key 1' : value1,
- 'implicit flow key 2' : value2,
- 'implicit flow key 3' : value3,
- 'implicit flow key m' : {key1: val1, key2: val2},
- 'implicit flow key s' : [val1, val2],
-])",
-L{N(KEYSEQ|KEYQUO, "implicit block key", L{
- N(L{N(KEYVAL|KEYQUO, "implicit flow key 1", "value1")}),
- N(L{N(KEYVAL|KEYQUO, "implicit flow key 2", "value2")}),
- N(L{N(KEYVAL|KEYQUO, "implicit flow key 3", "value3")}),
- N(L{N(KEYMAP|KEYQUO, "implicit flow key m", L{N("key1", "val1"), N("key2", "val2")})}),
- N(L{N(KEYSEQ|KEYQUO, "implicit flow key s", L{N("val1"), N("val2")})}),
-})});
-
-
-ADD_CASE_TO_GROUP("seq of maps, implicit map in seq, missing scalar",
-R"({a : [
- : foo
-],
-b : [
- :
-foo
-],
-c : [
- :
-,
- :
-]})",
-L{
- N("a", L{N(MAP, L{N("", "foo")}),}),
- N("b", L{N(MAP, L{N("", "foo")}),}),
- N("c", L{N(MAP, L{N(KEYVAL, "", {})}), N(MAP, L{N(KEYVAL, "", {})}),}),
-});
-
-
-ADD_CASE_TO_GROUP("seq of maps, implicit with anchors, unresolved",
-R"(
-- &a1 a1: v1
- &a2 a2: v2
- &a3 a3: v3
-- *a1: w1
- *a2: w2
- *a3: w3
-)",
-L{
- N(L{N( "a1", AR(KEYANCH, "a1"), "v1"), N( "a2", AR(KEYANCH, "a2"), "v2"), N( "a3", AR(KEYANCH, "a3"), "v3")}),
- N(L{N("*a1", AR(KEYREF, "*a1"), "w1"), N("*a2", AR(KEYREF, "*a2"), "w2"), N("*a3", AR(KEYREF, "*a3"), "w3")}),
-});
-
-
-ADD_CASE_TO_GROUP("seq of maps, implicit with anchors, resolved", RESOLVE_REFS,
-R"(
-- &a1 a1: v1
- &a2 a2: v2
- &a3 a3: v3
-- *a1: w1
- *a2: w2
- *a3: w3
-)",
-L{
- N(L{N("a1", "v1"), N("a2", "v2"), N("a3", "v3")}),
- N(L{N("a1", "w1"), N("a2", "w2"), N("a3", "w3")}),
-});
-
-
-ADD_CASE_TO_GROUP("seq of maps, implicit with tags",
-R"(
-- !!str a1: v1
- !!str a2: v2
- !!str a3: v3
-- a1: !!str w1
- a2: !!str w2
- a3: !!str w3
-- !foo a1: v1
- !foo a2: v2
- !foo a3: v3
-)",
-L{
- N(L{N(TS("!!str", "a1"), "v1"), N(TS("!!str", "a2"), "v2"), N(TS("!!str", "a3"), "v3")}),
- N(L{N("a1", TS("!!str", "w1")), N("a2", TS("!!str", "w2")), N("a3", TS("!!str", "w3"))}),
- N(L{N(TS("!foo", "a1"), "v1"), N(TS("!foo", "a2"), "v2"), N(TS("!foo", "a3"), "v3")}),
-});
-}
-
-} // namespace yml
-} // namespace c4