diff --git a/test/integration/emitter_test.cpp b/test/integration/emitter_test.cpp index 504758405..928f19237 100644 --- a/test/integration/emitter_test.cpp +++ b/test/integration/emitter_test.cpp @@ -2009,5 +2009,55 @@ TEST_F(EmitterTest, CommentInsideFlowMapIsUnaffected) { "key2: value2}"); } +TEST_F(EmitterTest, EmitEmptyNode) { + Node node; + out << node; + ExpectEmit(""); +} + +TEST_F(EmitterTest, EmitSetVerbatimTag) { + Node node, root; + node = 42; + node.SetTag("hello"); + root["num"] = node; + + out << root; + ExpectEmit("num: ! 42"); +} + +// Regression for #1373: emitting a node whose tag begins with "!!" +// (a YAML secondary tag handle, e.g. "!!str") used to bail out with +// INVALID_TAG and truncate the output after the first '!'. +TEST_F(EmitterTest, EmitSetTagSecondaryHandle) { + Node root; + Node string_node{"hello"}; + string_node.SetTag("!!str"); + root["some_string"] = string_node; + root["some_int"] = 2; + + out << root; + ExpectEmit("some_string: !!str hello\nsome_int: 2"); +} + +TEST_F(EmitterTest, EmitSetTagPrimaryHandle) { + Node root; + Node string_node{"hello"}; + string_node.SetTag("!mytag"); + root["v"] = string_node; + + out << root; + ExpectEmit("v: !mytag hello"); +} + +TEST_F(EmitterTest, EmitSetLocalTagInNameHandle) { + Node node, root; + node = 42; + node.SetTag("!a!foo"); + root["num"] = node; + + out << root; + ExpectEmit("num: !a!foo 42"); +} + } // namespace } // namespace YAML diff --git a/test/integration/load_node_test.cpp b/test/integration/load_node_test.cpp index 3ca27e32b..e81c1dd77 100644 --- a/test/integration/load_node_test.cpp +++ b/test/integration/load_node_test.cpp @@ -224,62 +224,6 @@ TEST(LoadNodeTest, DereferenceIteratorError) { EXPECT_THROW(node.begin()->begin()->Type(), InvalidNode); } -TEST(NodeTest, EmitEmptyNode) { - Node node; - Emitter emitter; - emitter << node; - EXPECT_EQ("", std::string(emitter.c_str())); -} - -TEST(NodeTest, SetVerbatimTag) { - Node node, root; - node = 42; - node.SetTag("hello"); - root["num"] = node; - - Emitter emitter; - emitter << root; - EXPECT_EQ("num: ! 42", std::string(emitter.c_str())); -} - -// Regression for #1373: emitting a node whose tag begins with "!!" -// (a YAML secondary tag handle, e.g. "!!str") used to bail out with -// INVALID_TAG and truncate the output after the first '!'. -TEST(NodeTest, EmitSetTagSecondaryHandle) { - Node root; - Node string_node{"hello"}; - string_node.SetTag("!!str"); - root["some_string"] = string_node; - root["some_int"] = 2; - - Emitter emitter; - emitter << root; - EXPECT_EQ("some_string: !!str hello\nsome_int: 2", - std::string(emitter.c_str())); -} - -TEST(NodeTest, EmitSetTagPrimaryHandle) { - Node root; - Node string_node{"hello"}; - string_node.SetTag("!mytag"); - root["v"] = string_node; - - Emitter emitter; - emitter << root; - EXPECT_EQ("v: !mytag hello", std::string(emitter.c_str())); -} - -TEST(NodeTest, EmitSetLocalTagInNameHandle) { - Node node, root; - node = 42; - node.SetTag("!a!foo"); - root["num"] = node; - - Emitter emitter; - emitter << root; - EXPECT_EQ("num: !a!foo 42", std::string(emitter.c_str())); -} - TEST(NodeTest, ParseNodeStyle) { EXPECT_EQ(EmitterStyle::Flow, Load("[1, 2, 3]").Style()); EXPECT_EQ(EmitterStyle::Flow, Load("{foo: bar}").Style()); @@ -519,4 +463,4 @@ TEST(LoadNodeTest, NonUniqueMapKey) { } } // namespace -} // namespace YAML \ No newline at end of file +} // namespace YAML