| #include "handler_test.h" |
| #include "specexamples.h" // IWYU pragma: keep |
| #include "yaml-cpp/yaml.h" // IWYU pragma: keep |
| |
| #include "gmock/gmock.h" |
| #include "gtest/gtest.h" |
| |
| using ::testing::_; |
| |
| #define EXPECT_THROW_PARSER_EXCEPTION(statement, message) \ |
| ASSERT_THROW(statement, ParserException); \ |
| try { \ |
| statement; \ |
| } catch (const ParserException& e) { \ |
| EXPECT_EQ(e.msg, message); \ |
| } |
| |
| namespace YAML { |
| namespace { |
| |
| TEST_F(HandlerTest, NoEndOfMapFlow) { |
| EXPECT_THROW_PARSER_EXCEPTION(IgnoreParse("---{header: {id: 1"), |
| ErrorMsg::END_OF_MAP_FLOW); |
| } |
| |
| TEST_F(HandlerTest, PlainScalarStartingWithQuestionMark) { |
| EXPECT_CALL(handler, OnDocumentStart(_)); |
| EXPECT_CALL(handler, OnMapStart(_, "?", 0, EmitterStyle::Block)); |
| EXPECT_CALL(handler, OnScalar(_, "?", 0, "foo")); |
| EXPECT_CALL(handler, OnScalar(_, "?", 0, "?bar")); |
| EXPECT_CALL(handler, OnMapEnd()); |
| EXPECT_CALL(handler, OnDocumentEnd()); |
| Parse("foo: ?bar"); |
| } |
| |
| TEST_F(HandlerTest, NullStringScalar) { |
| EXPECT_CALL(handler, OnDocumentStart(_)); |
| EXPECT_CALL(handler, OnMapStart(_, "?", 0, EmitterStyle::Block)); |
| EXPECT_CALL(handler, OnScalar(_, "?", 0, "foo")); |
| EXPECT_CALL(handler, OnNull(_, 0)); |
| EXPECT_CALL(handler, OnMapEnd()); |
| EXPECT_CALL(handler, OnDocumentEnd()); |
| Parse("foo: null"); |
| } |
| |
| TEST_F(HandlerTest, CommentOnNewlineOfMapValueWithNoSpaces) { |
| EXPECT_CALL(handler, OnDocumentStart(_)); |
| EXPECT_CALL(handler, OnMapStart(_, "?", 0, EmitterStyle::Block)); |
| EXPECT_CALL(handler, OnScalar(_, "?", 0, "key")); |
| EXPECT_CALL(handler, OnScalar(_, "?", 0, "value")); |
| EXPECT_CALL(handler, OnMapEnd()); |
| EXPECT_CALL(handler, OnDocumentEnd()); |
| Parse("key: value\n# comment"); |
| } |
| |
| TEST_F(HandlerTest, CommentOnNewlineOfMapValueWithOneSpace) { |
| EXPECT_CALL(handler, OnDocumentStart(_)); |
| EXPECT_CALL(handler, OnMapStart(_, "?", 0, EmitterStyle::Block)); |
| EXPECT_CALL(handler, OnScalar(_, "?", 0, "key")); |
| EXPECT_CALL(handler, OnScalar(_, "?", 0, "value")); |
| EXPECT_CALL(handler, OnMapEnd()); |
| EXPECT_CALL(handler, OnDocumentEnd()); |
| Parse("key: value\n # comment"); |
| } |
| |
| TEST_F(HandlerTest, CommentOnNewlineOfMapValueWithManySpace) { |
| EXPECT_CALL(handler, OnDocumentStart(_)); |
| EXPECT_CALL(handler, OnMapStart(_, "?", 0, EmitterStyle::Block)); |
| EXPECT_CALL(handler, OnScalar(_, "?", 0, "key")); |
| EXPECT_CALL(handler, OnScalar(_, "?", 0, "value")); |
| EXPECT_CALL(handler, OnMapEnd()); |
| EXPECT_CALL(handler, OnDocumentEnd()); |
| Parse("key: value\n # comment"); |
| } |
| } // namespace |
| } // namespace YAML |