aboutsummaryrefslogtreecommitdiff
path: root/thirdparty/ryml/test/test_location.cpp
diff options
context:
space:
mode:
authorStefan Boberg <[email protected]>2026-02-24 15:02:58 +0100
committerGitHub Enterprise <[email protected]>2026-02-24 15:02:58 +0100
commit2af00d3ff720969fb3b4d471778efcf8c7b3fad4 (patch)
tree9193eb3ff8cc9f3fb5e3342d94bde8c193a977ce /thirdparty/ryml/test/test_location.cpp
parentadded zencore/filesystem.h include (diff)
parentVarious bug fixes (#778) (diff)
downloadzen-sb/spdlog-out.tar.xz
zen-sb/spdlog-out.zip
Merge branch 'main' into sb/spdlog-outsb/spdlog-out
Diffstat (limited to 'thirdparty/ryml/test/test_location.cpp')
-rw-r--r--thirdparty/ryml/test/test_location.cpp720
1 files changed, 0 insertions, 720 deletions
diff --git a/thirdparty/ryml/test/test_location.cpp b/thirdparty/ryml/test/test_location.cpp
deleted file mode 100644
index e05407eeb..000000000
--- a/thirdparty/ryml/test/test_location.cpp
+++ /dev/null
@@ -1,720 +0,0 @@
-#ifndef RYML_SINGLE_HEADER
-#include <c4/yml/std/std.hpp>
-#include <c4/yml/yml.hpp>
-#endif
-#include "./test_case.hpp"
-#include <gtest/gtest.h>
-
-
-namespace c4 {
-namespace yml {
-
-TEST(locations, default_is_no_location)
-{
- {
- ParserOptions opts;
- EXPECT_EQ(opts.locations(), false);
- }
- {
- Parser parser;
- EXPECT_EQ(parser.options().locations(), false);
- }
- {
- Parser parser(ParserOptions{});
- EXPECT_EQ(parser.options().locations(), false);
- }
- {
- Parser parser(ParserOptions().locations(false));
- EXPECT_EQ(parser.options().locations(), false);
- }
- {
- Parser parser(ParserOptions().locations(true));
- EXPECT_EQ(parser.options().locations(), true);
- }
-}
-
-
-TEST(locations, error_is_triggered_querying_with_locations_disabled)
-{
- bool parsed_ok = false;
- ExpectError::do_check([&]{
- Parser parser(ParserOptions().locations(false));
- Tree t = parser.parse_in_arena("test", "foo: bar");
- parsed_ok = true;
- (void)parser.location(t["foo"]);
- });
- EXPECT_TRUE(parsed_ok);
-}
-
-
-
-#define _checkloc(node, line_, col_, str) \
- { \
- const Location loc = parser.location(node); \
- EXPECT_EQ(loc.name, "myfile.yml"); \
- EXPECT_EQ(loc.line, line_); \
- EXPECT_EQ(loc.col, col_); \
- EXPECT_EQ(t.arena().sub(loc.offset, csubstr(str).len), csubstr(str)); \
- }
-
-TEST(locations, no_error_is_triggered_querying_with_locations)
-{
- Parser parser(ParserOptions().locations(true));
- EXPECT_EQ(parser.options().locations(), true);
- Tree t = parser.parse_in_arena("myfile.yml", "foo: bar");
- _checkloc(t["foo"], 0, 0, "foo");
-}
-
-
-TEST(locations, docval)
-{
- ParserOptions opts = ParserOptions().locations(true);
- Parser parser(opts);
- Tree t = parser.parse_in_arena("myfile.yml", "docval");
- _checkloc(t.rootref(), 0u, 0u, "docval");
- t = parser.parse_in_arena("myfile.yml", "\n docval");
- _checkloc(t.rootref(), 1u, 1u, "docval");
- t = parser.parse_in_arena("myfile.yml", "\n\n docval");
- _checkloc(t.rootref(), 2u, 1u, "docval");
-}
-
-TEST(locations, docval_null)
-{
- ParserOptions opts = ParserOptions().locations(true);
- Parser parser(opts);
- Tree t = parser.parse_in_arena("myfile.yml", "~");
- _checkloc(t.rootref(), 0u, 0u, "~");
- t = parser.parse_in_arena("myfile.yml", "");
- _checkloc(t.rootref(), 0u, 0u, "");
- t = parser.parse_in_arena("myfile.yml", R"(#
-#
-#
-#
-#
-)");
- _checkloc(t.rootref(), 0u, 0u, "");
-}
-
-TEST(locations, seq_block)
-{
- ParserOptions opts = ParserOptions().locations(true);
- Parser parser(opts);
- csubstr yaml = R"(
-- this
-- is
-- a
-- seq
-- - and
- - this
- - - as
- - well
- - - # this one works as well
- # even with a comment in between
- the scalar value is here
- - and here's another value
- -
- - another val
- - yet another val
-)";
- Tree t = parser.parse_in_arena("myfile.yml", yaml);
- ConstNodeRef seq = t.rootref();
- ASSERT_TRUE(seq.is_seq());
- _checkloc(seq , 1u, 0u, "- ");
- _checkloc(seq[0] , 1u, 2u, "this");
- _checkloc(seq[1] , 2u, 2u, "is");
- _checkloc(seq[2] , 3u, 2u, "a");
- _checkloc(seq[3] , 4u, 2u, "seq");
- _checkloc(seq[4] , 5u, 2u, "- ");
- _checkloc(seq[4][0] , 5u, 4u, "and");
- _checkloc(seq[4][1] , 6u, 4u, "this");
- _checkloc(seq[4][2] , 7u, 4u, "- ");
- _checkloc(seq[4][2][0], 7u, 6u, "as");
- _checkloc(seq[4][2][1], 8u, 6u, "well");
- _checkloc(seq[4][3] , 9u, 4u, "- # this one works as well");
- _checkloc(seq[4][3][0], 11u, 6u, "the scalar value is here");
- _checkloc(seq[4][3][1], 12u, 8u, "and here's another value");
- _checkloc(seq[4][3][2], 14u, 6u, "- ");
- _checkloc(seq[4][3][2][0], 14u, 8u, "another val");
- _checkloc(seq[4][3][2][1], 15u, 8u, "yet another val");
-}
-
-TEST(locations, map_block)
-{
- ParserOptions opts = ParserOptions().locations(true);
- Parser parser(opts);
- csubstr yaml = R"(
-this: ~
-is: ~
-a: ~
-map: ~
-and:
- this:
- as: ~
- well: ~
- aswell: # this one works as well
- # even with a comment in between
- val: here
- hah: here
-)";
- Tree t = parser.parse_in_arena("myfile.yml", yaml);
- ConstNodeRef map = t.rootref();
- ASSERT_TRUE(map.is_map());
- _checkloc(map , 1u, 0u, "this:");
- _checkloc(map["this"] , 1u, 0u, "this:");
- _checkloc(map["is"] , 2u, 0u, "is:");
- _checkloc(map["a"] , 3u, 0u, "a:");
- _checkloc(map["map"] , 4u, 0u, "map:");
- _checkloc(map["and"] , 5u, 0u, "and:");
- _checkloc(map["and"]["this"] , 6u, 2u, "this:");
- _checkloc(map["and"]["this"]["as"] , 7u, 4u, "as:");
- _checkloc(map["and"]["this"]["well"] , 8u, 4u, "well:");
- _checkloc(map["and"]["aswell"] , 9u, 2u, "aswell:");
- _checkloc(map["and"]["aswell"]["val"] , 11u, 4u, "val:");
- _checkloc(map["and"]["aswell"]["hah"] , 12u, 4u, "hah:");
-}
-
-TEST(locations, seq_block_null)
-{
- ParserOptions opts = ParserOptions().locations(true);
- Parser parser(opts);
- const Tree t = parser.parse_in_arena("myfile.yml", R"(---
-- ~
-- ~
-- notnull
-- ~
-- ~
----
-- ~
-- - ~
-- - - ~
-- - - - ~
-- - - - - ~
-- - - - ~
-- - - ~
-- - ~
-- ~
----
--
--
--
--
- -
- -
- -
- -
- -
- -
- -
- -
- -
- -
- -
- -
--
-)");
- _checkloc(t.rootref() , 0u, 0u, "---");
- _checkloc(t.docref(0) , 1u, 0u, "- ");
- _checkloc(t.docref(0)[0], 1u, 2u, "~");
- _checkloc(t.docref(0)[1], 2u, 2u, "~");
- _checkloc(t.docref(0)[2], 3u, 2u, "notnull");
- _checkloc(t.docref(0)[3], 4u, 2u, "~");
- _checkloc(t.docref(0)[4], 5u, 2u, "~");
- _checkloc(t.docref(1) , 7u, 0u, "- ");
- _checkloc(t.docref(1)[0], 7u, 2u, "~");
- _checkloc(t.docref(1)[1], 8u, 2u, "- ");
- _checkloc(t.docref(1)[1][0], 8u, 4u, "~");
- _checkloc(t.docref(1)[2], 9u, 2u, "- ");
- _checkloc(t.docref(1)[2][0], 9u, 4u, "- ");
- _checkloc(t.docref(1)[2][0][0], 9u, 6u, "~");
- _checkloc(t.docref(1)[3], 10u, 2u, "- ");
- _checkloc(t.docref(1)[3][0], 10u, 4u, "- ");
- _checkloc(t.docref(1)[3][0][0], 10u, 6u, "- ");
- _checkloc(t.docref(1)[3][0][0][0], 10u, 8u, "~");
- _checkloc(t.docref(1)[4], 11u, 2u, "- ");
- _checkloc(t.docref(1)[4][0], 11u, 4u, "- ");
- _checkloc(t.docref(1)[4][0][0], 11u, 6u, "- ");
- _checkloc(t.docref(1)[4][0][0][0], 11u, 8u, "- ");
- _checkloc(t.docref(1)[4][0][0][0][0], 11u, 10u, "~");
- _checkloc(t.docref(1)[5], 12u, 2u, "- ");
- _checkloc(t.docref(1)[5][0], 12u, 4u, "- ");
- _checkloc(t.docref(1)[5][0][0], 12u, 6u, "- ");
- _checkloc(t.docref(1)[5][0][0][0], 12u, 8u, "~");
- _checkloc(t.docref(1)[6], 13u, 2u, "- ");
- _checkloc(t.docref(1)[6][0], 13u, 4u, "- ");
- _checkloc(t.docref(1)[6][0][0], 13u, 6u, "~");
- _checkloc(t.docref(1)[7], 14u, 2u, "- ");
- _checkloc(t.docref(1)[7][0], 14u, 4u, "~");
- _checkloc(t.docref(1)[8], 15u, 2u, "~");
- _checkloc(t.docref(2) , 17u, 0u, "-");
- _checkloc(t.docref(2)[0], 17u, 0u, "-");
- _checkloc(t.docref(2)[1], 17u, 0u, "-");
- _checkloc(t.docref(2)[2], 21u, 2u, "-");
- _checkloc(t.docref(2)[3], 21u, 2u, "-");
- _checkloc(t.docref(2)[3][0], 21u, 2u, "-");
- _checkloc(t.docref(2)[3][1], 24u, 4u, "-");
- _checkloc(t.docref(2)[3][2], 24u, 4u, "-");
- _checkloc(t.docref(2)[3][2][0], 25u, 6u, "-");
- _checkloc(t.docref(2)[3][2][0][0], 26u, 8u, "-");
- _checkloc(t.docref(2)[3][2][0][0][0], 26u, 8u, "-");
- _checkloc(t.docref(2)[3][2][0][0][1], 26u, 8u, "-");
- _checkloc(t.docref(2)[3][2][1], 25u, 6u, "-");
- _checkloc(t.docref(2)[3][3], 24u, 4u, "-"); // fix: this should be after the previous child
- _checkloc(t.docref(2)[3][4], 21u, 2u, "-"); // fix: this should be after the previous child
- _checkloc(t.docref(2)[3][5], 21u, 2u, "-"); // fix: this should be after the previous child
-}
-
-TEST(locations, map_block_null)
-{
- ParserOptions opts = ParserOptions().locations(true);
- Parser parser(opts);
- Tree t = parser.parse_in_arena("myfile.yml", R"(---
-~: v
----
-null: v
----
- : v
-)");
- _checkloc(t.rootref() , 0u, 0u, "---");
- _checkloc(t.docref(0) , 1u, 0u, "");
- _checkloc(t.docref(0)[0], 1u, 0u, "~");
- _checkloc(t.docref(1) , 3u, 0u, "null");
- _checkloc(t.docref(1)[0], 3u, 0u, "null");
- _checkloc(t.docref(2) , 5u, 1u, "");
- _checkloc(t.docref(2)[0], 5u, 3u, "");
-}
-
-TEST(locations, empty_seq)
-{
- ParserOptions opts = ParserOptions().locations(true);
- Parser parser(opts);
- Tree t = parser.parse_in_arena("myfile.yml", R"(---
-- []
-- []
-- notnull
-- []
-- []
----
-- []
----
-[]
----
-key0: []
-key1: []
-key2: notnull
-key3: []
-key4: []
----
-key: []
-)");
- _checkloc(t.rootref() , 0u, 0u, "---");
- _checkloc(t.docref(0) , 1u, 0u, "- ");
- _checkloc(t.docref(0)[0], 1u, 2u, "[]");
- _checkloc(t.docref(0)[1], 2u, 2u, "[]");
- _checkloc(t.docref(0)[2], 3u, 2u, "notnull");
- _checkloc(t.docref(0)[3], 4u, 2u, "[]");
- _checkloc(t.docref(0)[4], 5u, 2u, "[]");
- _checkloc(t.docref(1) , 7u, 0u, "- ");
- _checkloc(t.docref(1)[0], 7u, 2u, "[]");
- _checkloc(t.docref(2) , 9u, 0u, "[]");
- _checkloc(t.docref(3) , 11u, 0u, "key0"); // WTF
- _checkloc(t.docref(3)["key0"], 11u, 0u, "key0");
- _checkloc(t.docref(3)["key1"], 12u, 0u, "key1");
- _checkloc(t.docref(3)["key2"], 13u, 0u, "key2");
- _checkloc(t.docref(3)["key3"], 14u, 0u, "key3");
- _checkloc(t.docref(3)["key4"], 15u, 0u, "key4");
-}
-
-TEST(locations, empty_map)
-{
- ParserOptions opts = ParserOptions().locations(true);
- Parser parser(opts);
- Tree t = parser.parse_in_arena("myfile.yml", R"(---
-- {}
-- {}
-- notnull
-- {}
-- {}
----
-- {}
----
-{}
----
-key0: {}
-key1: {}
-key2: notnull
-key3: {}
-key4: {}
----
-key: {}
-)");
- _checkloc(t.rootref() , 0u, 0u, "---");
- _checkloc(t.docref(0) , 1u, 0u, "- ");
- _checkloc(t.docref(0)[0], 1u, 2u, "{}");
- _checkloc(t.docref(0)[1], 2u, 2u, "{}");
- _checkloc(t.docref(0)[2], 3u, 2u, "notnull");
- _checkloc(t.docref(0)[3], 4u, 2u, "{}");
- _checkloc(t.docref(0)[4], 5u, 2u, "{}");
- _checkloc(t.docref(1) , 7u, 0u, "- ");
- _checkloc(t.docref(1)[0], 7u, 2u, "{}");
- _checkloc(t.docref(2) , 9u, 0u, "{}");
- _checkloc(t.docref(3) , 11u, 0u, "key0"); // WTF
- _checkloc(t.docref(3)["key0"], 11u, 0u, "key0");
- _checkloc(t.docref(3)["key1"], 12u, 0u, "key1");
- _checkloc(t.docref(3)["key2"], 13u, 0u, "key2");
- _checkloc(t.docref(3)["key3"], 14u, 0u, "key3");
- _checkloc(t.docref(3)["key4"], 15u, 0u, "key4");
-}
-
-
-TEST(locations, seq_flow)
-{
- Tree t;
- ParserOptions opts = ParserOptions().locations(true);
- Parser parser(opts);
- csubstr yaml = R"([one,two,three,four,items])";
- parser.parse_in_arena("myfile.yml", yaml, &t);
- ConstNodeRef seq = t.rootref();
- ASSERT_TRUE(seq.is_seq());
- _checkloc(seq , 0u, 0u, "[");
- _checkloc(seq[0], 0u, 1u, "one");
- _checkloc(seq[1], 0u, 5u, "two");
- _checkloc(seq[2], 0u, 9u, "three");
- _checkloc(seq[3], 0u, 15u, "four");
- _checkloc(seq[4], 0u, 20u, "items");
-}
-
-TEST(locations, map_flow)
-{
- Tree t;
- ParserOptions opts = ParserOptions().locations(true);
- Parser parser(opts);
- csubstr yaml = R"({one: item,two: items,three: items,four: items})";
- parser.parse_in_arena("myfile.yml", yaml, &t);
- ConstNodeRef map = t.rootref();
- ASSERT_TRUE(map.is_map());
- _checkloc(map , 0u, 0u, "{");
- _checkloc(map[0], 0u, 1u, "one:");
- _checkloc(map[1], 0u, 11u, "two:");
- _checkloc(map[2], 0u, 22u, "three:");
- _checkloc(map[3], 0u, 35u, "four:");
-}
-
-TEST(locations, seq_flow_nested)
-{
- Tree t;
- ParserOptions opts = ParserOptions().locations(true);
- Parser parser(opts);
- csubstr yaml = R"([
- one,
- two,
- [woops, there, [ goes, master]],
- five,
- {wait: is, this: { really: a map? }, nope: [ a seq!, { had: you there, eehh: no. } ]},
- yep,
- it,
- was
-])";
- parser.parse_in_arena("myfile.yml", yaml, &t);
- ConstNodeRef seq = t.rootref();
- ASSERT_TRUE(seq.is_seq());
- _checkloc(seq , 0u, 0u, "[");
- _checkloc(seq[0] , 1u, 2u, "one");
- _checkloc(seq[1] , 2u, 2u, "two");
- _checkloc(seq[2] , 3u, 2u, "[");
- _checkloc(seq[2][0] , 3u, 3u, "woops");
- _checkloc(seq[2][1] , 3u, 14u, "there");
- _checkloc(seq[2][2] , 3u, 24u, "[");
- _checkloc(seq[2][2][0] , 3u, 27u, "goes");
- _checkloc(seq[2][2][1] , 3u, 37u, "master");
- _checkloc(seq[3] , 4u, 2u, "five");
- _checkloc(seq[4] , 5u, 2u, "{");
- _checkloc(seq[4]["wait"] , 5u, 3u, "wait");
- _checkloc(seq[4]["this"] , 5u, 15u, "this");
- _checkloc(seq[4]["this"]["really"] , 5u, 27u, "really");
- _checkloc(seq[4]["nope"] , 5u, 47u, "nope");
- _checkloc(seq[4]["nope"][0] , 5u, 56u, "a seq!");
- _checkloc(seq[4]["nope"][1] , 5u, 64u, "{");
- _checkloc(seq[4]["nope"][1]["had"] , 5u, 66u, "had");
- _checkloc(seq[4]["nope"][1]["eehh"], 5u, 83u, "eehh");
- _checkloc(seq[5] , 6u, 2u, "yep");
- _checkloc(seq[6] , 7u, 2u, "it");
- _checkloc(seq[7] , 8u, 2u, "was");
-}
-
-TEST(locations, grow_array)
-{
- ParserOptions opts = ParserOptions().locations(true);
- Parser parser(opts);
- Tree t = parser.parse_in_arena("myfile.yml", "docval");
- _checkloc(t.rootref(), 0u, 0u, "docval");
- t = parser.parse_in_arena("myfile.yml", "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\ndocval");
- _checkloc(t.rootref(), 47u, 0u, "docval");
-}
-
-// do a test with a buffer size up to 30 lines to ensure hitting
-// the binary search path
-TEST(locations, small_array)
-{
- Tree t;
- ParserOptions opts = ParserOptions().locations(true);
- Parser parser(opts);
- csubstr yaml = R"(---
-foo: yes
-bar:
- - 1
- - 2
-baz:
- - 1_
- - 2_
- - 3_
-)";
- parser.parse_in_arena("myfile.yml", yaml, &t);
- ConstNodeRef stream = t.rootref();
- ConstNodeRef map = t.docref(0);
- ASSERT_TRUE(map.is_map());
- ASSERT_TRUE(map.is_doc());
- _checkloc(stream , 0u, 0u, "---");
- _checkloc(map , 1u, 0u, "foo");
- _checkloc(map["foo"] , 1u, 0u, "foo");
- _checkloc(map["bar"] , 2u, 0u, "bar");
- _checkloc(map["bar"][0], 3u, 4u, "1");
- _checkloc(map["bar"][1], 4u, 4u, "2");
- _checkloc(map["baz"] , 5u, 0u, "baz");
- _checkloc(map["baz"][0], 6u, 6u, "1_");
- _checkloc(map["baz"][1], 7u, 6u, "2_");
- _checkloc(map["baz"][2], 8u, 10u, "3_");
-}
-
-// do a test with a buffer of at least 30 lines to ensure hitting
-// the binary search path
-TEST(locations, large_array)
-{
- Tree t;
- ParserOptions opts = ParserOptions().locations(true);
- Parser parser(opts);
- csubstr yaml = R"(---
-foo1: definitely # 1
-bar1:
- - 1
- - 2
-baz1:
- - 1_
- - 2_
- - 3_
-
-
-
-foo2: definitely # 12
-bar2:
- - 1
- - 2
-baz2:
- - 1_
- - 2_
- - 3_
-
-
-
-foo3: definitely # 23
-bar3:
- - 1
- - 2
-baz3:
- - 1_
- - 2_
- - 3_
-
-
-
-foo4: definitely # 34
-bar4:
- - 1
- - 2
-baz4:
- - 1_
- - 2_
- - 3_
-
-
-
-foo5: definitely # 45
-bar5:
- - 1
- - 2
-baz5:
- - 1_
- - 2_
- - 3_
-
-
-
-foo6: definitely # 56
-bar6:
- - 1
- - 2
-baz6:
- - 1_
- - 2_
- - 3_
-)";
- parser.parse_in_arena("myfile.yml", yaml, &t);
- ConstNodeRef map = t.docref(0);
- ASSERT_TRUE(map.is_map());
- ASSERT_TRUE(map.is_doc());
- _checkloc(t.rootref() , 0u, 0u, "---");
- _checkloc(map , 1u, 0u, "foo1");
- _checkloc(map["foo1"] , 0u+1u, 0u, "foo1");
- _checkloc(map["bar1"] , 0u+2u, 0u, "bar1");
- _checkloc(map["bar1"][0], 0u+3u, 4u, "1");
- _checkloc(map["bar1"][1], 0u+4u, 4u, "2");
- _checkloc(map["baz1"] , 0u+5u, 0u, "baz");
- _checkloc(map["baz1"][0], 0u+6u, 6u, "1_");
- _checkloc(map["baz1"][1], 0u+7u, 6u, "2_");
- _checkloc(map["baz1"][2], 0u+8u, 10u, "3_");
- //
- _checkloc(map["foo2"] , 11u+1u, 0u, "foo2");
- _checkloc(map["bar2"] , 11u+2u, 0u, "bar2");
- _checkloc(map["bar2"][0], 11u+3u, 4u, "1");
- _checkloc(map["bar2"][1], 11u+4u, 4u, "2");
- _checkloc(map["baz2"] , 11u+5u, 0u, "baz2");
- _checkloc(map["baz2"][0], 11u+6u, 6u, "1_");
- _checkloc(map["baz2"][1], 11u+7u, 6u, "2_");
- _checkloc(map["baz2"][2], 11u+8u, 10u, "3_");
- //
- _checkloc(map["foo3"] , 22u+1u, 0u, "foo3");
- _checkloc(map["bar3"] , 22u+2u, 0u, "bar3");
- _checkloc(map["bar3"][0], 22u+3u, 4u, "1");
- _checkloc(map["bar3"][1], 22u+4u, 4u, "2");
- _checkloc(map["baz3"] , 22u+5u, 0u, "baz3");
- _checkloc(map["baz3"][0], 22u+6u, 6u, "1_");
- _checkloc(map["baz3"][1], 22u+7u, 6u, "2_");
- _checkloc(map["baz3"][2], 22u+8u, 10u, "3_");
- //
- _checkloc(map["foo4"] , 33u+1u, 0u, "foo4");
- _checkloc(map["bar4"] , 33u+2u, 0u, "bar4");
- _checkloc(map["bar4"][0], 33u+3u, 4u, "1");
- _checkloc(map["bar4"][1], 33u+4u, 4u, "2");
- _checkloc(map["baz4"] , 33u+5u, 0u, "baz4");
- _checkloc(map["baz4"][0], 33u+6u, 6u, "1_");
- _checkloc(map["baz4"][1], 33u+7u, 6u, "2_");
- _checkloc(map["baz4"][2], 33u+8u, 10u, "3_");
- //
- _checkloc(map["foo5"] , 44u+1u, 0u, "foo5");
- _checkloc(map["bar5"] , 44u+2u, 0u, "bar5");
- _checkloc(map["bar5"][0], 44u+3u, 4u, "1");
- _checkloc(map["bar5"][1], 44u+4u, 4u, "2");
- _checkloc(map["baz5"] , 44u+5u, 0u, "baz5");
- _checkloc(map["baz5"][0], 44u+6u, 6u, "1_");
- _checkloc(map["baz5"][1], 44u+7u, 6u, "2_");
- _checkloc(map["baz5"][2], 44u+8u, 10u, "3_");
- //
- _checkloc(map["foo6"] , 55u+1u, 0u, "foo6");
- _checkloc(map["bar6"] , 55u+2u, 0u, "bar6");
- _checkloc(map["bar6"][0], 55u+3u, 4u, "1");
- _checkloc(map["bar6"][1], 55u+4u, 4u, "2");
- _checkloc(map["baz6"] , 55u+5u, 0u, "baz6");
- _checkloc(map["baz6"][0], 55u+6u, 6u, "1_");
- _checkloc(map["baz6"][1], 55u+7u, 6u, "2_");
- _checkloc(map["baz6"][2], 55u+8u, 10u, "3_");
-}
-
-
-TEST(locations, issue260_0)
-{
- ParserOptions opts = ParserOptions().locations(true);
- Parser parser(opts);
- Tree tree = parser.parse_in_arena("source.yml", R"(Body:
- - Id: 1
- Name: Apple
- Script: |
- Line One
- Line Two
- - Id: 2
- Name: Cat
- Script: |
- Line One
- Line Two
- - Id: 3
- Name: Dog
- Script: |
- Line One
- Line Two)");
- EXPECT_EQ(tree["Body"][2]["Name"].val(), "Dog");
- EXPECT_EQ(parser.location(tree["Body"][2]["Name"]).line, 12u);
-}
-
-TEST(locations, issue260_1)
-{
- ParserOptions opts = ParserOptions().locations(true);
- Parser parser(opts);
- Tree tree = parser.parse_in_arena("source.yml", R"(Body: # 0
- - Id: 1 # line 1
- Name: Apple
- - Id: 2 # line 3
- Name: Cat
- Script: |
- Line One
- Line Two
- - Id: 3 # line 8
- Name: Cat2
- Script: >
- Line One
- Line Two
- - Id: 4 # line 13
- Name: Cat3
- Script: "
- Line One
- Line Two"
- - Id: 5 # line 18
- Name: Cat4
- Script: '
- Line One
- Line Two'
- - Id: 5 # line 23
- Name: Cat5
- Script:
- Line One
- Line Two
- - Id: 6 # line 28
- Name: Dog
- Script: |
- Line One
- Line Two)");
- EXPECT_EQ(parser.location(tree["Body"][0]).line, 1u);
- EXPECT_EQ(parser.location(tree["Body"][1]).line, 3u);
- EXPECT_EQ(parser.location(tree["Body"][2]).line, 8u);
- EXPECT_EQ(parser.location(tree["Body"][3]).line, 13u);
- EXPECT_EQ(parser.location(tree["Body"][4]).line, 18u);
- EXPECT_EQ(parser.location(tree["Body"][5]).line, 23u);
- EXPECT_EQ(parser.location(tree["Body"][6]).line, 28u);
- EXPECT_EQ(parser.location(tree["Body"][0]["Id"]).line, 1u);
- EXPECT_EQ(parser.location(tree["Body"][1]["Id"]).line, 3u);
- EXPECT_EQ(parser.location(tree["Body"][2]["Id"]).line, 8u);
- EXPECT_EQ(parser.location(tree["Body"][3]["Id"]).line, 13u);
- EXPECT_EQ(parser.location(tree["Body"][4]["Id"]).line, 18u);
- EXPECT_EQ(parser.location(tree["Body"][5]["Id"]).line, 23u);
- EXPECT_EQ(parser.location(tree["Body"][6]["Id"]).line, 28u);
- EXPECT_EQ(parser.location(tree["Body"][0]["Name"]).line, 1u+1u);
- EXPECT_EQ(parser.location(tree["Body"][1]["Name"]).line, 3u+1u);
- EXPECT_EQ(parser.location(tree["Body"][2]["Name"]).line, 8u+1u);
- EXPECT_EQ(parser.location(tree["Body"][3]["Name"]).line, 13u+1u);
- EXPECT_EQ(parser.location(tree["Body"][4]["Name"]).line, 18u+1u);
- EXPECT_EQ(parser.location(tree["Body"][5]["Name"]).line, 23u+1u);
- EXPECT_EQ(parser.location(tree["Body"][6]["Name"]).line, 28u+1u);
-}
-
-
-
-// The other test executables are written to contain the declarative-style
-// YmlTestCases. This executable does not have any but the build setup
-// assumes it does, and links with the test lib, which requires an existing
-// get_case() function. So this is here to act as placeholder until (if?)
-// proper test cases are added here. This was detected in #47 (thanks
-// @cburgard).
-Case const* get_case(csubstr)
-{
- return nullptr;
-}
-
-} // namespace yml
-} // namespace c4