#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