diff options
Diffstat (limited to 'library/cpp/yaml/fyamlcpp/fyamlcpp_ut.cpp')
| -rw-r--r-- | library/cpp/yaml/fyamlcpp/fyamlcpp_ut.cpp | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/library/cpp/yaml/fyamlcpp/fyamlcpp_ut.cpp b/library/cpp/yaml/fyamlcpp/fyamlcpp_ut.cpp index f9aab7b011b..94093c4157b 100644 --- a/library/cpp/yaml/fyamlcpp/fyamlcpp_ut.cpp +++ b/library/cpp/yaml/fyamlcpp/fyamlcpp_ut.cpp @@ -50,4 +50,40 @@ test: output UNIT_ASSERT_VALUES_EQUAL(ss.Str(), "test: output\n"); } + + Y_UNIT_TEST(Parser) { + const char *yaml = R"( +test: a +--- +test: b +)"; + auto parser = NFyaml::TParser::Create(yaml); + + TStringStream ss; + + auto docOpt = parser.NextDocument(); + UNIT_ASSERT(docOpt); + ss << *docOpt; + UNIT_ASSERT_VALUES_EQUAL(ss.Str(), "test: a\n"); + auto beginMark = docOpt->BeginMark(); + UNIT_ASSERT_VALUES_EQUAL(beginMark.InputPos, 1); + auto endMark = docOpt->EndMark(); + UNIT_ASSERT_VALUES_EQUAL(endMark.InputPos, 12); + UNIT_ASSERT_VALUES_EQUAL(TStringBuf(yaml).SubStr(beginMark.InputPos, endMark.InputPos - 4), ss.Str()); + + ss.clear(); + + auto docOpt2 = parser.NextDocument(); + UNIT_ASSERT(docOpt2); + ss << *docOpt2; + UNIT_ASSERT_VALUES_EQUAL(ss.Str(), "---\ntest: b\n"); + beginMark = docOpt2->BeginMark(); + UNIT_ASSERT_VALUES_EQUAL(beginMark.InputPos, 9); + endMark = docOpt2->EndMark(); + UNIT_ASSERT_VALUES_EQUAL(endMark.InputPos, 21); + UNIT_ASSERT_VALUES_EQUAL(TStringBuf(yaml).SubStr(beginMark.InputPos, endMark.InputPos), ss.Str()); + + auto docOpt3 = parser.NextDocument(); + UNIT_ASSERT(!docOpt3); + } } |
