diff --git a/src/emitterstate.cpp b/src/emitterstate.cpp index 966c9f4..01cf8a9 100644 --- a/src/emitterstate.cpp +++ b/src/emitterstate.cpp @@ -175,7 +175,7 @@ void EmitterState::EndedGroup(GroupType::value type) { // some global settings that we changed may have been overridden // by a local setting we just popped, so we need to restore them m_globalModifiedSettings.restore(); - + ClearModifiedSettings(); m_hasAnchor = false; m_hasTag = false; diff --git a/test/integration/emitter_test.cpp b/test/integration/emitter_test.cpp index 464ef76..f459ef7 100644 --- a/test/integration/emitter_test.cpp +++ b/test/integration/emitter_test.cpp @@ -1235,17 +1235,58 @@ TEST_F(EmitterTest, ComplexFlowSeqEmbeddingAMapWithNewLine) { out << YAML::EndMap; - ExpectEmit( - "NodeA:\n" - " k: [{i: 0},\n" - " {i: 1},\n" - " ]\n" - "NodeB:\n" - " k: [{i: 0},\n" - " {i: 1},\n" - " ]" - ); + ExpectEmit(R"(NodeA: + k: [{i: 0}, + {i: 1}, + ] +NodeB: + k: [{i: 0}, + {i: 1}, + ])"); +} +TEST_F(EmitterTest, ComplexFlowSeqEmbeddingAMapWithNewLineUsingAliases) { + out << BeginMap; + + out << Key << "Node" << Anchor("Node") << Value << BeginMap; + out << Key << "k" << Value << Flow << BeginSeq; + out << BeginMap << Key << "i" << Value << 0 << EndMap; + out << YAML::Newline; + out << BeginMap << Key << "i" << Value << 1 << EndMap; + out << YAML::Newline; + out << EndSeq << EndMap; + + out << Key << "NodeA" << Alias("Node"); + out << Key << "NodeB" << Alias("Node"); + + out << EndMap; + + ExpectEmit(R"(Node: &Node + k: [{i: 0}, + {i: 1}, + ] +NodeA: *Node +NodeB: *Node)"); +} + +TEST_F(EmitterTest, ComplexFlowSeqEmbeddingAMapUsingAliases) { + out << BeginMap; + + out << Key << "Node" << Anchor("Node") << Value << BeginMap; + out << Key << "k" << Value << Flow << BeginSeq; + out << BeginMap << Key << "i" << Value << 0 << EndMap; + out << BeginMap << Key << "i" << Value << 1 << EndMap; + out << EndSeq << EndMap; + + out << Key << "NodeA" << Alias("Node"); + out << Key << "NodeB" << Alias("Node"); + + out << EndMap; + + ExpectEmit(R"(Node: &Node + k: [{i: 0}, {i: 1}] +NodeA: *Node +NodeB: *Node)"); } class EmitterErrorTest : public ::testing::Test {