handler_test.cpp (2706B)
1 #include "handler_test.h" 2 #include "specexamples.h" // IWYU pragma: keep 3 #include "yaml-cpp/yaml.h" // IWYU pragma: keep 4 5 #include "gmock/gmock.h" 6 #include "gtest/gtest.h" 7 8 using ::testing::_; 9 10 #define EXPECT_THROW_PARSER_EXCEPTION(statement, message) \ 11 ASSERT_THROW(statement, ParserException); \ 12 try { \ 13 statement; \ 14 } catch (const ParserException& e) { \ 15 EXPECT_EQ(e.msg, message); \ 16 } 17 18 namespace YAML { 19 namespace { 20 21 TEST_F(HandlerTest, NoEndOfMapFlow) { 22 EXPECT_THROW_PARSER_EXCEPTION(IgnoreParse("---{header: {id: 1"), 23 ErrorMsg::END_OF_MAP_FLOW); 24 } 25 26 TEST_F(HandlerTest, PlainScalarStartingWithQuestionMark) { 27 EXPECT_CALL(handler, OnDocumentStart(_)); 28 EXPECT_CALL(handler, OnMapStart(_, "?", 0, EmitterStyle::Block)); 29 EXPECT_CALL(handler, OnScalar(_, "?", 0, "foo")); 30 EXPECT_CALL(handler, OnScalar(_, "?", 0, "?bar")); 31 EXPECT_CALL(handler, OnMapEnd()); 32 EXPECT_CALL(handler, OnDocumentEnd()); 33 Parse("foo: ?bar"); 34 } 35 36 TEST_F(HandlerTest, NullStringScalar) { 37 EXPECT_CALL(handler, OnDocumentStart(_)); 38 EXPECT_CALL(handler, OnMapStart(_, "?", 0, EmitterStyle::Block)); 39 EXPECT_CALL(handler, OnScalar(_, "?", 0, "foo")); 40 EXPECT_CALL(handler, OnNull(_, 0)); 41 EXPECT_CALL(handler, OnMapEnd()); 42 EXPECT_CALL(handler, OnDocumentEnd()); 43 Parse("foo: null"); 44 } 45 46 TEST_F(HandlerTest, CommentOnNewlineOfMapValueWithNoSpaces) { 47 EXPECT_CALL(handler, OnDocumentStart(_)); 48 EXPECT_CALL(handler, OnMapStart(_, "?", 0, EmitterStyle::Block)); 49 EXPECT_CALL(handler, OnScalar(_, "?", 0, "key")); 50 EXPECT_CALL(handler, OnScalar(_, "?", 0, "value")); 51 EXPECT_CALL(handler, OnMapEnd()); 52 EXPECT_CALL(handler, OnDocumentEnd()); 53 Parse("key: value\n# comment"); 54 } 55 56 TEST_F(HandlerTest, CommentOnNewlineOfMapValueWithOneSpace) { 57 EXPECT_CALL(handler, OnDocumentStart(_)); 58 EXPECT_CALL(handler, OnMapStart(_, "?", 0, EmitterStyle::Block)); 59 EXPECT_CALL(handler, OnScalar(_, "?", 0, "key")); 60 EXPECT_CALL(handler, OnScalar(_, "?", 0, "value")); 61 EXPECT_CALL(handler, OnMapEnd()); 62 EXPECT_CALL(handler, OnDocumentEnd()); 63 Parse("key: value\n # comment"); 64 } 65 66 TEST_F(HandlerTest, CommentOnNewlineOfMapValueWithManySpace) { 67 EXPECT_CALL(handler, OnDocumentStart(_)); 68 EXPECT_CALL(handler, OnMapStart(_, "?", 0, EmitterStyle::Block)); 69 EXPECT_CALL(handler, OnScalar(_, "?", 0, "key")); 70 EXPECT_CALL(handler, OnScalar(_, "?", 0, "value")); 71 EXPECT_CALL(handler, OnMapEnd()); 72 EXPECT_CALL(handler, OnDocumentEnd()); 73 Parse("key: value\n # comment"); 74 } 75 } // namespace 76 } // namespace YAML