From 16fd111a6b4b5e75721ed3b363cb6d4913f98df3 Mon Sep 17 00:00:00 2001 From: Jesse Beder Date: Sun, 20 May 2012 01:19:27 -0500 Subject: [PATCH 01/65] Fixed formatting for spec tests --- test/core/spectests.cpp | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/test/core/spectests.cpp b/test/core/spectests.cpp index 4c81d35..b707a21 100644 --- a/test/core/spectests.cpp +++ b/test/core/spectests.cpp @@ -7,6 +7,12 @@ #define YAML_ASSERT(cond) do { if(!(cond)) return " Assert failed: " #cond; } while(false) namespace Test { + std::string Quote(const std::string& text) { + YAML::Emitter out; + out << YAML::DoubleQuoted << text; + return out.c_str(); + } + struct Event { enum Type { DocStart, DocEnd, Null, Alias, Scalar, SeqStart, SeqEnd, MapStart, MapEnd }; @@ -31,13 +37,13 @@ namespace Test { case Alias: return out << "Alias(" << anchor << ")"; case Scalar: - return out << "Scalar(" << tag << ", " << anchor << ", " << scalar << ")"; + return out << "Scalar(" << Quote(tag) << ", " << anchor << ", " << Quote(scalar) << ")"; case SeqStart: - return out << "SeqStart(" << tag << ", " << anchor << ")"; + return out << "SeqStart(" << Quote(tag) << ", " << anchor << ")"; case SeqEnd: return out << "SeqEnd"; case MapStart: - return out << "MapStart(" << tag << ", " << anchor << ")"; + return out << "MapStart(" << Quote(tag) << ", " << anchor << ")"; case MapEnd: return out << "MapEnd"; } @@ -110,30 +116,30 @@ namespace Test { if(i >= m_expectedEvents.size()) { std::stringstream out; for(std::size_t j=0;j= m_actualEvents.size()) { std::stringstream out; for(std::size_t j=0;j Date: Sun, 20 May 2012 01:31:57 -0500 Subject: [PATCH 02/65] Added failing test for compact map with newline --- test/emittertests.cpp | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/test/emittertests.cpp b/test/emittertests.cpp index 8da5b70..f157ea1 100644 --- a/test/emittertests.cpp +++ b/test/emittertests.cpp @@ -912,6 +912,32 @@ namespace Test desiredOutput = "[31, 0x1f, 037]"; } + void CompactMapWithNewline(YAML::Emitter& out, std::string& desiredOutput) + { + out << YAML::Comment("Characteristics"); + out << YAML::BeginSeq; + out << YAML::BeginMap; + out << YAML::Key << "color" << YAML::Value << "blue"; + out << YAML::Key << "height" << YAML::Value << 120; + out << YAML::EndMap; + out << YAML::Newline << YAML::Newline; + out << YAML::Comment("Skills"); + out << YAML::BeginMap; + out << YAML::Key << "attack" << YAML::Value << 23; + out << YAML::Key << "intelligence" << YAML::Value << 56; + out << YAML::EndMap; + out << YAML::EndSeq; + + desiredOutput = + "# Characteristics\n" + "- color: blue\n" + " height: 120\n" + "\n" + "# Skills\n" + "- attack: 23\n" + " intelligence: 56"; + } + //////////////////////////////////////////////////////////////////////////////////////////////////////// // incorrect emitting @@ -1145,6 +1171,7 @@ namespace Test RunEmitterTest(&Emitter::SetPrecision, "set precision", passed, total); RunEmitterTest(&Emitter::DashInBlockContext, "dash in block context", passed, total); RunEmitterTest(&Emitter::HexAndOct, "hex and oct", passed, total); + RunEmitterTest(&Emitter::CompactMapWithNewline, "compact map with newline", passed, total); RunEmitterErrorTest(&Emitter::ExtraEndSeq, "extra EndSeq", passed, total); RunEmitterErrorTest(&Emitter::ExtraEndMap, "extra EndMap", passed, total); From 39165338e02c8507198344431c0e90653758e01d Mon Sep 17 00:00:00 2001 From: Jesse Beder Date: Sun, 20 May 2012 01:46:08 -0500 Subject: [PATCH 03/65] Added sandbox to play with --- util/CMakeLists.txt | 2 ++ util/sandbox.cpp | 18 ++++++++++++++++++ 2 files changed, 20 insertions(+) create mode 100644 util/sandbox.cpp diff --git a/util/CMakeLists.txt b/util/CMakeLists.txt index e69de29..1321b2a 100644 --- a/util/CMakeLists.txt +++ b/util/CMakeLists.txt @@ -0,0 +1,2 @@ +add_executable(sandbox sandbox.cpp) +target_link_libraries(sandbox yaml-cpp) diff --git a/util/sandbox.cpp b/util/sandbox.cpp new file mode 100644 index 0000000..e0979f2 --- /dev/null +++ b/util/sandbox.cpp @@ -0,0 +1,18 @@ +#include "yaml-cpp/yaml.h" +#include + +int main() +{ + YAML::Emitter out; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::Comment("Skills"); + out << YAML::BeginMap; + out << YAML::Key << "attack" << YAML::Value << 23; + out << YAML::Key << "intelligence" << YAML::Value << 56; + out << YAML::EndMap; + out << YAML::EndSeq; + + std::cout << out.c_str() << "\n"; + return 0; +} From 41c2ddc03e6e8a169cc642e50f26ec223b498cc2 Mon Sep 17 00:00:00 2001 From: Jesse Beder Date: Mon, 21 May 2012 15:05:17 -0500 Subject: [PATCH 04/65] Switched the emitter state enums to scoped enums --- src/emitter.cpp | 88 ++++++++++++++++++++++---------------------- src/emitterstate.cpp | 70 +++++++++++++++++------------------ src/emitterstate.h | 69 ++++++++++++++-------------------- 3 files changed, 107 insertions(+), 120 deletions(-) diff --git a/src/emitter.cpp b/src/emitter.cpp index 91f48da..6bd80ec 100644 --- a/src/emitter.cpp +++ b/src/emitter.cpp @@ -39,69 +39,69 @@ namespace YAML // global setters bool Emitter::SetOutputCharset(EMITTER_MANIP value) { - return m_pState->SetOutputCharset(value, GLOBAL); + return m_pState->SetOutputCharset(value, FmtScope::Global); } bool Emitter::SetStringFormat(EMITTER_MANIP value) { - return m_pState->SetStringFormat(value, GLOBAL); + return m_pState->SetStringFormat(value, FmtScope::Global); } bool Emitter::SetBoolFormat(EMITTER_MANIP value) { bool ok = false; - if(m_pState->SetBoolFormat(value, GLOBAL)) + if(m_pState->SetBoolFormat(value, FmtScope::Global)) ok = true; - if(m_pState->SetBoolCaseFormat(value, GLOBAL)) + if(m_pState->SetBoolCaseFormat(value, FmtScope::Global)) ok = true; - if(m_pState->SetBoolLengthFormat(value, GLOBAL)) + if(m_pState->SetBoolLengthFormat(value, FmtScope::Global)) ok = true; return ok; } bool Emitter::SetIntBase(EMITTER_MANIP value) { - return m_pState->SetIntFormat(value, GLOBAL); + return m_pState->SetIntFormat(value, FmtScope::Global); } bool Emitter::SetSeqFormat(EMITTER_MANIP value) { - return m_pState->SetFlowType(GT_SEQ, value, GLOBAL); + return m_pState->SetFlowType(GroupType::Seq, value, FmtScope::Global); } bool Emitter::SetMapFormat(EMITTER_MANIP value) { bool ok = false; - if(m_pState->SetFlowType(GT_MAP, value, GLOBAL)) + if(m_pState->SetFlowType(GroupType::Map, value, FmtScope::Global)) ok = true; - if(m_pState->SetMapKeyFormat(value, GLOBAL)) + if(m_pState->SetMapKeyFormat(value, FmtScope::Global)) ok = true; return ok; } bool Emitter::SetIndent(unsigned n) { - return m_pState->SetIndent(n, GLOBAL); + return m_pState->SetIndent(n, FmtScope::Global); } bool Emitter::SetPreCommentIndent(unsigned n) { - return m_pState->SetPreCommentIndent(n, GLOBAL); + return m_pState->SetPreCommentIndent(n, FmtScope::Global); } bool Emitter::SetPostCommentIndent(unsigned n) { - return m_pState->SetPostCommentIndent(n, GLOBAL); + return m_pState->SetPostCommentIndent(n, FmtScope::Global); } bool Emitter::SetFloatPrecision(unsigned n) { - return m_pState->SetFloatPrecision(n, GLOBAL); + return m_pState->SetFloatPrecision(n, FmtScope::Global); } bool Emitter::SetDoublePrecision(unsigned n) { - return m_pState->SetDoublePrecision(n, GLOBAL); + return m_pState->SetDoublePrecision(n, FmtScope::Global); } // SetLocalValue @@ -151,16 +151,16 @@ namespace YAML Emitter& Emitter::SetLocalIndent(const _Indent& indent) { - m_pState->SetIndent(indent.value, LOCAL); + m_pState->SetIndent(indent.value, FmtScope::Local); return *this; } Emitter& Emitter::SetLocalPrecision(const _Precision& precision) { if(precision.floatPrecision >= 0) - m_pState->SetFloatPrecision(precision.floatPrecision, LOCAL); + m_pState->SetFloatPrecision(precision.floatPrecision, FmtScope::Local); if(precision.doublePrecision >= 0) - m_pState->SetDoublePrecision(precision.doublePrecision, LOCAL); + m_pState->SetDoublePrecision(precision.doublePrecision, FmtScope::Local); return *this; } @@ -400,7 +400,7 @@ namespace YAML PreAtomicWrite(); EMITTER_STATE curState = m_pState->GetCurState(); - EMITTER_MANIP flowType = m_pState->GetFlowType(GT_SEQ); + EMITTER_MANIP flowType = m_pState->GetFlowType(GroupType::Seq); if(flowType == Block) { if(curState == ES_WRITING_BLOCK_SEQ_ENTRY || curState == ES_WRITING_BLOCK_MAP_KEY || curState == ES_WRITING_BLOCK_MAP_VALUE || @@ -419,7 +419,7 @@ namespace YAML } else assert(false); - m_pState->BeginGroup(GT_SEQ); + m_pState->BeginGroup(GroupType::Seq); } // EmitEndSeq @@ -428,12 +428,12 @@ namespace YAML if(!good()) return; - if(m_pState->GetCurGroupType() != GT_SEQ) + if(m_pState->GetCurGroupType() != GroupType::Seq) return m_pState->SetError(ErrorMsg::UNEXPECTED_END_SEQ); EMITTER_STATE curState = m_pState->GetCurState(); - FLOW_TYPE flowType = m_pState->GetCurGroupFlowType(); - if(flowType == FT_BLOCK) { + FlowType::value flowType = m_pState->GetCurGroupFlowType(); + if(flowType == FlowType::Block) { // Note: block sequences are *not* allowed to be empty, but we convert it // to a flow sequence if it is assert(curState == ES_DONE_WITH_BLOCK_SEQ_ENTRY || curState == ES_WAITING_FOR_BLOCK_SEQ_ENTRY); @@ -445,7 +445,7 @@ namespace YAML m_stream << "[]"; } - } else if(flowType == FT_FLOW) { + } else if(flowType == FlowType::Flow) { // Note: flow sequences are allowed to be empty assert(curState == ES_DONE_WITH_FLOW_SEQ_ENTRY || curState == ES_WAITING_FOR_FLOW_SEQ_ENTRY); m_stream << "]"; @@ -453,7 +453,7 @@ namespace YAML assert(false); m_pState->PopState(); - m_pState->EndGroup(GT_SEQ); + m_pState->EndGroup(GroupType::Seq); PostAtomicWrite(); } @@ -470,7 +470,7 @@ namespace YAML PreAtomicWrite(); EMITTER_STATE curState = m_pState->GetCurState(); - EMITTER_MANIP flowType = m_pState->GetFlowType(GT_MAP); + EMITTER_MANIP flowType = m_pState->GetFlowType(GroupType::Map); if(flowType == Block) { if(curState == ES_WRITING_BLOCK_SEQ_ENTRY || curState == ES_WRITING_BLOCK_MAP_KEY || curState == ES_WRITING_BLOCK_MAP_VALUE || @@ -489,7 +489,7 @@ namespace YAML } else assert(false); - m_pState->BeginGroup(GT_MAP); + m_pState->BeginGroup(GroupType::Map); } // EmitEndMap @@ -498,12 +498,12 @@ namespace YAML if(!good()) return; - if(m_pState->GetCurGroupType() != GT_MAP) + if(m_pState->GetCurGroupType() != GroupType::Map) return m_pState->SetError(ErrorMsg::UNEXPECTED_END_MAP); EMITTER_STATE curState = m_pState->GetCurState(); - FLOW_TYPE flowType = m_pState->GetCurGroupFlowType(); - if(flowType == FT_BLOCK) { + FlowType::value flowType = m_pState->GetCurGroupFlowType(); + if(flowType == FlowType::Block) { // Note: block sequences are *not* allowed to be empty, but we convert it // to a flow sequence if it is assert(curState == ES_DONE_WITH_BLOCK_MAP_VALUE || curState == ES_WAITING_FOR_BLOCK_MAP_ENTRY); @@ -514,7 +514,7 @@ namespace YAML m_stream << IndentTo(curIndent); m_stream << "{}"; } - } else if(flowType == FT_FLOW) { + } else if(flowType == FlowType::Flow) { // Note: flow maps are allowed to be empty assert(curState == ES_DONE_WITH_FLOW_MAP_VALUE || curState == ES_WAITING_FOR_FLOW_MAP_ENTRY); EmitSeparationIfNecessary(); @@ -523,7 +523,7 @@ namespace YAML assert(false); m_pState->PopState(); - m_pState->EndGroup(GT_MAP); + m_pState->EndGroup(GroupType::Map); PostAtomicWrite(); } @@ -535,19 +535,19 @@ namespace YAML return; EMITTER_STATE curState = m_pState->GetCurState(); - FLOW_TYPE flowType = m_pState->GetCurGroupFlowType(); + FlowType::value flowType = m_pState->GetCurGroupFlowType(); if(curState != ES_WAITING_FOR_BLOCK_MAP_ENTRY && curState != ES_DONE_WITH_BLOCK_MAP_VALUE && curState != ES_WAITING_FOR_FLOW_MAP_ENTRY && curState != ES_DONE_WITH_FLOW_MAP_VALUE) return m_pState->SetError(ErrorMsg::UNEXPECTED_KEY_TOKEN); - if(flowType == FT_BLOCK) { + if(flowType == FlowType::Block) { if(curState == ES_DONE_WITH_BLOCK_MAP_VALUE) m_stream << '\n'; unsigned curIndent = m_pState->GetCurIndent(); m_stream << IndentTo(curIndent); m_pState->UnsetSeparation(); m_pState->SwitchState(ES_WAITING_FOR_BLOCK_MAP_KEY); - } else if(flowType == FT_FLOW) { + } else if(flowType == FlowType::Flow) { EmitSeparationIfNecessary(); if(curState == ES_DONE_WITH_FLOW_MAP_VALUE) { m_stream << ','; @@ -572,11 +572,11 @@ namespace YAML return; EMITTER_STATE curState = m_pState->GetCurState(); - FLOW_TYPE flowType = m_pState->GetCurGroupFlowType(); + FlowType::value flowType = m_pState->GetCurGroupFlowType(); if(curState != ES_DONE_WITH_BLOCK_MAP_KEY && curState != ES_DONE_WITH_FLOW_MAP_KEY) return m_pState->SetError(ErrorMsg::UNEXPECTED_VALUE_TOKEN); - if(flowType == FT_BLOCK) { + if(flowType == FlowType::Block) { if(m_pState->CurrentlyInLongKey()) { m_stream << '\n'; m_stream << IndentTo(m_pState->GetCurIndent()); @@ -584,7 +584,7 @@ namespace YAML m_pState->RequireSoftSeparation(); } m_pState->SwitchState(ES_WAITING_FOR_BLOCK_MAP_VALUE); - } else if(flowType == FT_FLOW) { + } else if(flowType == FlowType::Flow) { m_pState->SwitchState(ES_WAITING_FOR_FLOW_MAP_VALUE); } else assert(false); @@ -604,8 +604,8 @@ namespace YAML bool Emitter::CanEmitNewline() const { - FLOW_TYPE flowType = m_pState->GetCurGroupFlowType(); - if(flowType == FT_BLOCK && m_pState->CurrentlyInLongKey()) + FlowType::value flowType = m_pState->GetCurGroupFlowType(); + if(flowType == FlowType::Block && m_pState->CurrentlyInLongKey()) return true; EMITTER_STATE curState = m_pState->GetCurState(); @@ -621,7 +621,7 @@ namespace YAML return *this; // literal scalars must use long keys - if(m_pState->GetStringFormat() == Literal && m_pState->GetCurGroupFlowType() != FT_FLOW) + if(m_pState->GetStringFormat() == Literal && m_pState->GetCurGroupFlowType() != FlowType::Flow) m_pState->StartLongKey(); PreAtomicWrite(); @@ -629,12 +629,12 @@ namespace YAML bool escapeNonAscii = m_pState->GetOutputCharset() == EscapeNonAscii; EMITTER_MANIP strFmt = m_pState->GetStringFormat(); - FLOW_TYPE flowType = m_pState->GetCurGroupFlowType(); + FlowType::value flowType = m_pState->GetCurGroupFlowType(); unsigned curIndent = m_pState->GetCurIndent(); switch(strFmt) { case Auto: - Utils::WriteString(m_stream, str, flowType == FT_FLOW, escapeNonAscii); + Utils::WriteString(m_stream, str, flowType == FlowType::Flow, escapeNonAscii); break; case SingleQuoted: if(!Utils::WriteSingleQuotedString(m_stream, str)) { @@ -646,8 +646,8 @@ namespace YAML Utils::WriteDoubleQuotedString(m_stream, str, escapeNonAscii); break; case Literal: - if(flowType == FT_FLOW) - Utils::WriteString(m_stream, str, flowType == FT_FLOW, escapeNonAscii); + if(flowType == FlowType::Flow) + Utils::WriteString(m_stream, str, flowType == FlowType::Flow, escapeNonAscii); else Utils::WriteLiteralString(m_stream, str, curIndent + m_pState->GetIndent()); break; diff --git a/src/emitterstate.cpp b/src/emitterstate.cpp index 562e82c..5be8910 100644 --- a/src/emitterstate.cpp +++ b/src/emitterstate.cpp @@ -35,18 +35,18 @@ namespace YAML // . Only the ones that make sense will be accepted void EmitterState::SetLocalValue(EMITTER_MANIP value) { - SetOutputCharset(value, LOCAL); - SetStringFormat(value, LOCAL); - SetBoolFormat(value, LOCAL); - SetBoolCaseFormat(value, LOCAL); - SetBoolLengthFormat(value, LOCAL); - SetIntFormat(value, LOCAL); - SetFlowType(GT_SEQ, value, LOCAL); - SetFlowType(GT_MAP, value, LOCAL); - SetMapKeyFormat(value, LOCAL); + SetOutputCharset(value, FmtScope::Local); + SetStringFormat(value, FmtScope::Local); + SetBoolFormat(value, FmtScope::Local); + SetBoolCaseFormat(value, FmtScope::Local); + SetBoolLengthFormat(value, FmtScope::Local); + SetIntFormat(value, FmtScope::Local); + SetFlowType(GroupType::Seq, value, FmtScope::Local); + SetFlowType(GroupType::Map, value, FmtScope::Local); + SetMapKeyFormat(value, FmtScope::Local); } - void EmitterState::BeginGroup(GROUP_TYPE type) + void EmitterState::BeginGroup(GroupType::value type) { unsigned lastIndent = (m_groups.empty() ? 0 : m_groups.top().indent); m_curIndent += lastIndent; @@ -64,7 +64,7 @@ namespace YAML m_groups.push(pGroup); } - void EmitterState::EndGroup(GROUP_TYPE type) + void EmitterState::EndGroup(GroupType::value type) { if(m_groups.empty()) return SetError(ErrorMsg::UNMATCHED_GROUP_TAG); @@ -86,20 +86,20 @@ namespace YAML m_globalModifiedSettings.restore(); } - GROUP_TYPE EmitterState::GetCurGroupType() const + GroupType::value EmitterState::GetCurGroupType() const { if(m_groups.empty()) - return GT_NONE; + return GroupType::None; return m_groups.top().type; } - FLOW_TYPE EmitterState::GetCurGroupFlowType() const + FlowType::value EmitterState::GetCurGroupFlowType() const { if(m_groups.empty()) - return FT_NONE; + return FlowType::None; - return (m_groups.top().flow == Flow ? FT_FLOW : FT_BLOCK); + return (m_groups.top().flow == Flow ? FlowType::Flow : FlowType::Block); } bool EmitterState::CurrentlyInLongKey() @@ -126,7 +126,7 @@ namespace YAML m_modifiedSettings.clear(); } - bool EmitterState::SetOutputCharset(EMITTER_MANIP value, FMT_SCOPE scope) + bool EmitterState::SetOutputCharset(EMITTER_MANIP value, FmtScope::value scope) { switch(value) { case EmitNonAscii: @@ -138,7 +138,7 @@ namespace YAML } } - bool EmitterState::SetStringFormat(EMITTER_MANIP value, FMT_SCOPE scope) + bool EmitterState::SetStringFormat(EMITTER_MANIP value, FmtScope::value scope) { switch(value) { case Auto: @@ -152,7 +152,7 @@ namespace YAML } } - bool EmitterState::SetBoolFormat(EMITTER_MANIP value, FMT_SCOPE scope) + bool EmitterState::SetBoolFormat(EMITTER_MANIP value, FmtScope::value scope) { switch(value) { case OnOffBool: @@ -165,7 +165,7 @@ namespace YAML } } - bool EmitterState::SetBoolLengthFormat(EMITTER_MANIP value, FMT_SCOPE scope) + bool EmitterState::SetBoolLengthFormat(EMITTER_MANIP value, FmtScope::value scope) { switch(value) { case LongBool: @@ -177,7 +177,7 @@ namespace YAML } } - bool EmitterState::SetBoolCaseFormat(EMITTER_MANIP value, FMT_SCOPE scope) + bool EmitterState::SetBoolCaseFormat(EMITTER_MANIP value, FmtScope::value scope) { switch(value) { case UpperCase: @@ -190,7 +190,7 @@ namespace YAML } } - bool EmitterState::SetIntFormat(EMITTER_MANIP value, FMT_SCOPE scope) + bool EmitterState::SetIntFormat(EMITTER_MANIP value, FmtScope::value scope) { switch(value) { case Dec: @@ -203,7 +203,7 @@ namespace YAML } } - bool EmitterState::SetIndent(unsigned value, FMT_SCOPE scope) + bool EmitterState::SetIndent(unsigned value, FmtScope::value scope) { if(value == 0) return false; @@ -212,7 +212,7 @@ namespace YAML return true; } - bool EmitterState::SetPreCommentIndent(unsigned value, FMT_SCOPE scope) + bool EmitterState::SetPreCommentIndent(unsigned value, FmtScope::value scope) { if(value == 0) return false; @@ -221,7 +221,7 @@ namespace YAML return true; } - bool EmitterState::SetPostCommentIndent(unsigned value, FMT_SCOPE scope) + bool EmitterState::SetPostCommentIndent(unsigned value, FmtScope::value scope) { if(value == 0) return false; @@ -230,30 +230,30 @@ namespace YAML return true; } - bool EmitterState::SetFlowType(GROUP_TYPE groupType, EMITTER_MANIP value, FMT_SCOPE scope) + bool EmitterState::SetFlowType(GroupType::value groupType, EMITTER_MANIP value, FmtScope::value scope) { switch(value) { case Block: case Flow: - _Set(groupType == GT_SEQ ? m_seqFmt : m_mapFmt, value, scope); + _Set(groupType == GroupType::Seq ? m_seqFmt : m_mapFmt, value, scope); return true; default: return false; } } - EMITTER_MANIP EmitterState::GetFlowType(GROUP_TYPE groupType) const + EMITTER_MANIP EmitterState::GetFlowType(GroupType::value groupType) const { // force flow style if we're currently in a flow - FLOW_TYPE flowType = GetCurGroupFlowType(); - if(flowType == FT_FLOW) + FlowType::value flowType = GetCurGroupFlowType(); + if(flowType == FlowType::Flow) return Flow; - // otherwise, go with what's asked of use - return (groupType == GT_SEQ ? m_seqFmt.get() : m_mapFmt.get()); + // otherwise, go with what's asked of us + return (groupType == GroupType::Seq ? m_seqFmt.get() : m_mapFmt.get()); } - bool EmitterState::SetMapKeyFormat(EMITTER_MANIP value, FMT_SCOPE scope) + bool EmitterState::SetMapKeyFormat(EMITTER_MANIP value, FmtScope::value scope) { switch(value) { case Auto: @@ -265,7 +265,7 @@ namespace YAML } } - bool EmitterState::SetFloatPrecision(int value, FMT_SCOPE scope) + bool EmitterState::SetFloatPrecision(int value, FmtScope::value scope) { if(value < 0 || value > std::numeric_limits::digits10) return false; @@ -273,7 +273,7 @@ namespace YAML return true; } - bool EmitterState::SetDoublePrecision(int value, FMT_SCOPE scope) + bool EmitterState::SetDoublePrecision(int value, FmtScope::value scope) { if(value < 0 || value > std::numeric_limits::digits10) return false; diff --git a/src/emitterstate.h b/src/emitterstate.h index 5698e32..e66145b 100644 --- a/src/emitterstate.h +++ b/src/emitterstate.h @@ -16,23 +16,10 @@ namespace YAML { - enum FMT_SCOPE { - LOCAL, - GLOBAL - }; - - enum GROUP_TYPE { - GT_NONE, - GT_SEQ, - GT_MAP - }; - - enum FLOW_TYPE { - FT_NONE, - FT_FLOW, - FT_BLOCK - }; - + struct FmtScope { enum value { Local, Global }; }; + struct GroupType { enum value { None, Seq, Map }; }; + struct FlowType { enum value { None, Flow, Block }; }; + enum NODE_STATE { NS_START, NS_READY_FOR_ATOM, @@ -93,11 +80,11 @@ namespace YAML void SetLocalValue(EMITTER_MANIP value); // group handling - void BeginGroup(GROUP_TYPE type); - void EndGroup(GROUP_TYPE type); + void BeginGroup(GroupType::value type); + void EndGroup(GroupType::value type); - GROUP_TYPE GetCurGroupType() const; - FLOW_TYPE GetCurGroupFlowType() const; + GroupType::value GetCurGroupType() const; + FlowType::value GetCurGroupFlowType() const; int GetCurIndent() const { return m_curIndent; } bool CurrentlyInLongKey(); @@ -114,46 +101,46 @@ namespace YAML void ClearModifiedSettings(); // formatters - bool SetOutputCharset(EMITTER_MANIP value, FMT_SCOPE scope); + bool SetOutputCharset(EMITTER_MANIP value, FmtScope::value scope); EMITTER_MANIP GetOutputCharset() const { return m_charset.get(); } - bool SetStringFormat(EMITTER_MANIP value, FMT_SCOPE scope); + bool SetStringFormat(EMITTER_MANIP value, FmtScope::value scope); EMITTER_MANIP GetStringFormat() const { return m_strFmt.get(); } - bool SetBoolFormat(EMITTER_MANIP value, FMT_SCOPE scope); + bool SetBoolFormat(EMITTER_MANIP value, FmtScope::value scope); EMITTER_MANIP GetBoolFormat() const { return m_boolFmt.get(); } - bool SetBoolLengthFormat(EMITTER_MANIP value, FMT_SCOPE scope); + bool SetBoolLengthFormat(EMITTER_MANIP value, FmtScope::value scope); EMITTER_MANIP GetBoolLengthFormat() const { return m_boolLengthFmt.get(); } - bool SetBoolCaseFormat(EMITTER_MANIP value, FMT_SCOPE scope); + bool SetBoolCaseFormat(EMITTER_MANIP value, FmtScope::value scope); EMITTER_MANIP GetBoolCaseFormat() const { return m_boolCaseFmt.get(); } - bool SetIntFormat(EMITTER_MANIP value, FMT_SCOPE scope); + bool SetIntFormat(EMITTER_MANIP value, FmtScope::value scope); EMITTER_MANIP GetIntFormat() const { return m_intFmt.get(); } - bool SetIndent(unsigned value, FMT_SCOPE scope); + bool SetIndent(unsigned value, FmtScope::value scope); int GetIndent() const { return m_indent.get(); } - bool SetPreCommentIndent(unsigned value, FMT_SCOPE scope); + bool SetPreCommentIndent(unsigned value, FmtScope::value scope); int GetPreCommentIndent() const { return m_preCommentIndent.get(); } - bool SetPostCommentIndent(unsigned value, FMT_SCOPE scope); + bool SetPostCommentIndent(unsigned value, FmtScope::value scope); int GetPostCommentIndent() const { return m_postCommentIndent.get(); } - bool SetFlowType(GROUP_TYPE groupType, EMITTER_MANIP value, FMT_SCOPE scope); - EMITTER_MANIP GetFlowType(GROUP_TYPE groupType) const; + bool SetFlowType(GroupType::value groupType, EMITTER_MANIP value, FmtScope::value scope); + EMITTER_MANIP GetFlowType(GroupType::value groupType) const; - bool SetMapKeyFormat(EMITTER_MANIP value, FMT_SCOPE scope); + bool SetMapKeyFormat(EMITTER_MANIP value, FmtScope::value scope); EMITTER_MANIP GetMapKeyFormat() const { return m_mapKeyFmt.get(); } - bool SetFloatPrecision(int value, FMT_SCOPE scope); + bool SetFloatPrecision(int value, FmtScope::value scope); unsigned GetFloatPrecision() const { return m_floatPrecision.get(); } - bool SetDoublePrecision(int value, FMT_SCOPE scope); + bool SetDoublePrecision(int value, FmtScope::value scope); unsigned GetDoublePrecision() const { return m_doublePrecision.get(); } private: template - void _Set(Setting& fmt, T value, FMT_SCOPE scope); + void _Set(Setting& fmt, T value, FmtScope::value scope); private: // basic state ok? @@ -181,9 +168,9 @@ namespace YAML SettingChanges m_globalModifiedSettings; struct Group { - Group(GROUP_TYPE type_): type(type_), usingLongKey(false), indent(0) {} + Group(GroupType::value type_): type(type_), usingLongKey(false), indent(0) {} - GROUP_TYPE type; + GroupType::value type; EMITTER_MANIP flow; bool usingLongKey; int indent; @@ -198,12 +185,12 @@ namespace YAML }; template - void EmitterState::_Set(Setting& fmt, T value, FMT_SCOPE scope) { + void EmitterState::_Set(Setting& fmt, T value, FmtScope::value scope) { switch(scope) { - case LOCAL: + case FmtScope::Local: m_modifiedSettings.push(fmt.set(value)); break; - case GLOBAL: + case FmtScope::Global: fmt.set(value); m_globalModifiedSettings.push(fmt.set(value)); // this pushes an identity set, so when we restore, // it restores to the value here, and not the previous one From 5a2183f55b6a2c7e657a0781d2712c37f8abfea9 Mon Sep 17 00:00:00 2001 From: Jesse Beder Date: Mon, 21 May 2012 16:31:07 -0500 Subject: [PATCH 05/65] Removed old emitter state machine --- include/yaml-cpp/emitter.h | 19 -- src/emitter.cpp | 539 +------------------------------------ src/emitterstate.cpp | 25 +- src/emitterstate.h | 68 +---- 4 files changed, 13 insertions(+), 638 deletions(-) diff --git a/include/yaml-cpp/emitter.h b/include/yaml-cpp/emitter.h index 1d7edf2..5ea2b47 100644 --- a/include/yaml-cpp/emitter.h +++ b/include/yaml-cpp/emitter.h @@ -70,21 +70,11 @@ namespace YAML Emitter& WriteStreamable(T value); private: - void PreWriteIntegralType(std::stringstream& str); - void PreWriteStreamable(std::stringstream& str); - void PostWriteIntegralType(const std::stringstream& str); - void PostWriteStreamable(const std::stringstream& str); - template void SetStreamablePrecision(std::stringstream&) {} unsigned GetFloatPrecision() const; unsigned GetDoublePrecision() const; private: - void PreAtomicWrite(); - bool GotoNextPreAtomicState(); - void PostAtomicWrite(); - void EmitSeparationIfNecessary(); - void EmitBeginDoc(); void EmitEndDoc(); void EmitBeginSeq(); @@ -111,10 +101,6 @@ namespace YAML if(!good()) return *this; - std::stringstream str; - PreWriteIntegralType(str); - str << value; - PostWriteIntegralType(str); return *this; } @@ -124,11 +110,6 @@ namespace YAML if(!good()) return *this; - std::stringstream str; - PreWriteStreamable(str); - SetStreamablePrecision(str); - str << value; - PostWriteStreamable(str); return *this; } diff --git a/src/emitter.cpp b/src/emitter.cpp index 6bd80ec..bb69988 100644 --- a/src/emitter.cpp +++ b/src/emitter.cpp @@ -164,207 +164,11 @@ namespace YAML return *this; } - // GotoNextPreAtomicState - // . Runs the state machine, emitting if necessary, and returns 'true' if done (i.e., ready to emit an atom) - bool Emitter::GotoNextPreAtomicState() - { - if(!good()) - return true; - - unsigned curIndent = m_pState->GetCurIndent(); - - EMITTER_STATE curState = m_pState->GetCurState(); - switch(curState) { - // document-level - case ES_WAITING_FOR_DOC: - m_pState->SwitchState(ES_WRITING_DOC); - return true; - case ES_WRITING_DOC: - return true; - case ES_DONE_WITH_DOC: - EmitBeginDoc(); - return false; - - // block sequence - case ES_WAITING_FOR_BLOCK_SEQ_ENTRY: - m_stream << IndentTo(curIndent) << "-"; - m_pState->RequireSoftSeparation(); - m_pState->SwitchState(ES_WRITING_BLOCK_SEQ_ENTRY); - return true; - case ES_WRITING_BLOCK_SEQ_ENTRY: - return true; - case ES_DONE_WITH_BLOCK_SEQ_ENTRY: - m_stream << '\n'; - m_pState->SwitchState(ES_WAITING_FOR_BLOCK_SEQ_ENTRY); - return false; - - // flow sequence - case ES_WAITING_FOR_FLOW_SEQ_ENTRY: - m_pState->SwitchState(ES_WRITING_FLOW_SEQ_ENTRY); - return true; - case ES_WRITING_FLOW_SEQ_ENTRY: - return true; - case ES_DONE_WITH_FLOW_SEQ_ENTRY: - EmitSeparationIfNecessary(); - m_stream << ','; - m_pState->RequireSoftSeparation(); - m_pState->SwitchState(ES_WAITING_FOR_FLOW_SEQ_ENTRY); - return false; - - // block map - case ES_WAITING_FOR_BLOCK_MAP_ENTRY: - m_pState->SetError(ErrorMsg::EXPECTED_KEY_TOKEN); - return true; - case ES_WAITING_FOR_BLOCK_MAP_KEY: - if(m_pState->CurrentlyInLongKey()) { - m_stream << IndentTo(curIndent) << '?'; - m_pState->RequireSoftSeparation(); - } - m_pState->SwitchState(ES_WRITING_BLOCK_MAP_KEY); - return true; - case ES_WRITING_BLOCK_MAP_KEY: - return true; - case ES_DONE_WITH_BLOCK_MAP_KEY: - m_pState->SetError(ErrorMsg::EXPECTED_VALUE_TOKEN); - return true; - case ES_WAITING_FOR_BLOCK_MAP_VALUE: - m_pState->SwitchState(ES_WRITING_BLOCK_MAP_VALUE); - return true; - case ES_WRITING_BLOCK_MAP_VALUE: - return true; - case ES_DONE_WITH_BLOCK_MAP_VALUE: - m_pState->SetError(ErrorMsg::EXPECTED_KEY_TOKEN); - return true; - - // flow map - case ES_WAITING_FOR_FLOW_MAP_ENTRY: - m_pState->SetError(ErrorMsg::EXPECTED_KEY_TOKEN); - return true; - case ES_WAITING_FOR_FLOW_MAP_KEY: - EmitSeparationIfNecessary(); - m_pState->SwitchState(ES_WRITING_FLOW_MAP_KEY); - if(m_pState->CurrentlyInLongKey()) { - m_stream << '?'; - m_pState->RequireSoftSeparation(); - } - return true; - case ES_WRITING_FLOW_MAP_KEY: - return true; - case ES_DONE_WITH_FLOW_MAP_KEY: - m_pState->SetError(ErrorMsg::EXPECTED_VALUE_TOKEN); - return true; - case ES_WAITING_FOR_FLOW_MAP_VALUE: - EmitSeparationIfNecessary(); - m_stream << ':'; - m_pState->RequireSoftSeparation(); - m_pState->SwitchState(ES_WRITING_FLOW_MAP_VALUE); - return true; - case ES_WRITING_FLOW_MAP_VALUE: - return true; - case ES_DONE_WITH_FLOW_MAP_VALUE: - m_pState->SetError(ErrorMsg::EXPECTED_KEY_TOKEN); - return true; - default: - assert(false); - } - - assert(false); - return true; - } - - // PreAtomicWrite - // . Depending on the emitter state, write to the stream to get it - // in position to do an atomic write (e.g., scalar, sequence, or map) - void Emitter::PreAtomicWrite() - { - if(!good()) - return; - - while(!GotoNextPreAtomicState()) - ; - } - - // PostAtomicWrite - // . Clean up - void Emitter::PostAtomicWrite() - { - if(!good()) - return; - - EMITTER_STATE curState = m_pState->GetCurState(); - switch(curState) { - // document-level - case ES_WRITING_DOC: - m_pState->SwitchState(ES_DONE_WITH_DOC); - break; - - // block seq - case ES_WRITING_BLOCK_SEQ_ENTRY: - m_pState->SwitchState(ES_DONE_WITH_BLOCK_SEQ_ENTRY); - break; - - // flow seq - case ES_WRITING_FLOW_SEQ_ENTRY: - m_pState->SwitchState(ES_DONE_WITH_FLOW_SEQ_ENTRY); - break; - - // block map - case ES_WRITING_BLOCK_MAP_KEY: - if(!m_pState->CurrentlyInLongKey()) { - m_stream << ':'; - m_pState->RequireSoftSeparation(); - } - m_pState->SwitchState(ES_DONE_WITH_BLOCK_MAP_KEY); - break; - case ES_WRITING_BLOCK_MAP_VALUE: - m_pState->SwitchState(ES_DONE_WITH_BLOCK_MAP_VALUE); - break; - - // flow map - case ES_WRITING_FLOW_MAP_KEY: - m_pState->SwitchState(ES_DONE_WITH_FLOW_MAP_KEY); - break; - case ES_WRITING_FLOW_MAP_VALUE: - m_pState->SwitchState(ES_DONE_WITH_FLOW_MAP_VALUE); - break; - default: - assert(false); - }; - - m_pState->ClearModifiedSettings(); - } - - // EmitSeparationIfNecessary - void Emitter::EmitSeparationIfNecessary() - { - if(!good()) - return; - - if(m_pState->RequiresSoftSeparation()) - m_stream << ' '; - else if(m_pState->RequiresHardSeparation()) - m_stream << '\n'; - m_pState->UnsetSeparation(); - } - // EmitBeginDoc void Emitter::EmitBeginDoc() { if(!good()) return; - - EMITTER_STATE curState = m_pState->GetCurState(); - if(curState != ES_WAITING_FOR_DOC && curState != ES_WRITING_DOC && curState != ES_DONE_WITH_DOC) { - m_pState->SetError("Unexpected begin document"); - return; - } - - if(curState == ES_WRITING_DOC || curState == ES_DONE_WITH_DOC) - m_stream << '\n'; - m_stream << "---\n"; - - m_pState->UnsetSeparation(); - m_pState->SwitchState(ES_WAITING_FOR_DOC); } // EmitEndDoc @@ -372,20 +176,6 @@ namespace YAML { if(!good()) return; - - - EMITTER_STATE curState = m_pState->GetCurState(); - if(curState != ES_WAITING_FOR_DOC && curState != ES_WRITING_DOC && curState != ES_DONE_WITH_DOC) { - m_pState->SetError("Unexpected end document"); - return; - } - - if(curState == ES_WRITING_DOC || curState == ES_DONE_WITH_DOC) - m_stream << '\n'; - m_stream << "...\n"; - - m_pState->UnsetSeparation(); - m_pState->SwitchState(ES_WAITING_FOR_DOC); } // EmitBeginSeq @@ -393,33 +183,6 @@ namespace YAML { if(!good()) return; - - // must have a long key if we're emitting a sequence - m_pState->StartLongKey(); - - PreAtomicWrite(); - - EMITTER_STATE curState = m_pState->GetCurState(); - EMITTER_MANIP flowType = m_pState->GetFlowType(GroupType::Seq); - if(flowType == Block) { - if(curState == ES_WRITING_BLOCK_SEQ_ENTRY || - curState == ES_WRITING_BLOCK_MAP_KEY || curState == ES_WRITING_BLOCK_MAP_VALUE || - curState == ES_WRITING_DOC - ) { - if(m_pState->RequiresHardSeparation() || curState != ES_WRITING_DOC) { - m_stream << "\n"; - m_pState->UnsetSeparation(); - } - } - m_pState->PushState(ES_WAITING_FOR_BLOCK_SEQ_ENTRY); - } else if(flowType == Flow) { - EmitSeparationIfNecessary(); - m_stream << "["; - m_pState->PushState(ES_WAITING_FOR_FLOW_SEQ_ENTRY); - } else - assert(false); - - m_pState->BeginGroup(GroupType::Seq); } // EmitEndSeq @@ -427,35 +190,6 @@ namespace YAML { if(!good()) return; - - if(m_pState->GetCurGroupType() != GroupType::Seq) - return m_pState->SetError(ErrorMsg::UNEXPECTED_END_SEQ); - - EMITTER_STATE curState = m_pState->GetCurState(); - FlowType::value flowType = m_pState->GetCurGroupFlowType(); - if(flowType == FlowType::Block) { - // Note: block sequences are *not* allowed to be empty, but we convert it - // to a flow sequence if it is - assert(curState == ES_DONE_WITH_BLOCK_SEQ_ENTRY || curState == ES_WAITING_FOR_BLOCK_SEQ_ENTRY); - if(curState == ES_WAITING_FOR_BLOCK_SEQ_ENTRY) { - // Note: only one of these will actually output anything for a given situation - EmitSeparationIfNecessary(); - unsigned curIndent = m_pState->GetCurIndent(); - m_stream << IndentTo(curIndent); - - m_stream << "[]"; - } - } else if(flowType == FlowType::Flow) { - // Note: flow sequences are allowed to be empty - assert(curState == ES_DONE_WITH_FLOW_SEQ_ENTRY || curState == ES_WAITING_FOR_FLOW_SEQ_ENTRY); - m_stream << "]"; - } else - assert(false); - - m_pState->PopState(); - m_pState->EndGroup(GroupType::Seq); - - PostAtomicWrite(); } // EmitBeginMap @@ -463,106 +197,19 @@ namespace YAML { if(!good()) return; - - // must have a long key if we're emitting a map - m_pState->StartLongKey(); - - PreAtomicWrite(); - - EMITTER_STATE curState = m_pState->GetCurState(); - EMITTER_MANIP flowType = m_pState->GetFlowType(GroupType::Map); - if(flowType == Block) { - if(curState == ES_WRITING_BLOCK_SEQ_ENTRY || - curState == ES_WRITING_BLOCK_MAP_KEY || curState == ES_WRITING_BLOCK_MAP_VALUE || - curState == ES_WRITING_DOC - ) { - if(m_pState->RequiresHardSeparation() || (curState != ES_WRITING_DOC && curState != ES_WRITING_BLOCK_SEQ_ENTRY)) { - m_stream << "\n"; - m_pState->UnsetSeparation(); - } - } - m_pState->PushState(ES_WAITING_FOR_BLOCK_MAP_ENTRY); - } else if(flowType == Flow) { - EmitSeparationIfNecessary(); - m_stream << "{"; - m_pState->PushState(ES_WAITING_FOR_FLOW_MAP_ENTRY); - } else - assert(false); - - m_pState->BeginGroup(GroupType::Map); } // EmitEndMap void Emitter::EmitEndMap() { if(!good()) - return; - - if(m_pState->GetCurGroupType() != GroupType::Map) - return m_pState->SetError(ErrorMsg::UNEXPECTED_END_MAP); - - EMITTER_STATE curState = m_pState->GetCurState(); - FlowType::value flowType = m_pState->GetCurGroupFlowType(); - if(flowType == FlowType::Block) { - // Note: block sequences are *not* allowed to be empty, but we convert it - // to a flow sequence if it is - assert(curState == ES_DONE_WITH_BLOCK_MAP_VALUE || curState == ES_WAITING_FOR_BLOCK_MAP_ENTRY); - if(curState == ES_WAITING_FOR_BLOCK_MAP_ENTRY) { - // Note: only one of these will actually output anything for a given situation - EmitSeparationIfNecessary(); - unsigned curIndent = m_pState->GetCurIndent(); - m_stream << IndentTo(curIndent); - m_stream << "{}"; - } - } else if(flowType == FlowType::Flow) { - // Note: flow maps are allowed to be empty - assert(curState == ES_DONE_WITH_FLOW_MAP_VALUE || curState == ES_WAITING_FOR_FLOW_MAP_ENTRY); - EmitSeparationIfNecessary(); - m_stream << "}"; - } else - assert(false); - - m_pState->PopState(); - m_pState->EndGroup(GroupType::Map); - - PostAtomicWrite(); - } + return; } // EmitKey void Emitter::EmitKey() { if(!good()) return; - - EMITTER_STATE curState = m_pState->GetCurState(); - FlowType::value flowType = m_pState->GetCurGroupFlowType(); - if(curState != ES_WAITING_FOR_BLOCK_MAP_ENTRY && curState != ES_DONE_WITH_BLOCK_MAP_VALUE - && curState != ES_WAITING_FOR_FLOW_MAP_ENTRY && curState != ES_DONE_WITH_FLOW_MAP_VALUE) - return m_pState->SetError(ErrorMsg::UNEXPECTED_KEY_TOKEN); - - if(flowType == FlowType::Block) { - if(curState == ES_DONE_WITH_BLOCK_MAP_VALUE) - m_stream << '\n'; - unsigned curIndent = m_pState->GetCurIndent(); - m_stream << IndentTo(curIndent); - m_pState->UnsetSeparation(); - m_pState->SwitchState(ES_WAITING_FOR_BLOCK_MAP_KEY); - } else if(flowType == FlowType::Flow) { - EmitSeparationIfNecessary(); - if(curState == ES_DONE_WITH_FLOW_MAP_VALUE) { - m_stream << ','; - m_pState->RequireSoftSeparation(); - } - m_pState->SwitchState(ES_WAITING_FOR_FLOW_MAP_KEY); - } else - assert(false); - - if(m_pState->GetMapKeyFormat() == LongKey) - m_pState->StartLongKey(); - else if(m_pState->GetMapKeyFormat() == Auto) - m_pState->StartSimpleKey(); - else - assert(false); } // EmitValue @@ -570,24 +217,6 @@ namespace YAML { if(!good()) return; - - EMITTER_STATE curState = m_pState->GetCurState(); - FlowType::value flowType = m_pState->GetCurGroupFlowType(); - if(curState != ES_DONE_WITH_BLOCK_MAP_KEY && curState != ES_DONE_WITH_FLOW_MAP_KEY) - return m_pState->SetError(ErrorMsg::UNEXPECTED_VALUE_TOKEN); - - if(flowType == FlowType::Block) { - if(m_pState->CurrentlyInLongKey()) { - m_stream << '\n'; - m_stream << IndentTo(m_pState->GetCurIndent()); - m_stream << ':'; - m_pState->RequireSoftSeparation(); - } - m_pState->SwitchState(ES_WAITING_FOR_BLOCK_MAP_VALUE); - } else if(flowType == FlowType::Flow) { - m_pState->SwitchState(ES_WAITING_FOR_FLOW_MAP_VALUE); - } else - assert(false); } // EmitNewline @@ -595,21 +224,11 @@ namespace YAML { if(!good()) return; - - if(CanEmitNewline()) { - m_stream << '\n'; - m_pState->UnsetSeparation(); - } } bool Emitter::CanEmitNewline() const { - FlowType::value flowType = m_pState->GetCurGroupFlowType(); - if(flowType == FlowType::Block && m_pState->CurrentlyInLongKey()) - return true; - - EMITTER_STATE curState = m_pState->GetCurState(); - return curState != ES_DONE_WITH_BLOCK_MAP_KEY && curState != ES_WAITING_FOR_BLOCK_MAP_VALUE && curState != ES_WRITING_BLOCK_MAP_VALUE; + return false; } // ******************************************************************************************* @@ -619,75 +238,9 @@ namespace YAML { if(!good()) return *this; - - // literal scalars must use long keys - if(m_pState->GetStringFormat() == Literal && m_pState->GetCurGroupFlowType() != FlowType::Flow) - m_pState->StartLongKey(); - - PreAtomicWrite(); - EmitSeparationIfNecessary(); - - bool escapeNonAscii = m_pState->GetOutputCharset() == EscapeNonAscii; - EMITTER_MANIP strFmt = m_pState->GetStringFormat(); - FlowType::value flowType = m_pState->GetCurGroupFlowType(); - unsigned curIndent = m_pState->GetCurIndent(); - - switch(strFmt) { - case Auto: - Utils::WriteString(m_stream, str, flowType == FlowType::Flow, escapeNonAscii); - break; - case SingleQuoted: - if(!Utils::WriteSingleQuotedString(m_stream, str)) { - m_pState->SetError(ErrorMsg::SINGLE_QUOTED_CHAR); - return *this; - } - break; - case DoubleQuoted: - Utils::WriteDoubleQuotedString(m_stream, str, escapeNonAscii); - break; - case Literal: - if(flowType == FlowType::Flow) - Utils::WriteString(m_stream, str, flowType == FlowType::Flow, escapeNonAscii); - else - Utils::WriteLiteralString(m_stream, str, curIndent + m_pState->GetIndent()); - break; - default: - assert(false); - } - - PostAtomicWrite(); return *this; } - void Emitter::PreWriteIntegralType(std::stringstream& str) - { - PreAtomicWrite(); - EmitSeparationIfNecessary(); - - EMITTER_MANIP intFmt = m_pState->GetIntFormat(); - switch(intFmt) { - case Dec: - str << std::dec; - break; - case Hex: - str << "0x"; - str << std::hex; - break; - case Oct: - str << "0"; - str << std::oct; - break; - default: - assert(false); - } - } - - void Emitter::PreWriteStreamable(std::stringstream&) - { - PreAtomicWrite(); - EmitSeparationIfNecessary(); - } - unsigned Emitter::GetFloatPrecision() const { return m_pState->GetFloatPrecision(); @@ -698,18 +251,6 @@ namespace YAML return m_pState->GetDoublePrecision(); } - void Emitter::PostWriteIntegralType(const std::stringstream& str) - { - m_stream << str.str(); - PostAtomicWrite(); - } - - void Emitter::PostWriteStreamable(const std::stringstream& str) - { - m_stream << str.str(); - PostAtomicWrite(); - } - const char *Emitter::ComputeFullBoolName(bool b) const { const EMITTER_MANIP mainFmt = (m_pState->GetBoolLengthFormat() == ShortBool ? YesNoBool : m_pState->GetBoolFormat()); @@ -749,17 +290,7 @@ namespace YAML { if(!good()) return *this; - - PreAtomicWrite(); - EmitSeparationIfNecessary(); - - const char *name = ComputeFullBoolName(b); - if(m_pState->GetBoolLengthFormat() == ShortBool) - m_stream << name[0]; - else - m_stream << name; - PostAtomicWrite(); return *this; } @@ -767,13 +298,7 @@ namespace YAML { if(!good()) return *this; - - PreAtomicWrite(); - EmitSeparationIfNecessary(); - - Utils::WriteChar(m_stream, ch); - - PostAtomicWrite(); + return *this; } @@ -781,14 +306,7 @@ namespace YAML { if(!good()) return *this; - - PreAtomicWrite(); - EmitSeparationIfNecessary(); - if(!Utils::WriteAlias(m_stream, alias.content)) { - m_pState->SetError(ErrorMsg::INVALID_ALIAS); - return *this; - } - PostAtomicWrite(); + return *this; } @@ -796,15 +314,7 @@ namespace YAML { if(!good()) return *this; - - PreAtomicWrite(); - EmitSeparationIfNecessary(); - if(!Utils::WriteAnchor(m_stream, anchor.content)) { - m_pState->SetError(ErrorMsg::INVALID_ANCHOR); - return *this; - } - m_pState->RequireHardSeparation(); - // Note: no PostAtomicWrite() because we need another value for this node + return *this; } @@ -813,24 +323,7 @@ namespace YAML if(!good()) return *this; - PreAtomicWrite(); - EmitSeparationIfNecessary(); - - bool success = false; - if(tag.type == _Tag::Type::Verbatim) - success = Utils::WriteTag(m_stream, tag.content, true); - else if(tag.type == _Tag::Type::PrimaryHandle) - success = Utils::WriteTag(m_stream, tag.content, false); - else - success = Utils::WriteTagWithPrefix(m_stream, tag.prefix, tag.content); - - if(!success) { - m_pState->SetError(ErrorMsg::INVALID_TAG); - return *this; - } - - m_pState->RequireHardSeparation(); - // Note: no PostAtomicWrite() because we need another value for this node + return *this; } @@ -843,13 +336,7 @@ namespace YAML { if(!good()) return *this; - - if(m_stream.col() > 0) - m_stream << Indentation(m_pState->GetPreCommentIndent()); - Utils::WriteComment(m_stream, comment.content, m_pState->GetPostCommentIndent()); - m_pState->RequireHardSeparation(); - m_pState->ForceHardSeparation(); - + return *this; } @@ -857,11 +344,7 @@ namespace YAML { if(!good()) return *this; - - PreAtomicWrite(); - EmitSeparationIfNecessary(); - m_stream << "~"; - PostAtomicWrite(); + return *this; } @@ -871,11 +354,7 @@ namespace YAML if(!good()) return *this; - - PreAtomicWrite(); - EmitSeparationIfNecessary(); - Utils::WriteBinary(m_stream, binary); - PostAtomicWrite(); + return *this; } } diff --git a/src/emitterstate.cpp b/src/emitterstate.cpp index 5be8910..cc60ee6 100644 --- a/src/emitterstate.cpp +++ b/src/emitterstate.cpp @@ -4,11 +4,8 @@ namespace YAML { - EmitterState::EmitterState(): m_isGood(true), m_curIndent(0), m_requiresSoftSeparation(false), m_requiresHardSeparation(false) + EmitterState::EmitterState(): m_isGood(true), m_curIndent(0) { - // start up - m_stateStack.push(ES_WAITING_FOR_DOC); - // set default global manipulators m_charset.set(EmitNonAscii); m_strFmt.set(Auto); @@ -59,7 +56,6 @@ namespace YAML // set up group pGroup->flow = GetFlowType(type); pGroup->indent = GetIndent(); - pGroup->usingLongKey = (GetMapKeyFormat() == LongKey ? true : false); m_groups.push(pGroup); } @@ -101,25 +97,6 @@ namespace YAML return (m_groups.top().flow == Flow ? FlowType::Flow : FlowType::Block); } - - bool EmitterState::CurrentlyInLongKey() - { - if(m_groups.empty()) - return false; - return m_groups.top().usingLongKey; - } - - void EmitterState::StartLongKey() - { - if(!m_groups.empty()) - m_groups.top().usingLongKey = true; - } - - void EmitterState::StartSimpleKey() - { - if(!m_groups.empty()) - m_groups.top().usingLongKey = false; - } void EmitterState::ClearModifiedSettings() { diff --git a/src/emitterstate.h b/src/emitterstate.h index e66145b..06aff62 100644 --- a/src/emitterstate.h +++ b/src/emitterstate.h @@ -20,46 +20,6 @@ namespace YAML struct GroupType { enum value { None, Seq, Map }; }; struct FlowType { enum value { None, Flow, Block }; }; - enum NODE_STATE { - NS_START, - NS_READY_FOR_ATOM, - NS_END - }; - - enum EMITTER_STATE { - ES_WAITING_FOR_DOC, - ES_WRITING_DOC, - ES_DONE_WITH_DOC, - - // block seq - ES_WAITING_FOR_BLOCK_SEQ_ENTRY, - ES_WRITING_BLOCK_SEQ_ENTRY, - ES_DONE_WITH_BLOCK_SEQ_ENTRY, - - // flow seq - ES_WAITING_FOR_FLOW_SEQ_ENTRY, - ES_WRITING_FLOW_SEQ_ENTRY, - ES_DONE_WITH_FLOW_SEQ_ENTRY, - - // block map - ES_WAITING_FOR_BLOCK_MAP_ENTRY, - ES_WAITING_FOR_BLOCK_MAP_KEY, - ES_WRITING_BLOCK_MAP_KEY, - ES_DONE_WITH_BLOCK_MAP_KEY, - ES_WAITING_FOR_BLOCK_MAP_VALUE, - ES_WRITING_BLOCK_MAP_VALUE, - ES_DONE_WITH_BLOCK_MAP_VALUE, - - // flow map - ES_WAITING_FOR_FLOW_MAP_ENTRY, - ES_WAITING_FOR_FLOW_MAP_KEY, - ES_WRITING_FLOW_MAP_KEY, - ES_DONE_WITH_FLOW_MAP_KEY, - ES_WAITING_FOR_FLOW_MAP_VALUE, - ES_WRITING_FLOW_MAP_VALUE, - ES_DONE_WITH_FLOW_MAP_VALUE - }; - class EmitterState { public: @@ -71,14 +31,6 @@ namespace YAML const std::string GetLastError() const { return m_lastError; } void SetError(const std::string& error) { m_isGood = false; m_lastError = error; } - // main state of the machine - EMITTER_STATE GetCurState() const { return m_stateStack.top(); } - void SwitchState(EMITTER_STATE state) { PopState(); PushState(state); } - void PushState(EMITTER_STATE state) { m_stateStack.push(state); } - void PopState() { m_stateStack.pop(); } - - void SetLocalValue(EMITTER_MANIP value); - // group handling void BeginGroup(GroupType::value type); void EndGroup(GroupType::value type); @@ -86,21 +38,12 @@ namespace YAML GroupType::value GetCurGroupType() const; FlowType::value GetCurGroupFlowType() const; int GetCurIndent() const { return m_curIndent; } - - bool CurrentlyInLongKey(); - void StartLongKey(); - void StartSimpleKey(); - - bool RequiresSoftSeparation() const { return m_requiresSoftSeparation; } - bool RequiresHardSeparation() const { return m_requiresHardSeparation; } - void RequireSoftSeparation() { m_requiresSoftSeparation = true; } - void RequireHardSeparation() { m_requiresSoftSeparation = true; m_requiresHardSeparation = true; } - void ForceHardSeparation() { m_requiresSoftSeparation = false; } - void UnsetSeparation() { m_requiresSoftSeparation = false; m_requiresHardSeparation = false; } void ClearModifiedSettings(); // formatters + void SetLocalValue(EMITTER_MANIP value); + bool SetOutputCharset(EMITTER_MANIP value, FmtScope::value scope); EMITTER_MANIP GetOutputCharset() const { return m_charset.get(); } @@ -148,8 +91,6 @@ namespace YAML std::string m_lastError; // other state - std::stack m_stateStack; - Setting m_charset; Setting m_strFmt; Setting m_boolFmt; @@ -168,11 +109,10 @@ namespace YAML SettingChanges m_globalModifiedSettings; struct Group { - Group(GroupType::value type_): type(type_), usingLongKey(false), indent(0) {} + Group(GroupType::value type_): type(type_), indent(0) {} GroupType::value type; EMITTER_MANIP flow; - bool usingLongKey; int indent; SettingChanges modifiedSettings; @@ -180,8 +120,6 @@ namespace YAML ptr_stack m_groups; unsigned m_curIndent; - bool m_requiresSoftSeparation; - bool m_requiresHardSeparation; }; template From 923ccc8fedbdbf1dee8e5b827fadddd70da4507e Mon Sep 17 00:00:00 2001 From: Jesse Beder Date: Mon, 21 May 2012 16:54:45 -0500 Subject: [PATCH 06/65] Implemented begin/end doc --- include/yaml-cpp/emitter.h | 2 -- src/emitter.cpp | 73 +++++++++++++++++++++++++++++--------- src/emitterstate.cpp | 25 ++++++++++--- src/emitterstate.h | 21 +++++++---- util/sandbox.cpp | 7 ++-- 5 files changed, 93 insertions(+), 35 deletions(-) diff --git a/include/yaml-cpp/emitter.h b/include/yaml-cpp/emitter.h index 5ea2b47..ae88751 100644 --- a/include/yaml-cpp/emitter.h +++ b/include/yaml-cpp/emitter.h @@ -81,8 +81,6 @@ namespace YAML void EmitEndSeq(); void EmitBeginMap(); void EmitEndMap(); - void EmitKey(); - void EmitValue(); void EmitNewline(); void EmitKindTag(); void EmitTag(bool verbatim, const _Tag& tag); diff --git a/src/emitter.cpp b/src/emitter.cpp index bb69988..d3cc8f0 100644 --- a/src/emitter.cpp +++ b/src/emitter.cpp @@ -131,10 +131,8 @@ namespace YAML EmitEndMap(); break; case Key: - EmitKey(); - break; case Value: - EmitValue(); + // deprecated (these can be deduced by the parity of nodes in a map) break; case TagByKind: EmitKindTag(); @@ -169,6 +167,20 @@ namespace YAML { if(!good()) return; + + if(m_pState->CurGroupType() != GroupType::None) { + m_pState->SetError("Unexpected begin document"); + return; + } + + if(m_pState->HasAnchor() || m_pState->HasTag()) { + m_pState->SetError("Unexpected begin document"); + return; + } + + if(m_stream.col() > 0) + m_stream << "\n"; + m_stream << "---\n"; } // EmitEndDoc @@ -176,6 +188,20 @@ namespace YAML { if(!good()) return; + + if(m_pState->CurGroupType() != GroupType::None) { + m_pState->SetError("Unexpected begin document"); + return; + } + + if(m_pState->HasAnchor() || m_pState->HasTag()) { + m_pState->SetError("Unexpected begin document"); + return; + } + + if(m_stream.col() > 0) + m_stream << "\n"; + m_stream << "...\n"; } // EmitBeginSeq @@ -183,6 +209,8 @@ namespace YAML { if(!good()) return; + + m_pState->BeginGroup(GroupType::Seq); } // EmitEndSeq @@ -190,6 +218,8 @@ namespace YAML { if(!good()) return; + + m_pState->EndGroup(GroupType::Seq); } // EmitBeginMap @@ -197,27 +227,18 @@ namespace YAML { if(!good()) return; + + m_pState->BeginGroup(GroupType::Map); } // EmitEndMap void Emitter::EmitEndMap() - { - if(!good()) - return; } - - // EmitKey - void Emitter::EmitKey() { if(!good()) return; - } - - // EmitValue - void Emitter::EmitValue() - { - if(!good()) - return; - } + + m_pState->EndGroup(GroupType::Map); + } // EmitNewline void Emitter::EmitNewline() @@ -238,6 +259,9 @@ namespace YAML { if(!good()) return *this; + + m_pState->BeginScalar(); + return *this; } @@ -291,6 +315,8 @@ namespace YAML if(!good()) return *this; + m_pState->BeginScalar(); + return *this; } @@ -299,6 +325,8 @@ namespace YAML if(!good()) return *this; + m_pState->BeginScalar(); + return *this; } @@ -307,6 +335,8 @@ namespace YAML if(!good()) return *this; + m_pState->BeginScalar(); + return *this; } @@ -315,6 +345,8 @@ namespace YAML if(!good()) return *this; + m_pState->BeginScalar(); + return *this; } @@ -323,6 +355,7 @@ namespace YAML if(!good()) return *this; + m_pState->BeginScalar(); return *this; } @@ -337,6 +370,8 @@ namespace YAML if(!good()) return *this; + m_pState->BeginScalar(); + return *this; } @@ -345,6 +380,8 @@ namespace YAML if(!good()) return *this; + m_pState->BeginScalar(); + return *this; } @@ -355,6 +392,8 @@ namespace YAML if(!good()) return *this; + m_pState->BeginScalar(); + return *this; } } diff --git a/src/emitterstate.cpp b/src/emitterstate.cpp index cc60ee6..f42e462 100644 --- a/src/emitterstate.cpp +++ b/src/emitterstate.cpp @@ -4,7 +4,7 @@ namespace YAML { - EmitterState::EmitterState(): m_isGood(true), m_curIndent(0) + EmitterState::EmitterState(): m_isGood(true), m_curIndent(0), m_hasAnchor(false), m_hasTag(false) { // set default global manipulators m_charset.set(EmitNonAscii); @@ -43,8 +43,24 @@ namespace YAML SetMapKeyFormat(value, FmtScope::Local); } + void EmitterState::BeginNode() + { + if(!m_groups.empty()) + m_groups.top().childCount++; + + m_hasAnchor = false; + m_hasTag = false; + } + + void EmitterState::BeginScalar() + { + BeginNode(); + } + void EmitterState::BeginGroup(GroupType::value type) { + BeginNode(); + unsigned lastIndent = (m_groups.empty() ? 0 : m_groups.top().indent); m_curIndent += lastIndent; @@ -82,7 +98,7 @@ namespace YAML m_globalModifiedSettings.restore(); } - GroupType::value EmitterState::GetCurGroupType() const + GroupType::value EmitterState::CurGroupType() const { if(m_groups.empty()) return GroupType::None; @@ -90,7 +106,7 @@ namespace YAML return m_groups.top().type; } - FlowType::value EmitterState::GetCurGroupFlowType() const + FlowType::value EmitterState::CurGroupFlowType() const { if(m_groups.empty()) return FlowType::None; @@ -222,8 +238,7 @@ namespace YAML EMITTER_MANIP EmitterState::GetFlowType(GroupType::value groupType) const { // force flow style if we're currently in a flow - FlowType::value flowType = GetCurGroupFlowType(); - if(flowType == FlowType::Flow) + if(CurGroupFlowType() == FlowType::Flow) return Flow; // otherwise, go with what's asked of us diff --git a/src/emitterstate.h b/src/emitterstate.h index 06aff62..92eabe8 100644 --- a/src/emitterstate.h +++ b/src/emitterstate.h @@ -13,6 +13,7 @@ #include #include #include +#include namespace YAML { @@ -29,15 +30,18 @@ namespace YAML // basic state checking bool good() const { return m_isGood; } const std::string GetLastError() const { return m_lastError; } - void SetError(const std::string& error) { m_isGood = false; m_lastError = error; } + void SetError(const std::string& error) { throw std::runtime_error(error); m_isGood = false; m_lastError = error; } - // group handling + // node handling + void BeginScalar(); void BeginGroup(GroupType::value type); void EndGroup(GroupType::value type); - GroupType::value GetCurGroupType() const; - FlowType::value GetCurGroupFlowType() const; - int GetCurIndent() const { return m_curIndent; } + GroupType::value CurGroupType() const; + FlowType::value CurGroupFlowType() const; + int CurIndent() const { return m_curIndent; } + bool HasAnchor() const { return m_hasAnchor; } + bool HasTag() const { return m_hasTag; } void ClearModifiedSettings(); @@ -84,6 +88,8 @@ namespace YAML private: template void _Set(Setting& fmt, T value, FmtScope::value scope); + + void BeginNode(); private: // basic state ok? @@ -109,17 +115,20 @@ namespace YAML SettingChanges m_globalModifiedSettings; struct Group { - Group(GroupType::value type_): type(type_), indent(0) {} + explicit Group(GroupType::value type_): type(type_), indent(0), childCount(0) {} GroupType::value type; EMITTER_MANIP flow; int indent; + std::size_t childCount; SettingChanges modifiedSettings; }; ptr_stack m_groups; unsigned m_curIndent; + bool m_hasAnchor; + bool m_hasTag; }; template diff --git a/util/sandbox.cpp b/util/sandbox.cpp index e0979f2..3f1fa3e 100644 --- a/util/sandbox.cpp +++ b/util/sandbox.cpp @@ -4,14 +4,11 @@ int main() { YAML::Emitter out; + out << YAML::BeginDoc; out << YAML::BeginSeq; out << "foo"; - out << YAML::Comment("Skills"); - out << YAML::BeginMap; - out << YAML::Key << "attack" << YAML::Value << 23; - out << YAML::Key << "intelligence" << YAML::Value << 56; - out << YAML::EndMap; out << YAML::EndSeq; + out << YAML::EndDoc; std::cout << out.c_str() << "\n"; return 0; From 65d80ebc116db557c83dd5428cbb546dd8a08be1 Mon Sep 17 00:00:00 2001 From: Jesse Beder Date: Mon, 21 May 2012 17:06:12 -0500 Subject: [PATCH 07/65] Started prepare node --- include/yaml-cpp/emitter.h | 7 +++++ src/emitter.cpp | 61 ++++++++++++++++++++++++++++++++++++++ util/sandbox.cpp | 4 --- 3 files changed, 68 insertions(+), 4 deletions(-) diff --git a/include/yaml-cpp/emitter.h b/include/yaml-cpp/emitter.h index ae88751..4e329cc 100644 --- a/include/yaml-cpp/emitter.h +++ b/include/yaml-cpp/emitter.h @@ -85,6 +85,13 @@ namespace YAML void EmitKindTag(); void EmitTag(bool verbatim, const _Tag& tag); + void PrepareNode(); + void PrepareTopNode(); + void FlowSeqPrepareNode(); + void BlockSeqPrepareNode(); + void FlowMapPrepareNode(); + void BlockMapPrepareNode(); + const char *ComputeFullBoolName(bool b) const; bool CanEmitNewline() const; diff --git a/src/emitter.cpp b/src/emitter.cpp index d3cc8f0..6ef9d2a 100644 --- a/src/emitter.cpp +++ b/src/emitter.cpp @@ -210,6 +210,8 @@ namespace YAML if(!good()) return; + PrepareNode(); + m_pState->BeginGroup(GroupType::Seq); } @@ -228,6 +230,8 @@ namespace YAML if(!good()) return; + PrepareNode(); + m_pState->BeginGroup(GroupType::Map); } @@ -252,6 +256,61 @@ namespace YAML return false; } + // Put the stream in a state so we can simply write the next node + // E.g., if we're in a sequence, write the "- " + void Emitter::PrepareNode() + { + switch(m_pState->CurGroupType()) { + case GroupType::None: + PrepareTopNode(); + break; + case GroupType::Seq: + switch(m_pState->CurGroupFlowType()) { + case FlowType::Flow: + FlowSeqPrepareNode(); + break; + case FlowType::Block: + BlockSeqPrepareNode(); + break; + case FlowType::None: + assert(false); + } + break; + case GroupType::Map: + switch(m_pState->CurGroupFlowType()) { + case FlowType::Flow: + FlowMapPrepareNode(); + break; + case FlowType::Block: + BlockMapPrepareNode(); + break; + case FlowType::None: + assert(false); + } + break; + } + } + + void Emitter::PrepareTopNode() + { + } + + void Emitter::FlowSeqPrepareNode() + { + } + + void Emitter::BlockSeqPrepareNode() + { + } + + void Emitter::FlowMapPrepareNode() + { + } + + void Emitter::BlockMapPrepareNode() + { + } + // ******************************************************************************************* // overloads of Write @@ -260,6 +319,8 @@ namespace YAML if(!good()) return *this; + PrepareNode(); + m_pState->BeginScalar(); return *this; diff --git a/util/sandbox.cpp b/util/sandbox.cpp index 3f1fa3e..24504d1 100644 --- a/util/sandbox.cpp +++ b/util/sandbox.cpp @@ -4,11 +4,7 @@ int main() { YAML::Emitter out; - out << YAML::BeginDoc; - out << YAML::BeginSeq; out << "foo"; - out << YAML::EndSeq; - out << YAML::EndDoc; std::cout << out.c_str() << "\n"; return 0; From d86cfc1c630c27e0e08796933ead4313fa8c99e0 Mon Sep 17 00:00:00 2001 From: Jesse Beder Date: Mon, 21 May 2012 19:07:56 -0500 Subject: [PATCH 08/65] Implemented the Write for scalars (including checking which type of scalar it should be) --- src/emitter.cpp | 29 +++++++++++++++++++ src/emitterutils.cpp | 68 +++++++++++++++++++++++++++++++++++--------- src/emitterutils.h | 6 +++- 3 files changed, 88 insertions(+), 15 deletions(-) diff --git a/src/emitter.cpp b/src/emitter.cpp index 6ef9d2a..62bf5b9 100644 --- a/src/emitter.cpp +++ b/src/emitter.cpp @@ -293,6 +293,17 @@ namespace YAML void Emitter::PrepareTopNode() { + const bool hasAnchor = m_pState->HasAnchor(); + const bool hasTag = m_pState->HasTag(); + + if(!hasAnchor && !hasTag && m_stream.pos() > 0) { + EmitBeginDoc(); + } + + // TODO: if we were writing null, and + // we wanted it blank, we wouldn't want a space + if(hasAnchor || hasTag) + m_stream << " "; } void Emitter::FlowSeqPrepareNode() @@ -321,6 +332,24 @@ namespace YAML PrepareNode(); + const bool escapeNonAscii = m_pState->GetOutputCharset() == EscapeNonAscii; + const StringFormat::value strFormat = Utils::ComputeStringFormat(str, m_pState->GetStringFormat(), m_pState->CurGroupFlowType(), escapeNonAscii); + + switch(strFormat) { + case StringFormat::Plain: + m_stream << str; + break; + case StringFormat::SingleQuoted: + Utils::WriteSingleQuotedString(m_stream, str); + break; + case StringFormat::DoubleQuoted: + Utils::WriteDoubleQuotedString(m_stream, str, escapeNonAscii); + break; + case StringFormat::Literal: + Utils::WriteLiteralString(m_stream, str, m_pState->CurIndent() + m_pState->GetIndent()); + break; + } + m_pState->BeginScalar(); return *this; diff --git a/src/emitterutils.cpp b/src/emitterutils.cpp index 3d184d6..c54d9be 100644 --- a/src/emitterutils.cpp +++ b/src/emitterutils.cpp @@ -128,12 +128,12 @@ namespace YAML } } - bool IsValidPlainScalar(const std::string& str, bool inFlow, bool allowOnlyAscii) { + bool IsValidPlainScalar(const std::string& str, FlowType::value flowType, bool allowOnlyAscii) { if(str.empty()) return false; // first check the start - const RegEx& start = (inFlow ? Exp::PlainScalarInFlow() : Exp::PlainScalar()); + const RegEx& start = (flowType == FlowType::Flow ? Exp::PlainScalarInFlow() : Exp::PlainScalar()); if(!start.Matches(str)) return false; @@ -142,7 +142,7 @@ namespace YAML return false; // then check until something is disallowed - const RegEx& disallowed = (inFlow ? Exp::EndScalarInFlow() : Exp::EndScalar()) + const RegEx& disallowed = (flowType == FlowType::Flow ? Exp::EndScalarInFlow() : Exp::EndScalar()) || (Exp::BlankOrBreak() + Exp::Comment()) || Exp::NotPrintable() || Exp::Utf8_ByteOrderMark() @@ -152,7 +152,7 @@ namespace YAML while(buffer) { if(disallowed.Matches(buffer)) return false; - if(allowOnlyAscii && (0x7F < static_cast(buffer[0]))) + if(allowOnlyAscii && (0x80 <= static_cast(buffer[0]))) return false; ++buffer; } @@ -160,7 +160,32 @@ namespace YAML return true; } - void WriteDoubleQuoteEscapeSequence(ostream& out, int codePoint) { + bool IsValidSingleQuotedScalar(const std::string& str, bool escapeNonAscii) + { + // TODO: check for non-printable characters? + for(std::size_t i=0;i(str[i]))) + return false; + if(str[i] == '\n') + return false; + } + return true; + } + + bool IsValidLiteralScalar(const std::string& str, FlowType::value flowType, bool escapeNonAscii) + { + if(flowType == FlowType::Flow) + return false; + + // TODO: check for non-printable characters? + for(std::size_t i=0;i(str[i]))) + return false; + } + return true; + } + + void WriteDoubleQuoteEscapeSequence(ostream& out, int codePoint) { static const char hexDigits[] = "0123456789abcdef"; char escSeq[] = "\\U00000000"; @@ -198,15 +223,30 @@ namespace YAML } } - bool WriteString(ostream& out, const std::string& str, bool inFlow, bool escapeNonAscii) - { - if(IsValidPlainScalar(str, inFlow, escapeNonAscii)) { - out << str; - return true; - } else - return WriteDoubleQuotedString(out, str, escapeNonAscii); - } - + StringFormat::value ComputeStringFormat(const std::string& str, EMITTER_MANIP strFormat, FlowType::value flowType, bool escapeNonAscii) + { + switch(strFormat) { + case Auto: + if(IsValidPlainScalar(str, flowType, escapeNonAscii)) + return StringFormat::Plain; + return StringFormat::DoubleQuoted; + case SingleQuoted: + if(IsValidSingleQuotedScalar(str, escapeNonAscii)) + return StringFormat::SingleQuoted; + return StringFormat::DoubleQuoted; + case DoubleQuoted: + return StringFormat::DoubleQuoted; + case Literal: + if(IsValidLiteralScalar(str, flowType, escapeNonAscii)) + return StringFormat::Literal; + return StringFormat::DoubleQuoted; + default: + break; + } + + return StringFormat::DoubleQuoted; + } + bool WriteSingleQuotedString(ostream& out, const std::string& str) { out << "'"; diff --git a/src/emitterutils.h b/src/emitterutils.h index 0e270d6..67200f8 100644 --- a/src/emitterutils.h +++ b/src/emitterutils.h @@ -6,6 +6,7 @@ #endif +#include "emitterstate.h" #include "yaml-cpp/ostream.h" #include @@ -13,9 +14,12 @@ namespace YAML { class Binary; + struct StringFormat { enum value { Plain, SingleQuoted, DoubleQuoted, Literal }; }; + namespace Utils { - bool WriteString(ostream& out, const std::string& str, bool inFlow, bool escapeNonAscii); + StringFormat::value ComputeStringFormat(const std::string& str, EMITTER_MANIP strFormat, FlowType::value flowType, bool escapeNonAscii); + bool WriteSingleQuotedString(ostream& out, const std::string& str); bool WriteDoubleQuotedString(ostream& out, const std::string& str, bool escapeNonAscii); bool WriteLiteralString(ostream& out, const std::string& str, int indent); From b5d8241dfab626bf1ee66668a1d19846e82b78c5 Mon Sep 17 00:00:00 2001 From: Jesse Beder Date: Mon, 21 May 2012 21:04:10 -0500 Subject: [PATCH 09/65] Added block seq indentation --- src/emitter.cpp | 7 +++++++ src/emitterstate.cpp | 9 +++++++-- src/emitterstate.h | 1 + util/sandbox.cpp | 3 +++ 4 files changed, 18 insertions(+), 2 deletions(-) diff --git a/src/emitter.cpp b/src/emitter.cpp index 62bf5b9..985f337 100644 --- a/src/emitter.cpp +++ b/src/emitter.cpp @@ -312,6 +312,13 @@ namespace YAML void Emitter::BlockSeqPrepareNode() { + const unsigned curIndent = m_pState->CurIndent(); + if(m_stream.col() > curIndent) { + m_stream << "\n"; + } + m_stream << IndentTo(curIndent); + m_stream << "-"; + m_stream << IndentTo(curIndent + m_pState->CurGroupIndent()); } void Emitter::FlowMapPrepareNode() diff --git a/src/emitterstate.cpp b/src/emitterstate.cpp index f42e462..60cb5f1 100644 --- a/src/emitterstate.cpp +++ b/src/emitterstate.cpp @@ -61,8 +61,8 @@ namespace YAML { BeginNode(); - unsigned lastIndent = (m_groups.empty() ? 0 : m_groups.top().indent); - m_curIndent += lastIndent; + const int lastGroupIndent = (m_groups.empty() ? 0 : m_groups.top().indent); + m_curIndent += lastGroupIndent; std::auto_ptr pGroup(new Group(type)); @@ -114,6 +114,11 @@ namespace YAML return (m_groups.top().flow == Flow ? FlowType::Flow : FlowType::Block); } + int EmitterState::CurGroupIndent() const + { + return m_groups.empty() ? 0 : m_groups.top().indent; + } + void EmitterState::ClearModifiedSettings() { m_modifiedSettings.clear(); diff --git a/src/emitterstate.h b/src/emitterstate.h index 92eabe8..cd0a5e5 100644 --- a/src/emitterstate.h +++ b/src/emitterstate.h @@ -39,6 +39,7 @@ namespace YAML GroupType::value CurGroupType() const; FlowType::value CurGroupFlowType() const; + int CurGroupIndent() const; int CurIndent() const { return m_curIndent; } bool HasAnchor() const { return m_hasAnchor; } bool HasTag() const { return m_hasTag; } diff --git a/util/sandbox.cpp b/util/sandbox.cpp index 24504d1..9321662 100644 --- a/util/sandbox.cpp +++ b/util/sandbox.cpp @@ -4,7 +4,10 @@ int main() { YAML::Emitter out; + out << YAML::BeginSeq; out << "foo"; + out << "bar"; + out << YAML::EndSeq; std::cout << out.c_str() << "\n"; return 0; From 23fb2dc811fb3f419a5a570ffd04db9121a1ee1e Mon Sep 17 00:00:00 2001 From: Jesse Beder Date: Mon, 21 May 2012 21:11:03 -0500 Subject: [PATCH 10/65] Fixed basic block seq indentation --- src/emitter.cpp | 12 +++++++----- src/emitterstate.cpp | 5 +++++ src/emitterstate.h | 1 + 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/src/emitter.cpp b/src/emitter.cpp index 985f337..52b5462 100644 --- a/src/emitter.cpp +++ b/src/emitter.cpp @@ -313,12 +313,14 @@ namespace YAML void Emitter::BlockSeqPrepareNode() { const unsigned curIndent = m_pState->CurIndent(); - if(m_stream.col() > curIndent) { - m_stream << "\n"; + if(!m_pState->HasTag() && !m_pState->HasAnchor()) { + if(m_pState->CurGroupChildCount() > 0) { + m_stream << "\n"; + } + m_stream << IndentTo(curIndent); + m_stream << "-"; + m_stream << IndentTo(curIndent + m_pState->CurGroupIndent()); } - m_stream << IndentTo(curIndent); - m_stream << "-"; - m_stream << IndentTo(curIndent + m_pState->CurGroupIndent()); } void Emitter::FlowMapPrepareNode() diff --git a/src/emitterstate.cpp b/src/emitterstate.cpp index 60cb5f1..e7e5a87 100644 --- a/src/emitterstate.cpp +++ b/src/emitterstate.cpp @@ -119,6 +119,11 @@ namespace YAML return m_groups.empty() ? 0 : m_groups.top().indent; } + std::size_t EmitterState::CurGroupChildCount() const + { + return m_groups.empty() ? 0 : m_groups.top().childCount; + } + void EmitterState::ClearModifiedSettings() { m_modifiedSettings.clear(); diff --git a/src/emitterstate.h b/src/emitterstate.h index cd0a5e5..c53a4e1 100644 --- a/src/emitterstate.h +++ b/src/emitterstate.h @@ -40,6 +40,7 @@ namespace YAML GroupType::value CurGroupType() const; FlowType::value CurGroupFlowType() const; int CurGroupIndent() const; + std::size_t CurGroupChildCount() const; int CurIndent() const { return m_curIndent; } bool HasAnchor() const { return m_hasAnchor; } bool HasTag() const { return m_hasTag; } From 35d827f1876fc95448f32de14b33449ddcdde11c Mon Sep 17 00:00:00 2001 From: Jesse Beder Date: Mon, 21 May 2012 21:57:25 -0500 Subject: [PATCH 11/65] Structured emitter node handling better --- include/yaml-cpp/emitter.h | 13 ++++--- include/yaml-cpp/emitterdef.h | 13 +++++++ src/emitter.cpp | 71 ++++++++++++++++++----------------- src/emitterstate.cpp | 46 +++++++++++++++++------ src/emitterstate.h | 27 ++++++++++++- src/ptr_stack.h | 5 ++- 6 files changed, 120 insertions(+), 55 deletions(-) create mode 100644 include/yaml-cpp/emitterdef.h diff --git a/include/yaml-cpp/emitter.h b/include/yaml-cpp/emitter.h index 4e329cc..4251bab 100644 --- a/include/yaml-cpp/emitter.h +++ b/include/yaml-cpp/emitter.h @@ -8,6 +8,7 @@ #include "yaml-cpp/dll.h" #include "yaml-cpp/binary.h" +#include "yaml-cpp/emitterdef.h" #include "yaml-cpp/emittermanip.h" #include "yaml-cpp/ostream.h" #include "yaml-cpp/noncopyable.h" @@ -85,12 +86,12 @@ namespace YAML void EmitKindTag(); void EmitTag(bool verbatim, const _Tag& tag); - void PrepareNode(); - void PrepareTopNode(); - void FlowSeqPrepareNode(); - void BlockSeqPrepareNode(); - void FlowMapPrepareNode(); - void BlockMapPrepareNode(); + void PrepareNode(EmitterNodeType::value child); + void PrepareTopNode(EmitterNodeType::value child); + void FlowSeqPrepareNode(EmitterNodeType::value child); + void BlockSeqPrepareNode(EmitterNodeType::value child); + void FlowMapPrepareNode(EmitterNodeType::value child); + void BlockMapPrepareNode(EmitterNodeType::value child); const char *ComputeFullBoolName(bool b) const; bool CanEmitNewline() const; diff --git a/include/yaml-cpp/emitterdef.h b/include/yaml-cpp/emitterdef.h new file mode 100644 index 0000000..d8d5559 --- /dev/null +++ b/include/yaml-cpp/emitterdef.h @@ -0,0 +1,13 @@ +#ifndef EMITTERDEF_H_62B23520_7C8E_11DE_8A39_0800200C9A66 +#define EMITTERDEF_H_62B23520_7C8E_11DE_8A39_0800200C9A66 + +#if defined(_MSC_VER) || (defined(__GNUC__) && (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || (__GNUC__ >= 4)) // GCC supports "pragma once" correctly since 3.4 +#pragma once +#endif + +namespace YAML +{ + struct EmitterNodeType { enum value { None, Scalar, FlowSeq, BlockSeq, FlowMap, BlockMap }; }; +} + +#endif // EMITTERDEF_H_62B23520_7C8E_11DE_8A39_0800200C9A66 diff --git a/src/emitter.cpp b/src/emitter.cpp index 52b5462..802f86a 100644 --- a/src/emitter.cpp +++ b/src/emitter.cpp @@ -210,7 +210,7 @@ namespace YAML if(!good()) return; - PrepareNode(); + PrepareNode(m_pState->NextGroupType(GroupType::Seq)); m_pState->BeginGroup(GroupType::Seq); } @@ -230,7 +230,7 @@ namespace YAML if(!good()) return; - PrepareNode(); + PrepareNode(m_pState->NextGroupType(GroupType::Map)); m_pState->BeginGroup(GroupType::Map); } @@ -258,40 +258,31 @@ namespace YAML // Put the stream in a state so we can simply write the next node // E.g., if we're in a sequence, write the "- " - void Emitter::PrepareNode() + void Emitter::PrepareNode(EmitterNodeType::value child) { - switch(m_pState->CurGroupType()) { - case GroupType::None: - PrepareTopNode(); + switch(m_pState->CurGroupNodeType()) { + case EmitterNodeType::None: + PrepareTopNode(child); break; - case GroupType::Seq: - switch(m_pState->CurGroupFlowType()) { - case FlowType::Flow: - FlowSeqPrepareNode(); - break; - case FlowType::Block: - BlockSeqPrepareNode(); - break; - case FlowType::None: - assert(false); - } + case EmitterNodeType::FlowSeq: + FlowSeqPrepareNode(child); break; - case GroupType::Map: - switch(m_pState->CurGroupFlowType()) { - case FlowType::Flow: - FlowMapPrepareNode(); - break; - case FlowType::Block: - BlockMapPrepareNode(); - break; - case FlowType::None: - assert(false); - } + case EmitterNodeType::BlockSeq: + BlockSeqPrepareNode(child); + break; + case EmitterNodeType::FlowMap: + FlowMapPrepareNode(child); + break; + case EmitterNodeType::BlockMap: + BlockMapPrepareNode(child); + break; + case EmitterNodeType::Scalar: + assert(false); break; } } - void Emitter::PrepareTopNode() + void Emitter::PrepareTopNode(EmitterNodeType::value child) { const bool hasAnchor = m_pState->HasAnchor(); const bool hasTag = m_pState->HasTag(); @@ -306,11 +297,11 @@ namespace YAML m_stream << " "; } - void Emitter::FlowSeqPrepareNode() + void Emitter::FlowSeqPrepareNode(EmitterNodeType::value child) { } - void Emitter::BlockSeqPrepareNode() + void Emitter::BlockSeqPrepareNode(EmitterNodeType::value child) { const unsigned curIndent = m_pState->CurIndent(); if(!m_pState->HasTag() && !m_pState->HasAnchor()) { @@ -319,16 +310,26 @@ namespace YAML } m_stream << IndentTo(curIndent); m_stream << "-"; - m_stream << IndentTo(curIndent + m_pState->CurGroupIndent()); } } - void Emitter::FlowMapPrepareNode() + void Emitter::FlowMapPrepareNode(EmitterNodeType::value child) { } - void Emitter::BlockMapPrepareNode() + void Emitter::BlockMapPrepareNode(EmitterNodeType::value child) { + if(!m_pState->HasTag() && !m_pState->HasAnchor()) { + const std::size_t childCount = m_pState->CurGroupChildCount(); + if(childCount % 2 == 0) { + // key + if(childCount > 0) { + m_stream << "\n"; + } + } else { + // value + } + } } // ******************************************************************************************* @@ -339,7 +340,7 @@ namespace YAML if(!good()) return *this; - PrepareNode(); + PrepareNode(EmitterNodeType::Scalar); const bool escapeNonAscii = m_pState->GetOutputCharset() == EscapeNonAscii; const StringFormat::value strFormat = Utils::ComputeStringFormat(str, m_pState->GetStringFormat(), m_pState->CurGroupFlowType(), escapeNonAscii); diff --git a/src/emitterstate.cpp b/src/emitterstate.cpp index e7e5a87..90e0196 100644 --- a/src/emitterstate.cpp +++ b/src/emitterstate.cpp @@ -52,6 +52,25 @@ namespace YAML m_hasTag = false; } + EmitterNodeType::value EmitterState::NextGroupType(GroupType::value type) const + { + if(type == GroupType::Seq) { + if(GetFlowType(type) == Block) + return EmitterNodeType::BlockSeq; + else + return EmitterNodeType::FlowSeq; + } else { + if(GetFlowType(type) == Block) + return EmitterNodeType::BlockMap; + else + return EmitterNodeType::FlowMap; + } + + // can't happen + assert(false); + return EmitterNodeType::None; + } + void EmitterState::BeginScalar() { BeginNode(); @@ -70,7 +89,10 @@ namespace YAML pGroup->modifiedSettings = m_modifiedSettings; // set up group - pGroup->flow = GetFlowType(type); + if(GetFlowType(type) == Block) + pGroup->flowType = FlowType::Block; + else + pGroup->flowType = FlowType::Flow; pGroup->indent = GetIndent(); m_groups.push(pGroup); @@ -97,21 +119,23 @@ namespace YAML // by a local setting we just popped, so we need to restore them m_globalModifiedSettings.restore(); } - - GroupType::value EmitterState::CurGroupType() const + + EmitterNodeType::value EmitterState::CurGroupNodeType() const + { + if(m_groups.empty()) + return EmitterNodeType::None; + + return m_groups.top().NodeType(); + } + + GroupType::value EmitterState::CurGroupType() const { - if(m_groups.empty()) - return GroupType::None; - - return m_groups.top().type; + return m_groups.empty() ? GroupType::None : m_groups.top().type; } FlowType::value EmitterState::CurGroupFlowType() const { - if(m_groups.empty()) - return FlowType::None; - - return (m_groups.top().flow == Flow ? FlowType::Flow : FlowType::Block); + return m_groups.empty() ? FlowType::None : m_groups.top().flowType; } int EmitterState::CurGroupIndent() const diff --git a/src/emitterstate.h b/src/emitterstate.h index c53a4e1..e4c9297 100644 --- a/src/emitterstate.h +++ b/src/emitterstate.h @@ -8,6 +8,7 @@ #include "ptr_stack.h" #include "setting.h" +#include "yaml-cpp/emitterdef.h" #include "yaml-cpp/emittermanip.h" #include #include @@ -36,11 +37,15 @@ namespace YAML void BeginScalar(); void BeginGroup(GroupType::value type); void EndGroup(GroupType::value type); - + + EmitterNodeType::value NextGroupType(GroupType::value type) const; + EmitterNodeType::value CurGroupNodeType() const; + GroupType::value CurGroupType() const; FlowType::value CurGroupFlowType() const; int CurGroupIndent() const; std::size_t CurGroupChildCount() const; + int CurIndent() const { return m_curIndent; } bool HasAnchor() const { return m_hasAnchor; } bool HasTag() const { return m_hasTag; } @@ -120,11 +125,29 @@ namespace YAML explicit Group(GroupType::value type_): type(type_), indent(0), childCount(0) {} GroupType::value type; - EMITTER_MANIP flow; + FlowType::value flowType; int indent; std::size_t childCount; SettingChanges modifiedSettings; + + EmitterNodeType::value NodeType() const { + if(type == GroupType::Seq) { + if(flowType == FlowType::Flow) + return EmitterNodeType::FlowSeq; + else + return EmitterNodeType::BlockSeq; + } else { + if(flowType == FlowType::Flow) + return EmitterNodeType::FlowMap; + else + return EmitterNodeType::BlockMap; + } + + // can't get here + assert(false); + return EmitterNodeType::None; + } }; ptr_stack m_groups; diff --git a/src/ptr_stack.h b/src/ptr_stack.h index bf454fb..eec0fb8 100644 --- a/src/ptr_stack.h +++ b/src/ptr_stack.h @@ -38,7 +38,10 @@ public: } T& top() { return *m_data.back(); } const T& top() const { return *m_data.back(); } - + + T& top(std::ptrdiff_t diff) { return **(m_data.end() - 1 + diff); } + const T& top(std::ptrdiff_t diff) const { return **(m_data.end() - 1 + diff); } + private: std::vector m_data; }; From 91eac5d93d13ed937440bd8ed643e7cf591be6bc Mon Sep 17 00:00:00 2001 From: Jesse Beder Date: Mon, 21 May 2012 22:14:26 -0500 Subject: [PATCH 12/65] Implemented block seq and block map indentation/newlines --- src/emitter.cpp | 65 +++++++++++++++++++++++++++++++++++++++++++++++- util/sandbox.cpp | 3 +++ 2 files changed, 67 insertions(+), 1 deletion(-) diff --git a/src/emitter.cpp b/src/emitter.cpp index 802f86a..e399f4a 100644 --- a/src/emitter.cpp +++ b/src/emitter.cpp @@ -304,6 +304,8 @@ namespace YAML void Emitter::BlockSeqPrepareNode(EmitterNodeType::value child) { const unsigned curIndent = m_pState->CurIndent(); + const unsigned nextIndent = curIndent + m_pState->CurGroupIndent(); + if(!m_pState->HasTag() && !m_pState->HasAnchor()) { if(m_pState->CurGroupChildCount() > 0) { m_stream << "\n"; @@ -311,6 +313,23 @@ namespace YAML m_stream << IndentTo(curIndent); m_stream << "-"; } + + switch(child) { + case EmitterNodeType::None: + case EmitterNodeType::Scalar: + case EmitterNodeType::FlowSeq: + case EmitterNodeType::FlowMap: + if(m_stream.col() < nextIndent) + m_stream << IndentTo(nextIndent); + else + m_stream << " "; + break; + case EmitterNodeType::BlockSeq: + m_stream << "\n"; + break; + case EmitterNodeType::BlockMap: + break; + } } void Emitter::FlowMapPrepareNode(EmitterNodeType::value child) @@ -319,15 +338,59 @@ namespace YAML void Emitter::BlockMapPrepareNode(EmitterNodeType::value child) { + const unsigned curIndent = m_pState->CurIndent(); + const unsigned nextIndent = curIndent + m_pState->CurGroupIndent(); + const std::size_t childCount = m_pState->CurGroupChildCount(); + if(!m_pState->HasTag() && !m_pState->HasAnchor()) { - const std::size_t childCount = m_pState->CurGroupChildCount(); if(childCount % 2 == 0) { // key if(childCount > 0) { m_stream << "\n"; } + if(false /* long key */) { + } } else { // value + if(false /* was long key */) { + } else { + m_stream << ":"; + } + } + } + + if(childCount % 2 == 0) { + // key + switch(child) { + case EmitterNodeType::None: + case EmitterNodeType::Scalar: + case EmitterNodeType::FlowSeq: + case EmitterNodeType::FlowMap: + if(m_stream.col() < curIndent) + m_stream << IndentTo(curIndent); + else + m_stream << " "; + break; + case EmitterNodeType::BlockSeq: + case EmitterNodeType::BlockMap: + break; + } + } else { + // value + switch(child) { + case EmitterNodeType::None: + case EmitterNodeType::Scalar: + case EmitterNodeType::FlowSeq: + case EmitterNodeType::FlowMap: + if(m_stream.col() < nextIndent) + m_stream << IndentTo(nextIndent); + else + m_stream << " "; + break; + case EmitterNodeType::BlockSeq: + case EmitterNodeType::BlockMap: + m_stream << "\n"; + break; } } } diff --git a/util/sandbox.cpp b/util/sandbox.cpp index 9321662..27b3631 100644 --- a/util/sandbox.cpp +++ b/util/sandbox.cpp @@ -7,6 +7,9 @@ int main() out << YAML::BeginSeq; out << "foo"; out << "bar"; + out << YAML::BeginMap; + out << "a" << "b" << "c" << "d"; + out << YAML::EndMap; out << YAML::EndSeq; std::cout << out.c_str() << "\n"; From 3cae26a75e524e02d6f0227c4df1f1ee4086981e Mon Sep 17 00:00:00 2001 From: Jesse Beder Date: Mon, 21 May 2012 23:19:29 -0500 Subject: [PATCH 13/65] Added tags and anchors --- src/emitter.cpp | 67 +++++++++++++++++++++++++++++++++++--------- src/emitterstate.cpp | 10 +++++++ src/emitterstate.h | 3 ++ util/sandbox.cpp | 3 +- 4 files changed, 69 insertions(+), 14 deletions(-) diff --git a/src/emitter.cpp b/src/emitter.cpp index e399f4a..b6b8e2b 100644 --- a/src/emitter.cpp +++ b/src/emitter.cpp @@ -284,17 +284,26 @@ namespace YAML void Emitter::PrepareTopNode(EmitterNodeType::value child) { - const bool hasAnchor = m_pState->HasAnchor(); - const bool hasTag = m_pState->HasTag(); - - if(!hasAnchor && !hasTag && m_stream.pos() > 0) { + if(!m_pState->HasBegunNode() && m_stream.pos() > 0) { EmitBeginDoc(); } - // TODO: if we were writing null, and - // we wanted it blank, we wouldn't want a space - if(hasAnchor || hasTag) - m_stream << " "; + switch(child) { + case EmitterNodeType::None: + case EmitterNodeType::Scalar: + case EmitterNodeType::FlowSeq: + case EmitterNodeType::FlowMap: + // TODO: if we were writing null, and + // we wanted it blank, we wouldn't want a space + if(m_pState->HasBegunNode()) + m_stream << " "; + break; + case EmitterNodeType::BlockSeq: + case EmitterNodeType::BlockMap: + if(m_pState->HasBegunNode()) + m_stream << "\n"; + break; + } } void Emitter::FlowSeqPrepareNode(EmitterNodeType::value child) @@ -306,7 +315,7 @@ namespace YAML const unsigned curIndent = m_pState->CurIndent(); const unsigned nextIndent = curIndent + m_pState->CurGroupIndent(); - if(!m_pState->HasTag() && !m_pState->HasAnchor()) { + if(!m_pState->HasBegunNode()) { if(m_pState->CurGroupChildCount() > 0) { m_stream << "\n"; } @@ -342,7 +351,7 @@ namespace YAML const unsigned nextIndent = curIndent + m_pState->CurGroupIndent(); const std::size_t childCount = m_pState->CurGroupChildCount(); - if(!m_pState->HasTag() && !m_pState->HasAnchor()) { + if(!m_pState->HasBegunNode()) { if(childCount % 2 == 0) { // key if(childCount > 0) { @@ -507,8 +516,20 @@ namespace YAML { if(!good()) return *this; + + if(m_pState->HasAnchor()) { + m_pState->SetError(ErrorMsg::INVALID_ANCHOR); + return *this; + } - m_pState->BeginScalar(); + PrepareNode(EmitterNodeType::None); + + if(!Utils::WriteAnchor(m_stream, anchor.content)) { + m_pState->SetError(ErrorMsg::INVALID_ANCHOR); + return *this; + } + + m_pState->SetAnchor(); return *this; } @@ -517,9 +538,29 @@ namespace YAML { if(!good()) return *this; - - m_pState->BeginScalar(); + if(m_pState->HasTag()) { + m_pState->SetError(ErrorMsg::INVALID_TAG); + return *this; + } + + PrepareNode(EmitterNodeType::None); + + bool success = false; + if(tag.type == _Tag::Type::Verbatim) + success = Utils::WriteTag(m_stream, tag.content, true); + else if(tag.type == _Tag::Type::PrimaryHandle) + success = Utils::WriteTag(m_stream, tag.content, false); + else + success = Utils::WriteTagWithPrefix(m_stream, tag.prefix, tag.content); + + if(!success) { + m_pState->SetError(ErrorMsg::INVALID_TAG); + return *this; + } + + m_pState->SetTag(); + return *this; } diff --git a/src/emitterstate.cpp b/src/emitterstate.cpp index 90e0196..b3bb07b 100644 --- a/src/emitterstate.cpp +++ b/src/emitterstate.cpp @@ -43,6 +43,16 @@ namespace YAML SetMapKeyFormat(value, FmtScope::Local); } + void EmitterState::SetAnchor() + { + m_hasAnchor = true; + } + + void EmitterState::SetTag() + { + m_hasTag = true; + } + void EmitterState::BeginNode() { if(!m_groups.empty()) diff --git a/src/emitterstate.h b/src/emitterstate.h index e4c9297..989f61f 100644 --- a/src/emitterstate.h +++ b/src/emitterstate.h @@ -34,6 +34,8 @@ namespace YAML void SetError(const std::string& error) { throw std::runtime_error(error); m_isGood = false; m_lastError = error; } // node handling + void SetAnchor(); + void SetTag(); void BeginScalar(); void BeginGroup(GroupType::value type); void EndGroup(GroupType::value type); @@ -49,6 +51,7 @@ namespace YAML int CurIndent() const { return m_curIndent; } bool HasAnchor() const { return m_hasAnchor; } bool HasTag() const { return m_hasTag; } + bool HasBegunNode() const { return m_hasAnchor || m_hasTag; } void ClearModifiedSettings(); diff --git a/util/sandbox.cpp b/util/sandbox.cpp index 27b3631..43d6510 100644 --- a/util/sandbox.cpp +++ b/util/sandbox.cpp @@ -4,9 +4,10 @@ int main() { YAML::Emitter out; + out << YAML::Anchor("monkey"); out << YAML::BeginSeq; out << "foo"; - out << "bar"; + out << YAML::LocalTag("hi") << "bar"; out << YAML::BeginMap; out << "a" << "b" << "c" << "d"; out << YAML::EndMap; From b0dd0f862a1b1bf1411d4008914142a4c68181b5 Mon Sep 17 00:00:00 2001 From: Jesse Beder Date: Mon, 21 May 2012 23:23:53 -0500 Subject: [PATCH 14/65] Fixed anchor/tag in seq > map --- src/emitter.cpp | 2 ++ util/sandbox.cpp | 7 +++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/emitter.cpp b/src/emitter.cpp index b6b8e2b..55752f3 100644 --- a/src/emitter.cpp +++ b/src/emitter.cpp @@ -337,6 +337,8 @@ namespace YAML m_stream << "\n"; break; case EmitterNodeType::BlockMap: + if(m_pState->HasBegunNode()) + m_stream << "\n"; break; } } diff --git a/util/sandbox.cpp b/util/sandbox.cpp index 43d6510..f306573 100644 --- a/util/sandbox.cpp +++ b/util/sandbox.cpp @@ -4,13 +4,16 @@ int main() { YAML::Emitter out; - out << YAML::Anchor("monkey"); + out << YAML::Anchor("monkey") << YAML::LocalTag("a"); out << YAML::BeginSeq; out << "foo"; out << YAML::LocalTag("hi") << "bar"; - out << YAML::BeginMap; + out << YAML::Anchor("asdf") << YAML::BeginMap; out << "a" << "b" << "c" << "d"; out << YAML::EndMap; + out << YAML::LocalTag("hi") << YAML::BeginSeq; + out << "a" << "b"; + out << YAML::EndSeq; out << YAML::EndSeq; std::cout << out.c_str() << "\n"; From d3801b7482a155648af64fd43cace6ef3d23fcde Mon Sep 17 00:00:00 2001 From: Jesse Beder Date: Mon, 21 May 2012 23:29:59 -0500 Subject: [PATCH 15/65] Added newlines, fixed map/map --- src/emitter.cpp | 6 +++++- src/emitterstate.cpp | 8 +++++++- src/emitterstate.h | 4 +++- util/sandbox.cpp | 5 ++++- 4 files changed, 19 insertions(+), 4 deletions(-) diff --git a/src/emitter.cpp b/src/emitter.cpp index 55752f3..7afcfa0 100644 --- a/src/emitter.cpp +++ b/src/emitter.cpp @@ -249,11 +249,15 @@ namespace YAML { if(!good()) return; + + PrepareNode(m_pState->NextGroupType(GroupType::None)); + m_stream << "\n"; + m_pState->SetNonContent(); } bool Emitter::CanEmitNewline() const { - return false; + return true; } // Put the stream in a state so we can simply write the next node diff --git a/src/emitterstate.cpp b/src/emitterstate.cpp index b3bb07b..bc15b1b 100644 --- a/src/emitterstate.cpp +++ b/src/emitterstate.cpp @@ -4,7 +4,7 @@ namespace YAML { - EmitterState::EmitterState(): m_isGood(true), m_curIndent(0), m_hasAnchor(false), m_hasTag(false) + EmitterState::EmitterState(): m_isGood(true), m_curIndent(0), m_hasAnchor(false), m_hasTag(false), m_hasNonContent(false) { // set default global manipulators m_charset.set(EmitNonAscii); @@ -53,6 +53,11 @@ namespace YAML m_hasTag = true; } + void EmitterState::SetNonContent() + { + m_hasNonContent = true; + } + void EmitterState::BeginNode() { if(!m_groups.empty()) @@ -60,6 +65,7 @@ namespace YAML m_hasAnchor = false; m_hasTag = false; + m_hasNonContent = false; } EmitterNodeType::value EmitterState::NextGroupType(GroupType::value type) const diff --git a/src/emitterstate.h b/src/emitterstate.h index 989f61f..68e96af 100644 --- a/src/emitterstate.h +++ b/src/emitterstate.h @@ -36,6 +36,7 @@ namespace YAML // node handling void SetAnchor(); void SetTag(); + void SetNonContent(); void BeginScalar(); void BeginGroup(GroupType::value type); void EndGroup(GroupType::value type); @@ -51,7 +52,7 @@ namespace YAML int CurIndent() const { return m_curIndent; } bool HasAnchor() const { return m_hasAnchor; } bool HasTag() const { return m_hasTag; } - bool HasBegunNode() const { return m_hasAnchor || m_hasTag; } + bool HasBegunNode() const { return m_hasAnchor || m_hasTag || m_hasNonContent; } void ClearModifiedSettings(); @@ -157,6 +158,7 @@ namespace YAML unsigned m_curIndent; bool m_hasAnchor; bool m_hasTag; + bool m_hasNonContent; }; template diff --git a/util/sandbox.cpp b/util/sandbox.cpp index f306573..32ee902 100644 --- a/util/sandbox.cpp +++ b/util/sandbox.cpp @@ -9,7 +9,10 @@ int main() out << "foo"; out << YAML::LocalTag("hi") << "bar"; out << YAML::Anchor("asdf") << YAML::BeginMap; - out << "a" << "b" << "c" << "d"; + out << "a" << "b" << "c" << YAML::Newline; + out << YAML::Anchor("a") << YAML::BeginMap; + out << "a" << "b"; + out << YAML::EndMap; out << YAML::EndMap; out << YAML::LocalTag("hi") << YAML::BeginSeq; out << "a" << "b"; From c5e4bdee942c1f78b2befdca3eb3fad0b7404a4f Mon Sep 17 00:00:00 2001 From: Jesse Beder Date: Mon, 21 May 2012 23:34:42 -0500 Subject: [PATCH 16/65] Fixed newline --- src/emitter.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/emitter.cpp b/src/emitter.cpp index 7afcfa0..9869c6e 100644 --- a/src/emitter.cpp +++ b/src/emitter.cpp @@ -250,7 +250,7 @@ namespace YAML if(!good()) return; - PrepareNode(m_pState->NextGroupType(GroupType::None)); + PrepareNode(EmitterNodeType::None); m_stream << "\n"; m_pState->SetNonContent(); } From 07e88a78cba761bbc1963221b5f1b61e7a108e6f Mon Sep 17 00:00:00 2001 From: Jesse Beder Date: Mon, 21 May 2012 23:37:49 -0500 Subject: [PATCH 17/65] Added alias --- src/emitter.cpp | 12 ++++++++++++ util/sandbox.cpp | 6 +++--- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/emitter.cpp b/src/emitter.cpp index 9869c6e..ca465e2 100644 --- a/src/emitter.cpp +++ b/src/emitter.cpp @@ -512,7 +512,19 @@ namespace YAML { if(!good()) return *this; + + if(m_pState->HasAnchor() || m_pState->HasTag()) { + m_pState->SetError(ErrorMsg::INVALID_ALIAS); + return *this; + } + PrepareNode(EmitterNodeType::Scalar); + + if(!Utils::WriteAlias(m_stream, alias.content)) { + m_pState->SetError(ErrorMsg::INVALID_ALIAS); + return *this; + } + m_pState->BeginScalar(); return *this; diff --git a/util/sandbox.cpp b/util/sandbox.cpp index 32ee902..e40504f 100644 --- a/util/sandbox.cpp +++ b/util/sandbox.cpp @@ -9,13 +9,13 @@ int main() out << "foo"; out << YAML::LocalTag("hi") << "bar"; out << YAML::Anchor("asdf") << YAML::BeginMap; - out << "a" << "b" << "c" << YAML::Newline; + out << "a" << "b" << "c"; out << YAML::Anchor("a") << YAML::BeginMap; - out << "a" << "b"; + out << YAML::Anchor("d") << "a" << "b"; out << YAML::EndMap; out << YAML::EndMap; out << YAML::LocalTag("hi") << YAML::BeginSeq; - out << "a" << "b"; + out << "a" << "b" << YAML::Alias("monkey"); out << YAML::EndSeq; out << YAML::EndSeq; From f72e325c4027998071042200a6418b2de6862365 Mon Sep 17 00:00:00 2001 From: Jesse Beder Date: Mon, 21 May 2012 23:39:45 -0500 Subject: [PATCH 18/65] Renamed begin/end scalar/group to started/ended scalar/group --- src/emitter.cpp | 22 +++++++++++----------- src/emitterstate.cpp | 12 ++++++------ src/emitterstate.h | 8 ++++---- 3 files changed, 21 insertions(+), 21 deletions(-) diff --git a/src/emitter.cpp b/src/emitter.cpp index ca465e2..bec348c 100644 --- a/src/emitter.cpp +++ b/src/emitter.cpp @@ -212,7 +212,7 @@ namespace YAML PrepareNode(m_pState->NextGroupType(GroupType::Seq)); - m_pState->BeginGroup(GroupType::Seq); + m_pState->StartedGroup(GroupType::Seq); } // EmitEndSeq @@ -221,7 +221,7 @@ namespace YAML if(!good()) return; - m_pState->EndGroup(GroupType::Seq); + m_pState->EndedGroup(GroupType::Seq); } // EmitBeginMap @@ -232,7 +232,7 @@ namespace YAML PrepareNode(m_pState->NextGroupType(GroupType::Map)); - m_pState->BeginGroup(GroupType::Map); + m_pState->StartedGroup(GroupType::Map); } // EmitEndMap @@ -241,7 +241,7 @@ namespace YAML if(!good()) return; - m_pState->EndGroup(GroupType::Map); + m_pState->EndedGroup(GroupType::Map); } // EmitNewline @@ -438,7 +438,7 @@ namespace YAML break; } - m_pState->BeginScalar(); + m_pState->StartedScalar(); return *this; } @@ -493,7 +493,7 @@ namespace YAML if(!good()) return *this; - m_pState->BeginScalar(); + m_pState->StartedScalar(); return *this; } @@ -503,7 +503,7 @@ namespace YAML if(!good()) return *this; - m_pState->BeginScalar(); + m_pState->StartedScalar(); return *this; } @@ -525,7 +525,7 @@ namespace YAML return *this; } - m_pState->BeginScalar(); + m_pState->StartedScalar(); return *this; } @@ -592,7 +592,7 @@ namespace YAML if(!good()) return *this; - m_pState->BeginScalar(); + m_pState->StartedScalar(); return *this; } @@ -602,7 +602,7 @@ namespace YAML if(!good()) return *this; - m_pState->BeginScalar(); + m_pState->StartedScalar(); return *this; } @@ -614,7 +614,7 @@ namespace YAML if(!good()) return *this; - m_pState->BeginScalar(); + m_pState->StartedScalar(); return *this; } diff --git a/src/emitterstate.cpp b/src/emitterstate.cpp index bc15b1b..20f6581 100644 --- a/src/emitterstate.cpp +++ b/src/emitterstate.cpp @@ -58,7 +58,7 @@ namespace YAML m_hasNonContent = true; } - void EmitterState::BeginNode() + void EmitterState::StartedNode() { if(!m_groups.empty()) m_groups.top().childCount++; @@ -87,14 +87,14 @@ namespace YAML return EmitterNodeType::None; } - void EmitterState::BeginScalar() + void EmitterState::StartedScalar() { - BeginNode(); + StartedNode(); } - void EmitterState::BeginGroup(GroupType::value type) + void EmitterState::StartedGroup(GroupType::value type) { - BeginNode(); + StartedNode(); const int lastGroupIndent = (m_groups.empty() ? 0 : m_groups.top().indent); m_curIndent += lastGroupIndent; @@ -114,7 +114,7 @@ namespace YAML m_groups.push(pGroup); } - void EmitterState::EndGroup(GroupType::value type) + void EmitterState::EndedGroup(GroupType::value type) { if(m_groups.empty()) return SetError(ErrorMsg::UNMATCHED_GROUP_TAG); diff --git a/src/emitterstate.h b/src/emitterstate.h index 68e96af..8305b3d 100644 --- a/src/emitterstate.h +++ b/src/emitterstate.h @@ -37,9 +37,9 @@ namespace YAML void SetAnchor(); void SetTag(); void SetNonContent(); - void BeginScalar(); - void BeginGroup(GroupType::value type); - void EndGroup(GroupType::value type); + void StartedScalar(); + void StartedGroup(GroupType::value type); + void EndedGroup(GroupType::value type); EmitterNodeType::value NextGroupType(GroupType::value type) const; EmitterNodeType::value CurGroupNodeType() const; @@ -100,7 +100,7 @@ namespace YAML template void _Set(Setting& fmt, T value, FmtScope::value scope); - void BeginNode(); + void StartedNode(); private: // basic state ok? From 0f3f1e26a727117309559aa628ead600ca143b64 Mon Sep 17 00:00:00 2001 From: Jesse Beder Date: Mon, 21 May 2012 23:47:57 -0500 Subject: [PATCH 19/65] Fixed map/value --- src/emitter.cpp | 21 +++++++++------------ src/emitterstate.h | 3 ++- util/sandbox.cpp | 16 +++++----------- 3 files changed, 16 insertions(+), 24 deletions(-) diff --git a/src/emitter.cpp b/src/emitter.cpp index bec348c..176a21c 100644 --- a/src/emitter.cpp +++ b/src/emitter.cpp @@ -299,7 +299,7 @@ namespace YAML case EmitterNodeType::FlowMap: // TODO: if we were writing null, and // we wanted it blank, we wouldn't want a space - if(m_pState->HasBegunNode()) + if(m_pState->HasBegunContent()) m_stream << " "; break; case EmitterNodeType::BlockSeq: @@ -332,16 +332,16 @@ namespace YAML case EmitterNodeType::Scalar: case EmitterNodeType::FlowSeq: case EmitterNodeType::FlowMap: - if(m_stream.col() < nextIndent) - m_stream << IndentTo(nextIndent); - else + if(m_pState->HasBegunContent()) m_stream << " "; + else + m_stream << IndentTo(nextIndent); break; case EmitterNodeType::BlockSeq: m_stream << "\n"; break; case EmitterNodeType::BlockMap: - if(m_pState->HasBegunNode()) + if(m_pState->HasBegunContent()) m_stream << "\n"; break; } @@ -381,10 +381,10 @@ namespace YAML case EmitterNodeType::Scalar: case EmitterNodeType::FlowSeq: case EmitterNodeType::FlowMap: - if(m_stream.col() < curIndent) - m_stream << IndentTo(curIndent); - else + if(m_pState->HasBegunContent()) m_stream << " "; + else + m_stream << IndentTo(curIndent); break; case EmitterNodeType::BlockSeq: case EmitterNodeType::BlockMap: @@ -397,10 +397,7 @@ namespace YAML case EmitterNodeType::Scalar: case EmitterNodeType::FlowSeq: case EmitterNodeType::FlowMap: - if(m_stream.col() < nextIndent) - m_stream << IndentTo(nextIndent); - else - m_stream << " "; + m_stream << " "; break; case EmitterNodeType::BlockSeq: case EmitterNodeType::BlockMap: diff --git a/src/emitterstate.h b/src/emitterstate.h index 8305b3d..6c630f2 100644 --- a/src/emitterstate.h +++ b/src/emitterstate.h @@ -31,7 +31,7 @@ namespace YAML // basic state checking bool good() const { return m_isGood; } const std::string GetLastError() const { return m_lastError; } - void SetError(const std::string& error) { throw std::runtime_error(error); m_isGood = false; m_lastError = error; } + void SetError(const std::string& error) { m_isGood = false; m_lastError = error; } // node handling void SetAnchor(); @@ -53,6 +53,7 @@ namespace YAML bool HasAnchor() const { return m_hasAnchor; } bool HasTag() const { return m_hasTag; } bool HasBegunNode() const { return m_hasAnchor || m_hasTag || m_hasNonContent; } + bool HasBegunContent() const { return m_hasAnchor || m_hasTag; } void ClearModifiedSettings(); diff --git a/util/sandbox.cpp b/util/sandbox.cpp index e40504f..8c3ccd2 100644 --- a/util/sandbox.cpp +++ b/util/sandbox.cpp @@ -4,19 +4,13 @@ int main() { YAML::Emitter out; - out << YAML::Anchor("monkey") << YAML::LocalTag("a"); out << YAML::BeginSeq; - out << "foo"; - out << YAML::LocalTag("hi") << "bar"; - out << YAML::Anchor("asdf") << YAML::BeginMap; - out << "a" << "b" << "c"; - out << YAML::Anchor("a") << YAML::BeginMap; - out << YAML::Anchor("d") << "a" << "b"; + out << "item 1"; + out << YAML::BeginMap; + out << "pens" << "a"; + out << "pencils" << "b"; out << YAML::EndMap; - out << YAML::EndMap; - out << YAML::LocalTag("hi") << YAML::BeginSeq; - out << "a" << "b" << YAML::Alias("monkey"); - out << YAML::EndSeq; + out << "item 2"; out << YAML::EndSeq; std::cout << out.c_str() << "\n"; From 081481330277969c9e25e2888714817ef00cd681 Mon Sep 17 00:00:00 2001 From: Jesse Beder Date: Tue, 22 May 2012 12:29:36 -0500 Subject: [PATCH 20/65] Added comments, not entirely correct --- include/yaml-cpp/ostream.h | 3 +++ src/emitter.cpp | 8 +++++++- src/emitterutils.cpp | 7 +++++-- src/ostream.cpp | 3 ++- util/sandbox.cpp | 1 + 5 files changed, 18 insertions(+), 4 deletions(-) diff --git a/include/yaml-cpp/ostream.h b/include/yaml-cpp/ostream.h index 65839b1..5f11ce6 100644 --- a/include/yaml-cpp/ostream.h +++ b/include/yaml-cpp/ostream.h @@ -18,11 +18,13 @@ namespace YAML void reserve(unsigned size); void put(char ch); + void set_comment() { m_comment = true; } const char *str() const { return m_buffer; } unsigned row() const { return m_row; } unsigned col() const { return m_col; } unsigned pos() const { return m_pos; } + bool comment() const { return m_comment; } private: char *m_buffer; @@ -30,6 +32,7 @@ namespace YAML unsigned m_size; unsigned m_row, m_col; + bool m_comment; }; ostream& operator << (ostream& out, const char *str); diff --git a/src/emitter.cpp b/src/emitter.cpp index 176a21c..5aa8c88 100644 --- a/src/emitter.cpp +++ b/src/emitter.cpp @@ -589,7 +589,13 @@ namespace YAML if(!good()) return *this; - m_pState->StartedScalar(); + PrepareNode(EmitterNodeType::None); + + if(m_stream.col() > 0) + m_stream << Indentation(m_pState->GetPreCommentIndent()); + Utils::WriteComment(m_stream, comment.content, m_pState->GetPostCommentIndent()); + + m_pState->SetNonContent(); return *this; } diff --git a/src/emitterutils.cpp b/src/emitterutils.cpp index c54d9be..f17e350 100644 --- a/src/emitterutils.cpp +++ b/src/emitterutils.cpp @@ -333,15 +333,18 @@ namespace YAML { const unsigned curIndent = out.col(); out << "#" << Indentation(postCommentIndent); + out.set_comment(); int codePoint; for(std::string::const_iterator i = str.begin(); GetNextCodePointAndAdvance(codePoint, i, str.end()); ) { - if(codePoint == '\n') + if(codePoint == '\n') { out << "\n" << IndentTo(curIndent) << "#" << Indentation(postCommentIndent); - else + out.set_comment(); + } else { WriteCodePoint(out, codePoint); + } } return true; } diff --git a/src/ostream.cpp b/src/ostream.cpp index a7f1e14..9bcb5e5 100644 --- a/src/ostream.cpp +++ b/src/ostream.cpp @@ -3,7 +3,7 @@ namespace YAML { - ostream::ostream(): m_buffer(0), m_pos(0), m_size(0), m_row(0), m_col(0) + ostream::ostream(): m_buffer(0), m_pos(0), m_size(0), m_row(0), m_col(0), m_comment(false) { reserve(1024); } @@ -37,6 +37,7 @@ namespace YAML if(ch == '\n') { m_row++; m_col = 0; + m_comment = false; } else m_col++; } diff --git a/util/sandbox.cpp b/util/sandbox.cpp index 8c3ccd2..8960638 100644 --- a/util/sandbox.cpp +++ b/util/sandbox.cpp @@ -4,6 +4,7 @@ int main() { YAML::Emitter out; + out << YAML::Comment("Hello"); out << YAML::BeginSeq; out << "item 1"; out << YAML::BeginMap; From eef692d7b2067735728b417bfff3e84ea749d8fa Mon Sep 17 00:00:00 2001 From: Jesse Beder Date: Tue, 22 May 2012 12:37:00 -0500 Subject: [PATCH 21/65] Fixed when we emit the doc start (only if there already is a document in the stream, and we're about to emit a new node) --- include/yaml-cpp/emitterdef.h | 2 +- src/emitter.cpp | 14 ++++++++++---- src/emitterstate.cpp | 8 +++++--- src/emitterstate.h | 1 + 4 files changed, 17 insertions(+), 8 deletions(-) diff --git a/include/yaml-cpp/emitterdef.h b/include/yaml-cpp/emitterdef.h index d8d5559..c5ca00b 100644 --- a/include/yaml-cpp/emitterdef.h +++ b/include/yaml-cpp/emitterdef.h @@ -7,7 +7,7 @@ namespace YAML { - struct EmitterNodeType { enum value { None, Scalar, FlowSeq, BlockSeq, FlowMap, BlockMap }; }; + struct EmitterNodeType { enum value { None, Property, Scalar, FlowSeq, BlockSeq, FlowMap, BlockMap }; }; } #endif // EMITTERDEF_H_62B23520_7C8E_11DE_8A39_0800200C9A66 diff --git a/src/emitter.cpp b/src/emitter.cpp index 5aa8c88..a7cc60f 100644 --- a/src/emitter.cpp +++ b/src/emitter.cpp @@ -280,6 +280,7 @@ namespace YAML case EmitterNodeType::BlockMap: BlockMapPrepareNode(child); break; + case EmitterNodeType::Property: case EmitterNodeType::Scalar: assert(false); break; @@ -288,12 +289,14 @@ namespace YAML void Emitter::PrepareTopNode(EmitterNodeType::value child) { - if(!m_pState->HasBegunNode() && m_stream.pos() > 0) { - EmitBeginDoc(); + if(m_pState->CurGroupChildCount() > 0 && m_stream.pos() > 0) { + if(child != EmitterNodeType::None) + EmitBeginDoc(); } switch(child) { case EmitterNodeType::None: + case EmitterNodeType::Property: case EmitterNodeType::Scalar: case EmitterNodeType::FlowSeq: case EmitterNodeType::FlowMap: @@ -329,6 +332,7 @@ namespace YAML switch(child) { case EmitterNodeType::None: + case EmitterNodeType::Property: case EmitterNodeType::Scalar: case EmitterNodeType::FlowSeq: case EmitterNodeType::FlowMap: @@ -378,6 +382,7 @@ namespace YAML // key switch(child) { case EmitterNodeType::None: + case EmitterNodeType::Property: case EmitterNodeType::Scalar: case EmitterNodeType::FlowSeq: case EmitterNodeType::FlowMap: @@ -394,6 +399,7 @@ namespace YAML // value switch(child) { case EmitterNodeType::None: + case EmitterNodeType::Property: case EmitterNodeType::Scalar: case EmitterNodeType::FlowSeq: case EmitterNodeType::FlowMap: @@ -537,7 +543,7 @@ namespace YAML return *this; } - PrepareNode(EmitterNodeType::None); + PrepareNode(EmitterNodeType::Property); if(!Utils::WriteAnchor(m_stream, anchor.content)) { m_pState->SetError(ErrorMsg::INVALID_ANCHOR); @@ -559,7 +565,7 @@ namespace YAML return *this; } - PrepareNode(EmitterNodeType::None); + PrepareNode(EmitterNodeType::Property); bool success = false; if(tag.type == _Tag::Type::Verbatim) diff --git a/src/emitterstate.cpp b/src/emitterstate.cpp index 20f6581..09ad567 100644 --- a/src/emitterstate.cpp +++ b/src/emitterstate.cpp @@ -4,7 +4,7 @@ namespace YAML { - EmitterState::EmitterState(): m_isGood(true), m_curIndent(0), m_hasAnchor(false), m_hasTag(false), m_hasNonContent(false) + EmitterState::EmitterState(): m_isGood(true), m_curIndent(0), m_hasAnchor(false), m_hasTag(false), m_hasNonContent(false), m_docCount(0) { // set default global manipulators m_charset.set(EmitNonAscii); @@ -60,7 +60,9 @@ namespace YAML void EmitterState::StartedNode() { - if(!m_groups.empty()) + if(m_groups.empty()) + m_docCount++; + else m_groups.top().childCount++; m_hasAnchor = false; @@ -161,7 +163,7 @@ namespace YAML std::size_t EmitterState::CurGroupChildCount() const { - return m_groups.empty() ? 0 : m_groups.top().childCount; + return m_groups.empty() ? m_docCount : m_groups.top().childCount; } void EmitterState::ClearModifiedSettings() diff --git a/src/emitterstate.h b/src/emitterstate.h index 6c630f2..1dfa699 100644 --- a/src/emitterstate.h +++ b/src/emitterstate.h @@ -160,6 +160,7 @@ namespace YAML bool m_hasAnchor; bool m_hasTag; bool m_hasNonContent; + std::size_t m_docCount; }; template From 80823583a017136f247f19e41580b8f2b1424ea1 Mon Sep 17 00:00:00 2001 From: Jesse Beder Date: Tue, 22 May 2012 12:54:54 -0500 Subject: [PATCH 22/65] Tweaked spacing for comments --- include/yaml-cpp/emitter.h | 2 ++ src/emitter.cpp | 35 +++++++++++++++++++++++------------ util/sandbox.cpp | 7 ++++--- 3 files changed, 29 insertions(+), 15 deletions(-) diff --git a/include/yaml-cpp/emitter.h b/include/yaml-cpp/emitter.h index 4251bab..a37a2d7 100644 --- a/include/yaml-cpp/emitter.h +++ b/include/yaml-cpp/emitter.h @@ -93,6 +93,8 @@ namespace YAML void FlowMapPrepareNode(EmitterNodeType::value child); void BlockMapPrepareNode(EmitterNodeType::value child); + void SpaceOrIndentTo(bool requireSpace, unsigned indent); + const char *ComputeFullBoolName(bool b) const; bool CanEmitNewline() const; diff --git a/src/emitter.cpp b/src/emitter.cpp index a7cc60f..f411cf1 100644 --- a/src/emitter.cpp +++ b/src/emitter.cpp @@ -322,8 +322,11 @@ namespace YAML const unsigned curIndent = m_pState->CurIndent(); const unsigned nextIndent = curIndent + m_pState->CurGroupIndent(); - if(!m_pState->HasBegunNode()) { - if(m_pState->CurGroupChildCount() > 0) { + if(child == EmitterNodeType::None) + return; + + if(!m_pState->HasBegunContent()) { + if(m_pState->CurGroupChildCount() > 0 || m_stream.comment()) { m_stream << "\n"; } m_stream << IndentTo(curIndent); @@ -332,20 +335,18 @@ namespace YAML switch(child) { case EmitterNodeType::None: + break; case EmitterNodeType::Property: case EmitterNodeType::Scalar: case EmitterNodeType::FlowSeq: case EmitterNodeType::FlowMap: - if(m_pState->HasBegunContent()) - m_stream << " "; - else - m_stream << IndentTo(nextIndent); + SpaceOrIndentTo(m_pState->HasBegunContent(), nextIndent); break; case EmitterNodeType::BlockSeq: m_stream << "\n"; break; case EmitterNodeType::BlockMap: - if(m_pState->HasBegunContent()) + if(m_pState->HasBegunContent() || m_stream.comment()) m_stream << "\n"; break; } @@ -382,14 +383,12 @@ namespace YAML // key switch(child) { case EmitterNodeType::None: + break; case EmitterNodeType::Property: case EmitterNodeType::Scalar: case EmitterNodeType::FlowSeq: case EmitterNodeType::FlowMap: - if(m_pState->HasBegunContent()) - m_stream << " "; - else - m_stream << IndentTo(curIndent); + SpaceOrIndentTo(m_pState->HasBegunContent(), curIndent); break; case EmitterNodeType::BlockSeq: case EmitterNodeType::BlockMap: @@ -399,11 +398,12 @@ namespace YAML // value switch(child) { case EmitterNodeType::None: + break; case EmitterNodeType::Property: case EmitterNodeType::Scalar: case EmitterNodeType::FlowSeq: case EmitterNodeType::FlowMap: - m_stream << " "; + SpaceOrIndentTo(true, nextIndent); break; case EmitterNodeType::BlockSeq: case EmitterNodeType::BlockMap: @@ -413,6 +413,17 @@ namespace YAML } } + // SpaceOrIndentTo + // . Prepares for some more content by proper spacing + void Emitter::SpaceOrIndentTo(bool requireSpace, unsigned indent) + { + if(m_stream.comment()) + m_stream << "\n"; + if(m_stream.col() > 0 && requireSpace) + m_stream << " "; + m_stream << IndentTo(indent); + } + // ******************************************************************************************* // overloads of Write diff --git a/util/sandbox.cpp b/util/sandbox.cpp index 8960638..2ffbf0a 100644 --- a/util/sandbox.cpp +++ b/util/sandbox.cpp @@ -6,9 +6,10 @@ int main() YAML::Emitter out; out << YAML::Comment("Hello"); out << YAML::BeginSeq; - out << "item 1"; - out << YAML::BeginMap; - out << "pens" << "a"; + out << YAML::Comment("Hello"); + out << YAML::Anchor("a") << YAML::Comment("anchor") << "item 1" << YAML::Comment("a"); + out << YAML::BeginMap << YAML::Comment("b"); + out << "pens" << YAML::Comment("foo") << "a" << YAML::Comment("bar"); out << "pencils" << "b"; out << YAML::EndMap; out << "item 2"; From a626424baa08a0052cff5f9c1e80ba6328d0a320 Mon Sep 17 00:00:00 2001 From: Jesse Beder Date: Tue, 22 May 2012 12:56:40 -0500 Subject: [PATCH 23/65] Split the block map prepare into key/value --- include/yaml-cpp/emitter.h | 2 + src/emitter.cpp | 94 +++++++++++++++++++++----------------- 2 files changed, 53 insertions(+), 43 deletions(-) diff --git a/include/yaml-cpp/emitter.h b/include/yaml-cpp/emitter.h index a37a2d7..3d6f0b3 100644 --- a/include/yaml-cpp/emitter.h +++ b/include/yaml-cpp/emitter.h @@ -92,6 +92,8 @@ namespace YAML void BlockSeqPrepareNode(EmitterNodeType::value child); void FlowMapPrepareNode(EmitterNodeType::value child); void BlockMapPrepareNode(EmitterNodeType::value child); + void BlockMapPrepareKey(EmitterNodeType::value child); + void BlockMapPrepareValue(EmitterNodeType::value child); void SpaceOrIndentTo(bool requireSpace, unsigned indent); diff --git a/src/emitter.cpp b/src/emitter.cpp index f411cf1..4bdc03e 100644 --- a/src/emitter.cpp +++ b/src/emitter.cpp @@ -357,59 +357,67 @@ namespace YAML } void Emitter::BlockMapPrepareNode(EmitterNodeType::value child) + { + const std::size_t childCount = m_pState->CurGroupChildCount(); + + if(childCount % 2 == 0) + BlockMapPrepareKey(child); + else + BlockMapPrepareValue(child); + } + + void Emitter::BlockMapPrepareKey(EmitterNodeType::value child) { const unsigned curIndent = m_pState->CurIndent(); const unsigned nextIndent = curIndent + m_pState->CurGroupIndent(); const std::size_t childCount = m_pState->CurGroupChildCount(); if(!m_pState->HasBegunNode()) { - if(childCount % 2 == 0) { - // key - if(childCount > 0) { - m_stream << "\n"; - } - if(false /* long key */) { - } - } else { - // value - if(false /* was long key */) { - } else { - m_stream << ":"; - } + if(childCount > 0) { + m_stream << "\n"; + } + if(false /* long key */) { } } - if(childCount % 2 == 0) { - // key - switch(child) { - case EmitterNodeType::None: - break; - case EmitterNodeType::Property: - case EmitterNodeType::Scalar: - case EmitterNodeType::FlowSeq: - case EmitterNodeType::FlowMap: - SpaceOrIndentTo(m_pState->HasBegunContent(), curIndent); - break; - case EmitterNodeType::BlockSeq: - case EmitterNodeType::BlockMap: - break; - } + switch(child) { + case EmitterNodeType::None: + break; + case EmitterNodeType::Property: + case EmitterNodeType::Scalar: + case EmitterNodeType::FlowSeq: + case EmitterNodeType::FlowMap: + SpaceOrIndentTo(m_pState->HasBegunContent(), curIndent); + break; + case EmitterNodeType::BlockSeq: + case EmitterNodeType::BlockMap: + break; + } + } + + void Emitter::BlockMapPrepareValue(EmitterNodeType::value child) + { + const unsigned curIndent = m_pState->CurIndent(); + const unsigned nextIndent = curIndent + m_pState->CurGroupIndent(); + + if(false /* was long key */) { } else { - // value - switch(child) { - case EmitterNodeType::None: - break; - case EmitterNodeType::Property: - case EmitterNodeType::Scalar: - case EmitterNodeType::FlowSeq: - case EmitterNodeType::FlowMap: - SpaceOrIndentTo(true, nextIndent); - break; - case EmitterNodeType::BlockSeq: - case EmitterNodeType::BlockMap: - m_stream << "\n"; - break; - } + m_stream << ":"; + } + + switch(child) { + case EmitterNodeType::None: + break; + case EmitterNodeType::Property: + case EmitterNodeType::Scalar: + case EmitterNodeType::FlowSeq: + case EmitterNodeType::FlowMap: + SpaceOrIndentTo(true, nextIndent); + break; + case EmitterNodeType::BlockSeq: + case EmitterNodeType::BlockMap: + m_stream << "\n"; + break; } } From 5e0886db87df172f94e47d10a75a9fdc876029b1 Mon Sep 17 00:00:00 2001 From: Jesse Beder Date: Tue, 22 May 2012 12:59:07 -0500 Subject: [PATCH 24/65] Fixed block map prepare value (where the colon goes) --- src/emitter.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/emitter.cpp b/src/emitter.cpp index 4bdc03e..6b6e139 100644 --- a/src/emitter.cpp +++ b/src/emitter.cpp @@ -371,6 +371,9 @@ namespace YAML const unsigned curIndent = m_pState->CurIndent(); const unsigned nextIndent = curIndent + m_pState->CurGroupIndent(); const std::size_t childCount = m_pState->CurGroupChildCount(); + + if(child == EmitterNodeType::None) + return; if(!m_pState->HasBegunNode()) { if(childCount > 0) { @@ -400,9 +403,11 @@ namespace YAML const unsigned curIndent = m_pState->CurIndent(); const unsigned nextIndent = curIndent + m_pState->CurGroupIndent(); - if(false /* was long key */) { - } else { - m_stream << ":"; + if(!m_pState->HasBegunNode()) { + if(false /* was long key */) { + } else { + m_stream << ":"; + } } switch(child) { From 879f96d2f67039aeca98b14a0b70b05936b32119 Mon Sep 17 00:00:00 2001 From: Jesse Beder Date: Tue, 22 May 2012 12:59:58 -0500 Subject: [PATCH 25/65] Tweak sandbox --- util/sandbox.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/util/sandbox.cpp b/util/sandbox.cpp index 2ffbf0a..b67fc2b 100644 --- a/util/sandbox.cpp +++ b/util/sandbox.cpp @@ -11,9 +11,10 @@ int main() out << YAML::BeginMap << YAML::Comment("b"); out << "pens" << YAML::Comment("foo") << "a" << YAML::Comment("bar"); out << "pencils" << "b"; - out << YAML::EndMap; + out << YAML::EndMap << YAML::Comment("monkey"); out << "item 2"; out << YAML::EndSeq; + out << YAML::Comment("end"); std::cout << out.c_str() << "\n"; return 0; From cc559956a07f5388006310e2285767486a2ff978 Mon Sep 17 00:00:00 2001 From: Jesse Beder Date: Tue, 22 May 2012 13:53:03 -0500 Subject: [PATCH 26/65] Added bool, char, binary --- src/emitter.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/emitter.cpp b/src/emitter.cpp index 6b6e139..6e49e54 100644 --- a/src/emitter.cpp +++ b/src/emitter.cpp @@ -369,7 +369,6 @@ namespace YAML void Emitter::BlockMapPrepareKey(EmitterNodeType::value child) { const unsigned curIndent = m_pState->CurIndent(); - const unsigned nextIndent = curIndent + m_pState->CurGroupIndent(); const std::size_t childCount = m_pState->CurGroupChildCount(); if(child == EmitterNodeType::None) @@ -520,6 +519,8 @@ namespace YAML if(!good()) return *this; + PrepareNode(EmitterNodeType::Scalar); + m_stream << ComputeFullBoolName(b); m_pState->StartedScalar(); return *this; @@ -530,6 +531,8 @@ namespace YAML if(!good()) return *this; + PrepareNode(EmitterNodeType::Scalar); + m_stream << ch; m_pState->StartedScalar(); return *this; @@ -635,6 +638,7 @@ namespace YAML if(!good()) return *this; + // TODO m_pState->StartedScalar(); return *this; @@ -647,6 +651,8 @@ namespace YAML if(!good()) return *this; + PrepareNode(EmitterNodeType::Scalar); + Utils::WriteBinary(m_stream, binary); m_pState->StartedScalar(); return *this; From c95bcae49fea5251b542d8f4b93443f720f2a270 Mon Sep 17 00:00:00 2001 From: Jesse Beder Date: Tue, 22 May 2012 13:57:44 -0500 Subject: [PATCH 27/65] Added writing integral types --- include/yaml-cpp/emitter.h | 12 ++++++++++++ src/emitter.cpp | 37 +++++++++++++++++++++++++++++++------ util/sandbox.cpp | 2 +- 3 files changed, 44 insertions(+), 7 deletions(-) diff --git a/include/yaml-cpp/emitter.h b/include/yaml-cpp/emitter.h index 3d6f0b3..76876cd 100644 --- a/include/yaml-cpp/emitter.h +++ b/include/yaml-cpp/emitter.h @@ -74,6 +74,9 @@ namespace YAML template void SetStreamablePrecision(std::stringstream&) {} unsigned GetFloatPrecision() const; unsigned GetDoublePrecision() const; + + void PrepareIntegralStream(std::stringstream& stream) const; + void StartedScalar(); private: void EmitBeginDoc(); @@ -111,6 +114,15 @@ namespace YAML if(!good()) return *this; + PrepareNode(EmitterNodeType::Scalar); + + std::stringstream stream; + PrepareIntegralStream(stream); + stream << value; + m_stream << stream.str(); + + StartedScalar(); + return *this; } diff --git a/src/emitter.cpp b/src/emitter.cpp index 6e49e54..02a2ad9 100644 --- a/src/emitter.cpp +++ b/src/emitter.cpp @@ -436,6 +436,31 @@ namespace YAML m_stream << IndentTo(indent); } + void Emitter::PrepareIntegralStream(std::stringstream& stream) const + { + + switch(m_pState->GetIntFormat()) { + case Dec: + stream << std::dec; + break; + case Hex: + stream << "0x"; + stream << std::hex; + break; + case Oct: + stream << "0"; + stream << std::oct; + break; + default: + assert(false); + } + } + + void Emitter::StartedScalar() + { + m_pState->StartedScalar(); + } + // ******************************************************************************************* // overloads of Write @@ -464,7 +489,7 @@ namespace YAML break; } - m_pState->StartedScalar(); + StartedScalar(); return *this; } @@ -521,7 +546,7 @@ namespace YAML PrepareNode(EmitterNodeType::Scalar); m_stream << ComputeFullBoolName(b); - m_pState->StartedScalar(); + StartedScalar(); return *this; } @@ -533,7 +558,7 @@ namespace YAML PrepareNode(EmitterNodeType::Scalar); m_stream << ch; - m_pState->StartedScalar(); + StartedScalar(); return *this; } @@ -555,7 +580,7 @@ namespace YAML return *this; } - m_pState->StartedScalar(); + StartedScalar(); return *this; } @@ -639,7 +664,7 @@ namespace YAML return *this; // TODO - m_pState->StartedScalar(); + StartedScalar(); return *this; } @@ -653,7 +678,7 @@ namespace YAML PrepareNode(EmitterNodeType::Scalar); Utils::WriteBinary(m_stream, binary); - m_pState->StartedScalar(); + StartedScalar(); return *this; } diff --git a/util/sandbox.cpp b/util/sandbox.cpp index b67fc2b..aa05394 100644 --- a/util/sandbox.cpp +++ b/util/sandbox.cpp @@ -10,7 +10,7 @@ int main() out << YAML::Anchor("a") << YAML::Comment("anchor") << "item 1" << YAML::Comment("a"); out << YAML::BeginMap << YAML::Comment("b"); out << "pens" << YAML::Comment("foo") << "a" << YAML::Comment("bar"); - out << "pencils" << "b"; + out << "pencils" << 15; out << YAML::EndMap << YAML::Comment("monkey"); out << "item 2"; out << YAML::EndSeq; From 952fe51c73a42325cc4f874dcea0f44fd6c8edda Mon Sep 17 00:00:00 2001 From: Jesse Beder Date: Tue, 22 May 2012 13:59:31 -0500 Subject: [PATCH 28/65] Added writing float/double --- include/yaml-cpp/emitter.h | 17 +++++++++++++---- util/sandbox.cpp | 2 +- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/include/yaml-cpp/emitter.h b/include/yaml-cpp/emitter.h index 76876cd..e6caddb 100644 --- a/include/yaml-cpp/emitter.h +++ b/include/yaml-cpp/emitter.h @@ -132,19 +132,28 @@ namespace YAML if(!good()) return *this; + PrepareNode(EmitterNodeType::Scalar); + + std::stringstream stream; + SetStreamablePrecision(stream); + stream << value; + m_stream << stream.str(); + + StartedScalar(); + return *this; } template<> - inline void Emitter::SetStreamablePrecision(std::stringstream& str) + inline void Emitter::SetStreamablePrecision(std::stringstream& stream) { - str.precision(GetFloatPrecision()); + stream.precision(GetFloatPrecision()); } template<> - inline void Emitter::SetStreamablePrecision(std::stringstream& str) + inline void Emitter::SetStreamablePrecision(std::stringstream& stream) { - str.precision(GetDoublePrecision()); + stream.precision(GetDoublePrecision()); } // overloads of insertion diff --git a/util/sandbox.cpp b/util/sandbox.cpp index aa05394..31e7d4e 100644 --- a/util/sandbox.cpp +++ b/util/sandbox.cpp @@ -9,7 +9,7 @@ int main() out << YAML::Comment("Hello"); out << YAML::Anchor("a") << YAML::Comment("anchor") << "item 1" << YAML::Comment("a"); out << YAML::BeginMap << YAML::Comment("b"); - out << "pens" << YAML::Comment("foo") << "a" << YAML::Comment("bar"); + out << "pens" << YAML::Comment("foo") << 2.3 << YAML::Comment("bar"); out << "pencils" << 15; out << YAML::EndMap << YAML::Comment("monkey"); out << "item 2"; From 41e4cd3308b04af875f1f04111713f5f20b10fb5 Mon Sep 17 00:00:00 2001 From: Jesse Beder Date: Tue, 22 May 2012 14:20:50 -0500 Subject: [PATCH 29/65] Split block map simple/long key for both key/value --- include/yaml-cpp/emitter.h | 6 ++- src/emitter.cpp | 85 +++++++++++++++++++++++++++++++++----- src/emitterstate.cpp | 23 ++++++++++- src/emitterstate.h | 5 ++- util/sandbox.cpp | 17 +++----- 5 files changed, 109 insertions(+), 27 deletions(-) diff --git a/include/yaml-cpp/emitter.h b/include/yaml-cpp/emitter.h index e6caddb..ba963a0 100644 --- a/include/yaml-cpp/emitter.h +++ b/include/yaml-cpp/emitter.h @@ -95,8 +95,10 @@ namespace YAML void BlockSeqPrepareNode(EmitterNodeType::value child); void FlowMapPrepareNode(EmitterNodeType::value child); void BlockMapPrepareNode(EmitterNodeType::value child); - void BlockMapPrepareKey(EmitterNodeType::value child); - void BlockMapPrepareValue(EmitterNodeType::value child); + void BlockMapPrepareLongKey(EmitterNodeType::value child); + void BlockMapPrepareSimpleKey(EmitterNodeType::value child); + void BlockMapPrepareLongKeyValue(EmitterNodeType::value child); + void BlockMapPrepareSimpleKeyValue(EmitterNodeType::value child); void SpaceOrIndentTo(bool requireSpace, unsigned indent); diff --git a/src/emitter.cpp b/src/emitter.cpp index 02a2ad9..841ba83 100644 --- a/src/emitter.cpp +++ b/src/emitter.cpp @@ -360,13 +360,23 @@ namespace YAML { const std::size_t childCount = m_pState->CurGroupChildCount(); - if(childCount % 2 == 0) - BlockMapPrepareKey(child); - else - BlockMapPrepareValue(child); + if(childCount % 2 == 0) { + if(m_pState->GetMapKeyFormat() == LongKey || child == EmitterNodeType::BlockSeq || child == EmitterNodeType::BlockMap) + m_pState->SetLongKey(); + + if(m_pState->CurGroupLongKey()) + BlockMapPrepareLongKey(child); + else + BlockMapPrepareSimpleKey(child); + } else { + if(m_pState->CurGroupLongKey()) + BlockMapPrepareLongKeyValue(child); + else + BlockMapPrepareSimpleKeyValue(child); + } } - void Emitter::BlockMapPrepareKey(EmitterNodeType::value child) + void Emitter::BlockMapPrepareLongKey(EmitterNodeType::value child) { const unsigned curIndent = m_pState->CurIndent(); const std::size_t childCount = m_pState->CurGroupChildCount(); @@ -378,7 +388,39 @@ namespace YAML if(childCount > 0) { m_stream << "\n"; } - if(false /* long key */) { + if(m_stream.comment()) { + m_stream << "\n"; + } + m_stream << IndentTo(curIndent); + m_stream << "?"; + } + + switch(child) { + case EmitterNodeType::None: + break; + case EmitterNodeType::Property: + case EmitterNodeType::Scalar: + case EmitterNodeType::FlowSeq: + case EmitterNodeType::FlowMap: + SpaceOrIndentTo(m_pState->HasBegunContent(), curIndent); + break; + case EmitterNodeType::BlockSeq: + case EmitterNodeType::BlockMap: + break; + } + } + + void Emitter::BlockMapPrepareSimpleKey(EmitterNodeType::value child) + { + const unsigned curIndent = m_pState->CurIndent(); + const std::size_t childCount = m_pState->CurGroupChildCount(); + + if(child == EmitterNodeType::None) + return; + + if(!m_pState->HasBegunNode()) { + if(childCount > 0) { + m_stream << "\n"; } } @@ -397,16 +439,12 @@ namespace YAML } } - void Emitter::BlockMapPrepareValue(EmitterNodeType::value child) + void Emitter::BlockMapPrepareLongKeyValue(EmitterNodeType::value child) { const unsigned curIndent = m_pState->CurIndent(); const unsigned nextIndent = curIndent + m_pState->CurGroupIndent(); if(!m_pState->HasBegunNode()) { - if(false /* was long key */) { - } else { - m_stream << ":"; - } } switch(child) { @@ -425,6 +463,31 @@ namespace YAML } } + void Emitter::BlockMapPrepareSimpleKeyValue(EmitterNodeType::value child) + { + const unsigned curIndent = m_pState->CurIndent(); + const unsigned nextIndent = curIndent + m_pState->CurGroupIndent(); + + if(!m_pState->HasBegunNode()) { + m_stream << ":"; + } + + switch(child) { + case EmitterNodeType::None: + break; + case EmitterNodeType::Property: + case EmitterNodeType::Scalar: + case EmitterNodeType::FlowSeq: + case EmitterNodeType::FlowMap: + SpaceOrIndentTo(true, nextIndent); + break; + case EmitterNodeType::BlockSeq: + case EmitterNodeType::BlockMap: + m_stream << "\n"; + break; + } + } + // SpaceOrIndentTo // . Prepares for some more content by proper spacing void Emitter::SpaceOrIndentTo(bool requireSpace, unsigned indent) diff --git a/src/emitterstate.cpp b/src/emitterstate.cpp index 09ad567..6862d40 100644 --- a/src/emitterstate.cpp +++ b/src/emitterstate.cpp @@ -58,12 +58,26 @@ namespace YAML m_hasNonContent = true; } + void EmitterState::SetLongKey() + { + assert(!m_groups.empty()); + if(m_groups.empty()) + return; + + assert(m_groups.top().type == GroupType::Map); + assert(m_groups.top().flowType == FlowType::Block); + m_groups.top().longKey = true; + } + void EmitterState::StartedNode() { - if(m_groups.empty()) + if(m_groups.empty()) { m_docCount++; - else + } else { m_groups.top().childCount++; + if(m_groups.top().childCount % 2 == 0) + m_groups.top().longKey = false; + } m_hasAnchor = false; m_hasTag = false; @@ -166,6 +180,11 @@ namespace YAML return m_groups.empty() ? m_docCount : m_groups.top().childCount; } + bool EmitterState::CurGroupLongKey() const + { + return m_groups.empty() ? false : m_groups.top().longKey; + } + void EmitterState::ClearModifiedSettings() { m_modifiedSettings.clear(); diff --git a/src/emitterstate.h b/src/emitterstate.h index 1dfa699..6125bb5 100644 --- a/src/emitterstate.h +++ b/src/emitterstate.h @@ -37,6 +37,7 @@ namespace YAML void SetAnchor(); void SetTag(); void SetNonContent(); + void SetLongKey(); void StartedScalar(); void StartedGroup(GroupType::value type); void EndedGroup(GroupType::value type); @@ -48,6 +49,7 @@ namespace YAML FlowType::value CurGroupFlowType() const; int CurGroupIndent() const; std::size_t CurGroupChildCount() const; + bool CurGroupLongKey() const; int CurIndent() const { return m_curIndent; } bool HasAnchor() const { return m_hasAnchor; } @@ -127,12 +129,13 @@ namespace YAML SettingChanges m_globalModifiedSettings; struct Group { - explicit Group(GroupType::value type_): type(type_), indent(0), childCount(0) {} + explicit Group(GroupType::value type_): type(type_), indent(0), childCount(0), longKey(false) {} GroupType::value type; FlowType::value flowType; int indent; std::size_t childCount; + bool longKey; SettingChanges modifiedSettings; diff --git a/util/sandbox.cpp b/util/sandbox.cpp index 31e7d4e..2b617eb 100644 --- a/util/sandbox.cpp +++ b/util/sandbox.cpp @@ -4,17 +4,12 @@ int main() { YAML::Emitter out; - out << YAML::Comment("Hello"); - out << YAML::BeginSeq; - out << YAML::Comment("Hello"); - out << YAML::Anchor("a") << YAML::Comment("anchor") << "item 1" << YAML::Comment("a"); - out << YAML::BeginMap << YAML::Comment("b"); - out << "pens" << YAML::Comment("foo") << 2.3 << YAML::Comment("bar"); - out << "pencils" << 15; - out << YAML::EndMap << YAML::Comment("monkey"); - out << "item 2"; - out << YAML::EndSeq; - out << YAML::Comment("end"); + out << YAML::BeginMap; + out << YAML::BeginMap; + out << "a" << "b"; + out << YAML::EndMap; + out << "c"; + out << YAML::EndMap; std::cout << out.c_str() << "\n"; return 0; From bf07af52ff3208207e747bfeec92af22a45503d2 Mon Sep 17 00:00:00 2001 From: Jesse Beder Date: Tue, 22 May 2012 14:26:34 -0500 Subject: [PATCH 30/65] Added long key --- src/emitter.cpp | 86 +++++++++++++++++++++++++----------------------- util/sandbox.cpp | 4 ++- 2 files changed, 48 insertions(+), 42 deletions(-) diff --git a/src/emitter.cpp b/src/emitter.cpp index 841ba83..59eaa56 100644 --- a/src/emitter.cpp +++ b/src/emitter.cpp @@ -358,22 +358,22 @@ namespace YAML void Emitter::BlockMapPrepareNode(EmitterNodeType::value child) { - const std::size_t childCount = m_pState->CurGroupChildCount(); - - if(childCount % 2 == 0) { - if(m_pState->GetMapKeyFormat() == LongKey || child == EmitterNodeType::BlockSeq || child == EmitterNodeType::BlockMap) - m_pState->SetLongKey(); - - if(m_pState->CurGroupLongKey()) - BlockMapPrepareLongKey(child); - else - BlockMapPrepareSimpleKey(child); - } else { - if(m_pState->CurGroupLongKey()) - BlockMapPrepareLongKeyValue(child); - else - BlockMapPrepareSimpleKeyValue(child); - } + if(m_pState->CurGroupChildCount() % 2 == 0) { + if(m_pState->GetMapKeyFormat() == LongKey) + m_pState->SetLongKey(); + if(child == EmitterNodeType::BlockSeq || child == EmitterNodeType::BlockMap) + m_pState->SetLongKey(); + + if(m_pState->CurGroupLongKey()) + BlockMapPrepareLongKey(child); + else + BlockMapPrepareSimpleKey(child); + } else { + if(m_pState->CurGroupLongKey()) + BlockMapPrepareLongKeyValue(child); + else + BlockMapPrepareSimpleKeyValue(child); + } } void Emitter::BlockMapPrepareLongKey(EmitterNodeType::value child) @@ -410,6 +410,34 @@ namespace YAML } } + void Emitter::BlockMapPrepareLongKeyValue(EmitterNodeType::value child) + { + const unsigned curIndent = m_pState->CurIndent(); + const unsigned nextIndent = curIndent + m_pState->CurGroupIndent(); + + if(child == EmitterNodeType::None) + return; + + if(!m_pState->HasBegunContent()) { + m_stream << "\n"; + m_stream << IndentTo(curIndent); + m_stream << ":"; + } + + switch(child) { + case EmitterNodeType::None: + break; + case EmitterNodeType::Property: + case EmitterNodeType::Scalar: + case EmitterNodeType::FlowSeq: + case EmitterNodeType::FlowMap: + case EmitterNodeType::BlockSeq: + case EmitterNodeType::BlockMap: + SpaceOrIndentTo(true, nextIndent); + break; + } + } + void Emitter::BlockMapPrepareSimpleKey(EmitterNodeType::value child) { const unsigned curIndent = m_pState->CurIndent(); @@ -438,31 +466,7 @@ namespace YAML break; } } - - void Emitter::BlockMapPrepareLongKeyValue(EmitterNodeType::value child) - { - const unsigned curIndent = m_pState->CurIndent(); - const unsigned nextIndent = curIndent + m_pState->CurGroupIndent(); - - if(!m_pState->HasBegunNode()) { - } - - switch(child) { - case EmitterNodeType::None: - break; - case EmitterNodeType::Property: - case EmitterNodeType::Scalar: - case EmitterNodeType::FlowSeq: - case EmitterNodeType::FlowMap: - SpaceOrIndentTo(true, nextIndent); - break; - case EmitterNodeType::BlockSeq: - case EmitterNodeType::BlockMap: - m_stream << "\n"; - break; - } - } - + void Emitter::BlockMapPrepareSimpleKeyValue(EmitterNodeType::value child) { const unsigned curIndent = m_pState->CurIndent(); diff --git a/util/sandbox.cpp b/util/sandbox.cpp index 2b617eb..6f449a2 100644 --- a/util/sandbox.cpp +++ b/util/sandbox.cpp @@ -8,7 +8,9 @@ int main() out << YAML::BeginMap; out << "a" << "b"; out << YAML::EndMap; - out << "c"; + out << YAML::BeginMap; + out << "a" << "b"; + out << YAML::EndMap; out << YAML::EndMap; std::cout << out.c_str() << "\n"; From 944ebb7d1eab4b8e3d2b8b0ac740dc0dd6b861fa Mon Sep 17 00:00:00 2001 From: Jesse Beder Date: Tue, 22 May 2012 15:00:10 -0500 Subject: [PATCH 31/65] Fixed settings reverting properly --- src/emitter.cpp | 2 +- src/emitterstate.cpp | 3 +++ util/sandbox.cpp | 5 +---- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/emitter.cpp b/src/emitter.cpp index 59eaa56..6ca4b42 100644 --- a/src/emitter.cpp +++ b/src/emitter.cpp @@ -402,7 +402,7 @@ namespace YAML case EmitterNodeType::Scalar: case EmitterNodeType::FlowSeq: case EmitterNodeType::FlowMap: - SpaceOrIndentTo(m_pState->HasBegunContent(), curIndent); + SpaceOrIndentTo(true, curIndent); break; case EmitterNodeType::BlockSeq: case EmitterNodeType::BlockMap: diff --git a/src/emitterstate.cpp b/src/emitterstate.cpp index 6862d40..8eed776 100644 --- a/src/emitterstate.cpp +++ b/src/emitterstate.cpp @@ -106,6 +106,7 @@ namespace YAML void EmitterState::StartedScalar() { StartedNode(); + ClearModifiedSettings(); } void EmitterState::StartedGroup(GroupType::value type) @@ -150,6 +151,8 @@ namespace YAML // 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(); } EmitterNodeType::value EmitterState::CurGroupNodeType() const diff --git a/util/sandbox.cpp b/util/sandbox.cpp index 6f449a2..972d954 100644 --- a/util/sandbox.cpp +++ b/util/sandbox.cpp @@ -5,10 +5,7 @@ int main() { YAML::Emitter out; out << YAML::BeginMap; - out << YAML::BeginMap; - out << "a" << "b"; - out << YAML::EndMap; - out << YAML::BeginMap; + out << YAML::LongKey << "a" << "b"; out << "a" << "b"; out << YAML::EndMap; out << YAML::EndMap; From cdfbac1fd75a710fd83f5f8074c2c971a412ce88 Mon Sep 17 00:00:00 2001 From: Jesse Beder Date: Tue, 22 May 2012 15:02:36 -0500 Subject: [PATCH 32/65] Fixed some tests with the new compact long keys --- test/emittertests.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/test/emittertests.cpp b/test/emittertests.cpp index f157ea1..2c9b7a9 100644 --- a/test/emittertests.cpp +++ b/test/emittertests.cpp @@ -191,7 +191,7 @@ namespace Test out << YAML::Value << "demon"; out << YAML::EndMap; - desiredOutput = "?\n - 1\n - 3\n: monster\n? [2, 0]\n: demon"; + desiredOutput = "? - 1\n - 3\n: monster\n? [2, 0]\n: demon"; } void AutoLongKey(YAML::Emitter& out, std::string& desiredOutput) @@ -205,7 +205,7 @@ namespace Test out << YAML::Value << "angel"; out << YAML::EndMap; - desiredOutput = "?\n - 1\n - 3\n: monster\n? [2, 0]\n: demon\nthe origin: angel"; + desiredOutput = "? - 1\n - 3\n: monster\n? [2, 0]\n: demon\nthe origin: angel"; } void ScalarFormat(YAML::Emitter& out, std::string& desiredOutput) @@ -257,7 +257,7 @@ namespace Test out << "total value"; out << YAML::EndMap; - desiredOutput = "?\n key: value\n next key: next value\n: total value"; + desiredOutput = "? key: value\n next key: next value\n: total value"; } void AliasAndAnchor(YAML::Emitter& out, std::string& desiredOutput) From faa2e50605f7ed8d46ff1474c1f75f48a4059fdf Mon Sep 17 00:00:00 2001 From: Jesse Beder Date: Tue, 22 May 2012 15:07:11 -0500 Subject: [PATCH 33/65] Forced literal scalars to use long keys --- src/emitter.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/emitter.cpp b/src/emitter.cpp index 6ca4b42..a6fdd50 100644 --- a/src/emitter.cpp +++ b/src/emitter.cpp @@ -536,11 +536,14 @@ namespace YAML if(!good()) return *this; - PrepareNode(EmitterNodeType::Scalar); - const bool escapeNonAscii = m_pState->GetOutputCharset() == EscapeNonAscii; const StringFormat::value strFormat = Utils::ComputeStringFormat(str, m_pState->GetStringFormat(), m_pState->CurGroupFlowType(), escapeNonAscii); + if(strFormat == StringFormat::Literal) + m_pState->SetMapKeyFormat(YAML::LongKey, FmtScope::Local); + + PrepareNode(EmitterNodeType::Scalar); + switch(strFormat) { case StringFormat::Plain: m_stream << str; From 2670ce8aaf2453a6c280f3270f0c5382d3652f2e Mon Sep 17 00:00:00 2001 From: Jesse Beder Date: Tue, 22 May 2012 15:08:21 -0500 Subject: [PATCH 34/65] Fixed bool formatting --- src/emitter.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/emitter.cpp b/src/emitter.cpp index a6fdd50..0a72545 100644 --- a/src/emitter.cpp +++ b/src/emitter.cpp @@ -615,7 +615,13 @@ namespace YAML return *this; PrepareNode(EmitterNodeType::Scalar); - m_stream << ComputeFullBoolName(b); + + const char *name = ComputeFullBoolName(b); + if(m_pState->GetBoolLengthFormat() == ShortBool) + m_stream << name[0]; + else + m_stream << name; + StartedScalar(); return *this; From b8a87c43bce1017c0710a706343c647210197c88 Mon Sep 17 00:00:00 2001 From: Jesse Beder Date: Tue, 22 May 2012 15:42:45 -0500 Subject: [PATCH 35/65] Added flow seq --- src/emitter.cpp | 36 ++++++++++++++++++++++++++++++++++++ src/emitterstate.cpp | 8 ++++++++ src/emitterstate.h | 1 + util/sandbox.cpp | 7 +++---- 4 files changed, 48 insertions(+), 4 deletions(-) diff --git a/src/emitter.cpp b/src/emitter.cpp index 0a72545..a639e9e 100644 --- a/src/emitter.cpp +++ b/src/emitter.cpp @@ -221,6 +221,15 @@ namespace YAML if(!good()) return; + if(m_pState->CurGroupFlowType() == FlowType::Flow) { + if(m_stream.comment()) + m_stream << "\n"; + m_stream << IndentTo(m_pState->CurIndent()); + if(m_pState->CurGroupChildCount() == 0) + m_stream << "["; + m_stream << "]"; + } + m_pState->EndedGroup(GroupType::Seq); } @@ -315,6 +324,33 @@ namespace YAML void Emitter::FlowSeqPrepareNode(EmitterNodeType::value child) { + const unsigned curIndent = m_pState->CurIndent(); + const unsigned lastIndent = m_pState->LastIndent(); + + if(!m_pState->HasBegunNode()) { + if(m_stream.comment()) + m_stream << "\n"; + m_stream << IndentTo(lastIndent); + if(m_pState->CurGroupChildCount() == 0) + m_stream << "["; + else + m_stream << ","; + } + + switch(child) { + case EmitterNodeType::None: + break; + case EmitterNodeType::Property: + case EmitterNodeType::Scalar: + case EmitterNodeType::FlowSeq: + case EmitterNodeType::FlowMap: + SpaceOrIndentTo(m_pState->HasBegunContent() || m_pState->CurGroupChildCount() > 0, curIndent); + break; + case EmitterNodeType::BlockSeq: + case EmitterNodeType::BlockMap: + assert(false); + break; + } } void Emitter::BlockSeqPrepareNode(EmitterNodeType::value child) diff --git a/src/emitterstate.cpp b/src/emitterstate.cpp index 8eed776..14b2535 100644 --- a/src/emitterstate.cpp +++ b/src/emitterstate.cpp @@ -188,6 +188,14 @@ namespace YAML return m_groups.empty() ? false : m_groups.top().longKey; } + int EmitterState::LastIndent() const + { + if(m_groups.size() <= 1) + return 0; + + return m_curIndent - m_groups.top(-1).indent; + } + void EmitterState::ClearModifiedSettings() { m_modifiedSettings.clear(); diff --git a/src/emitterstate.h b/src/emitterstate.h index 6125bb5..d533dae 100644 --- a/src/emitterstate.h +++ b/src/emitterstate.h @@ -51,6 +51,7 @@ namespace YAML std::size_t CurGroupChildCount() const; bool CurGroupLongKey() const; + int LastIndent() const; int CurIndent() const { return m_curIndent; } bool HasAnchor() const { return m_hasAnchor; } bool HasTag() const { return m_hasTag; } diff --git a/util/sandbox.cpp b/util/sandbox.cpp index 972d954..83956d2 100644 --- a/util/sandbox.cpp +++ b/util/sandbox.cpp @@ -4,11 +4,10 @@ int main() { YAML::Emitter out; - out << YAML::BeginMap; - out << YAML::LongKey << "a" << "b"; + out << YAML::Flow; + out << YAML::BeginSeq; out << "a" << "b"; - out << YAML::EndMap; - out << YAML::EndMap; + out << YAML::EndSeq; std::cout << out.c_str() << "\n"; return 0; From 0e3e6791ff234220ab9d6eae22828a302499c8fe Mon Sep 17 00:00:00 2001 From: Jesse Beder Date: Tue, 22 May 2012 16:36:07 -0500 Subject: [PATCH 36/65] Added flow map, simple key/value --- include/yaml-cpp/emitter.h | 10 +++- src/emitter.cpp | 96 ++++++++++++++++++++++++++++++++++++++ src/emitterstate.cpp | 10 +++- src/emitterstate.h | 1 + 4 files changed, 115 insertions(+), 2 deletions(-) diff --git a/include/yaml-cpp/emitter.h b/include/yaml-cpp/emitter.h index ba963a0..43101da 100644 --- a/include/yaml-cpp/emitter.h +++ b/include/yaml-cpp/emitter.h @@ -93,11 +93,19 @@ namespace YAML void PrepareTopNode(EmitterNodeType::value child); void FlowSeqPrepareNode(EmitterNodeType::value child); void BlockSeqPrepareNode(EmitterNodeType::value child); + void FlowMapPrepareNode(EmitterNodeType::value child); + + void FlowMapPrepareLongKey(EmitterNodeType::value child); + void FlowMapPrepareLongKeyValue(EmitterNodeType::value child); + void FlowMapPrepareSimpleKey(EmitterNodeType::value child); + void FlowMapPrepareSimpleKeyValue(EmitterNodeType::value child); + void BlockMapPrepareNode(EmitterNodeType::value child); + void BlockMapPrepareLongKey(EmitterNodeType::value child); - void BlockMapPrepareSimpleKey(EmitterNodeType::value child); void BlockMapPrepareLongKeyValue(EmitterNodeType::value child); + void BlockMapPrepareSimpleKey(EmitterNodeType::value child); void BlockMapPrepareSimpleKeyValue(EmitterNodeType::value child); void SpaceOrIndentTo(bool requireSpace, unsigned indent); diff --git a/src/emitter.cpp b/src/emitter.cpp index a639e9e..9dfcb35 100644 --- a/src/emitter.cpp +++ b/src/emitter.cpp @@ -221,6 +221,9 @@ namespace YAML if(!good()) return; + if(m_pState->CurGroupChildCount() == 0) + m_pState->ForceFlow(); + if(m_pState->CurGroupFlowType() == FlowType::Flow) { if(m_stream.comment()) m_stream << "\n"; @@ -250,6 +253,18 @@ namespace YAML if(!good()) return; + if(m_pState->CurGroupChildCount() == 0) + m_pState->ForceFlow(); + + if(m_pState->CurGroupFlowType() == FlowType::Flow) { + if(m_stream.comment()) + m_stream << "\n"; + m_stream << IndentTo(m_pState->CurIndent()); + if(m_pState->CurGroupChildCount() == 0) + m_stream << "{"; + m_stream << "}"; + } + m_pState->EndedGroup(GroupType::Map); } @@ -390,6 +405,87 @@ namespace YAML void Emitter::FlowMapPrepareNode(EmitterNodeType::value child) { + if(m_pState->CurGroupChildCount() % 2 == 0) { + if(m_pState->GetMapKeyFormat() == LongKey) + m_pState->SetLongKey(); + + if(m_pState->CurGroupLongKey()) + FlowMapPrepareLongKey(child); + else + FlowMapPrepareSimpleKey(child); + } else { + if(m_pState->CurGroupLongKey()) + FlowMapPrepareLongKeyValue(child); + else + FlowMapPrepareSimpleKeyValue(child); + } + } + + void Emitter::FlowMapPrepareLongKey(EmitterNodeType::value child) + { + } + + void Emitter::FlowMapPrepareLongKeyValue(EmitterNodeType::value child) + { + } + + void Emitter::FlowMapPrepareSimpleKey(EmitterNodeType::value child) + { + const unsigned curIndent = m_pState->CurIndent(); + const unsigned lastIndent = m_pState->LastIndent(); + + if(!m_pState->HasBegunNode()) { + if(m_stream.comment()) + m_stream << "\n"; + m_stream << IndentTo(lastIndent); + if(m_pState->CurGroupChildCount() == 0) + m_stream << "{"; + else + m_stream << ","; + } + + switch(child) { + case EmitterNodeType::None: + break; + case EmitterNodeType::Property: + case EmitterNodeType::Scalar: + case EmitterNodeType::FlowSeq: + case EmitterNodeType::FlowMap: + SpaceOrIndentTo(m_pState->HasBegunContent() || m_pState->CurGroupChildCount() > 0, curIndent); + break; + case EmitterNodeType::BlockSeq: + case EmitterNodeType::BlockMap: + assert(false); + break; + } + } + + void Emitter::FlowMapPrepareSimpleKeyValue(EmitterNodeType::value child) + { + const unsigned curIndent = m_pState->CurIndent(); + const unsigned lastIndent = m_pState->LastIndent(); + + if(!m_pState->HasBegunNode()) { + if(m_stream.comment()) + m_stream << "\n"; + m_stream << IndentTo(lastIndent); + m_stream << ":"; + } + + switch(child) { + case EmitterNodeType::None: + break; + case EmitterNodeType::Property: + case EmitterNodeType::Scalar: + case EmitterNodeType::FlowSeq: + case EmitterNodeType::FlowMap: + SpaceOrIndentTo(m_pState->HasBegunContent() || m_pState->CurGroupChildCount() > 0, curIndent); + break; + case EmitterNodeType::BlockSeq: + case EmitterNodeType::BlockMap: + assert(false); + break; + } } void Emitter::BlockMapPrepareNode(EmitterNodeType::value child) diff --git a/src/emitterstate.cpp b/src/emitterstate.cpp index 14b2535..11c33c7 100644 --- a/src/emitterstate.cpp +++ b/src/emitterstate.cpp @@ -65,9 +65,17 @@ namespace YAML return; assert(m_groups.top().type == GroupType::Map); - assert(m_groups.top().flowType == FlowType::Block); m_groups.top().longKey = true; } + + void EmitterState::ForceFlow() + { + assert(!m_groups.empty()); + if(m_groups.empty()) + return; + + m_groups.top().flowType = FlowType::Flow; + } void EmitterState::StartedNode() { diff --git a/src/emitterstate.h b/src/emitterstate.h index d533dae..cf48ce0 100644 --- a/src/emitterstate.h +++ b/src/emitterstate.h @@ -38,6 +38,7 @@ namespace YAML void SetTag(); void SetNonContent(); void SetLongKey(); + void ForceFlow(); void StartedScalar(); void StartedGroup(GroupType::value type); void EndedGroup(GroupType::value type); From 676e0b94ac14ad7564f99ccfbfb383d0b5396cf9 Mon Sep 17 00:00:00 2001 From: Jesse Beder Date: Tue, 22 May 2012 16:39:03 -0500 Subject: [PATCH 37/65] Fixed flow seq/map indentation --- src/emitter.cpp | 9 +++------ test/emittertests.cpp | 2 +- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/src/emitter.cpp b/src/emitter.cpp index 9dfcb35..d0e3a53 100644 --- a/src/emitter.cpp +++ b/src/emitter.cpp @@ -339,7 +339,6 @@ namespace YAML void Emitter::FlowSeqPrepareNode(EmitterNodeType::value child) { - const unsigned curIndent = m_pState->CurIndent(); const unsigned lastIndent = m_pState->LastIndent(); if(!m_pState->HasBegunNode()) { @@ -359,7 +358,7 @@ namespace YAML case EmitterNodeType::Scalar: case EmitterNodeType::FlowSeq: case EmitterNodeType::FlowMap: - SpaceOrIndentTo(m_pState->HasBegunContent() || m_pState->CurGroupChildCount() > 0, curIndent); + SpaceOrIndentTo(m_pState->HasBegunContent() || m_pState->CurGroupChildCount() > 0, lastIndent); break; case EmitterNodeType::BlockSeq: case EmitterNodeType::BlockMap: @@ -431,7 +430,6 @@ namespace YAML void Emitter::FlowMapPrepareSimpleKey(EmitterNodeType::value child) { - const unsigned curIndent = m_pState->CurIndent(); const unsigned lastIndent = m_pState->LastIndent(); if(!m_pState->HasBegunNode()) { @@ -451,7 +449,7 @@ namespace YAML case EmitterNodeType::Scalar: case EmitterNodeType::FlowSeq: case EmitterNodeType::FlowMap: - SpaceOrIndentTo(m_pState->HasBegunContent() || m_pState->CurGroupChildCount() > 0, curIndent); + SpaceOrIndentTo(m_pState->HasBegunContent() || m_pState->CurGroupChildCount() > 0, lastIndent); break; case EmitterNodeType::BlockSeq: case EmitterNodeType::BlockMap: @@ -462,7 +460,6 @@ namespace YAML void Emitter::FlowMapPrepareSimpleKeyValue(EmitterNodeType::value child) { - const unsigned curIndent = m_pState->CurIndent(); const unsigned lastIndent = m_pState->LastIndent(); if(!m_pState->HasBegunNode()) { @@ -479,7 +476,7 @@ namespace YAML case EmitterNodeType::Scalar: case EmitterNodeType::FlowSeq: case EmitterNodeType::FlowMap: - SpaceOrIndentTo(m_pState->HasBegunContent() || m_pState->CurGroupChildCount() > 0, curIndent); + SpaceOrIndentTo(m_pState->HasBegunContent() || m_pState->CurGroupChildCount() > 0, lastIndent); break; case EmitterNodeType::BlockSeq: case EmitterNodeType::BlockMap: diff --git a/test/emittertests.cpp b/test/emittertests.cpp index 2c9b7a9..cadd1c7 100644 --- a/test/emittertests.cpp +++ b/test/emittertests.cpp @@ -205,7 +205,7 @@ namespace Test out << YAML::Value << "angel"; out << YAML::EndMap; - desiredOutput = "? - 1\n - 3\n: monster\n? [2, 0]\n: demon\nthe origin: angel"; + desiredOutput = "? - 1\n - 3\n: monster\n[2, 0]: demon\nthe origin: angel"; } void ScalarFormat(YAML::Emitter& out, std::string& desiredOutput) From f4278fe39f3418b1ca50e25d5d3fc4e19276e083 Mon Sep 17 00:00:00 2001 From: Jesse Beder Date: Tue, 22 May 2012 16:41:03 -0500 Subject: [PATCH 38/65] Added long key flow map --- src/emitter.cpp | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/src/emitter.cpp b/src/emitter.cpp index d0e3a53..66c3728 100644 --- a/src/emitter.cpp +++ b/src/emitter.cpp @@ -422,10 +422,59 @@ namespace YAML void Emitter::FlowMapPrepareLongKey(EmitterNodeType::value child) { + const unsigned lastIndent = m_pState->LastIndent(); + + if(!m_pState->HasBegunNode()) { + if(m_stream.comment()) + m_stream << "\n"; + m_stream << IndentTo(lastIndent); + if(m_pState->CurGroupChildCount() == 0) + m_stream << "{ ?"; + else + m_stream << ", ?"; + } + + switch(child) { + case EmitterNodeType::None: + break; + case EmitterNodeType::Property: + case EmitterNodeType::Scalar: + case EmitterNodeType::FlowSeq: + case EmitterNodeType::FlowMap: + SpaceOrIndentTo(m_pState->HasBegunContent() || m_pState->CurGroupChildCount() > 0, lastIndent); + break; + case EmitterNodeType::BlockSeq: + case EmitterNodeType::BlockMap: + assert(false); + break; + } } void Emitter::FlowMapPrepareLongKeyValue(EmitterNodeType::value child) { + const unsigned lastIndent = m_pState->LastIndent(); + + if(!m_pState->HasBegunNode()) { + if(m_stream.comment()) + m_stream << "\n"; + m_stream << IndentTo(lastIndent); + m_stream << ":"; + } + + switch(child) { + case EmitterNodeType::None: + break; + case EmitterNodeType::Property: + case EmitterNodeType::Scalar: + case EmitterNodeType::FlowSeq: + case EmitterNodeType::FlowMap: + SpaceOrIndentTo(m_pState->HasBegunContent() || m_pState->CurGroupChildCount() > 0, lastIndent); + break; + case EmitterNodeType::BlockSeq: + case EmitterNodeType::BlockMap: + assert(false); + break; + } } void Emitter::FlowMapPrepareSimpleKey(EmitterNodeType::value child) From b2f9a61c465f4d5be4e573a7ea00ebaa053879bd Mon Sep 17 00:00:00 2001 From: Jesse Beder Date: Tue, 22 May 2012 16:44:49 -0500 Subject: [PATCH 39/65] Fixed emitter tests with newlines --- test/emittertests.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/test/emittertests.cpp b/test/emittertests.cpp index cadd1c7..6e38b1c 100644 --- a/test/emittertests.cpp +++ b/test/emittertests.cpp @@ -540,7 +540,7 @@ namespace Test { out << YAML::Flow << YAML::BeginSeq << "foo" << YAML::Comment("foo!") << "bar" << YAML::EndSeq; - desiredOutput = "[foo # foo!\n, bar]"; + desiredOutput = "[foo, # foo!\nbar]"; } void CommentInFlowMap(YAML::Emitter& out, std::string& desiredOutput) @@ -551,7 +551,7 @@ namespace Test out << YAML::Key << "baz" << YAML::Value << "baz value" << YAML::Comment("baz!"); out << YAML::EndMap; - desiredOutput = "{foo: foo value, bar: bar value # bar!\n, baz: baz value # baz!\n}"; + desiredOutput = "{foo: foo value, bar: bar value, # bar!\nbaz: baz value # baz!\n}"; } void Indentation(YAML::Emitter& out, std::string& desiredOutput) @@ -721,7 +721,7 @@ namespace Test out << YAML::Flow << YAML::BeginSeq; out << "a" << YAML::Newline << "b" << "c" << YAML::Newline << "d"; out << YAML::EndSeq; - desiredOutput = "[a\n, b, c\n, d]"; + desiredOutput = "[a,\nb, c,\nd]"; } void NewlineInBlockMap(YAML::Emitter& out, std::string& desiredOutput) @@ -731,7 +731,7 @@ namespace Test out << YAML::Key << "b" << YAML::Newline << YAML::Value << "bar"; out << YAML::LongKey << YAML::Key << "c" << YAML::Newline << YAML::Value << "car"; out << YAML::EndMap; - desiredOutput = "a: foo\n\nb: bar\n? c\n\n: car"; + desiredOutput = "a: foo\nb:\n bar\n? c\n\n: car"; } void NewlineInFlowMap(YAML::Emitter& out, std::string& desiredOutput) @@ -740,7 +740,7 @@ namespace Test out << YAML::Key << "a" << YAML::Value << "foo" << YAML::Newline; out << YAML::Key << "b" << YAML::Value << "bar"; out << YAML::EndMap; - desiredOutput = "{a: foo\n, b: bar}"; + desiredOutput = "{a: foo,\nb: bar}"; } void LotsOfNewlines(YAML::Emitter& out, std::string& desiredOutput) @@ -756,7 +756,7 @@ namespace Test out << YAML::LongKey << YAML::Key << "f" << YAML::Newline << YAML::Value << "foo"; out << YAML::EndMap; out << YAML::EndSeq; - desiredOutput = "- a\n\n-\n - b\n - c\n\n\n-\n d: e\n ? f\n\n : foo"; + desiredOutput = "- a\n\n-\n - b\n - c\n\n\n-\n d:\n e\n ? f\n\n : foo"; } void Binary(YAML::Emitter& out, std::string& desiredOutput) From 611d243b84e45959bd7c5f581d56b680cdafa290 Mon Sep 17 00:00:00 2001 From: Jesse Beder Date: Tue, 22 May 2012 16:47:08 -0500 Subject: [PATCH 40/65] Fixed global setting indentation --- src/emitter.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/emitter.cpp b/src/emitter.cpp index 66c3728..ff97616 100644 --- a/src/emitter.cpp +++ b/src/emitter.cpp @@ -580,7 +580,7 @@ namespace YAML case EmitterNodeType::Scalar: case EmitterNodeType::FlowSeq: case EmitterNodeType::FlowMap: - SpaceOrIndentTo(true, curIndent); + SpaceOrIndentTo(true, curIndent + 1); break; case EmitterNodeType::BlockSeq: case EmitterNodeType::BlockMap: @@ -611,7 +611,7 @@ namespace YAML case EmitterNodeType::FlowMap: case EmitterNodeType::BlockSeq: case EmitterNodeType::BlockMap: - SpaceOrIndentTo(true, nextIndent); + SpaceOrIndentTo(true, curIndent + 1); break; } } From bc884061e2a1c113e57205d6c610681f3706823a Mon Sep 17 00:00:00 2001 From: Jesse Beder Date: Tue, 22 May 2012 16:49:09 -0500 Subject: [PATCH 41/65] Fixed some newline/comma tests --- test/emittertests.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/emittertests.cpp b/test/emittertests.cpp index 6e38b1c..b585287 100644 --- a/test/emittertests.cpp +++ b/test/emittertests.cpp @@ -551,7 +551,7 @@ namespace Test out << YAML::Key << "baz" << YAML::Value << "baz value" << YAML::Comment("baz!"); out << YAML::EndMap; - desiredOutput = "{foo: foo value, bar: bar value, # bar!\nbaz: baz value # baz!\n}"; + desiredOutput = "{foo: foo value, bar: bar value, # bar!\nbaz: baz value, # baz!\n}"; } void Indentation(YAML::Emitter& out, std::string& desiredOutput) @@ -598,7 +598,7 @@ namespace Test out << YAML::EndMap; out << YAML::EndSeq; - desiredOutput = "- key 1: value 1\n key 2: [a, b, c]\n- ? [1, 2]\n :\n a: b"; + desiredOutput = "- key 1: value 1\n key 2: [a, b, c]\n- [1, 2]:\n a: b"; } void Null(YAML::Emitter& out, std::string& desiredOutput) From 2c2b788391c3215c95483d0593ddc7f58f3508e6 Mon Sep 17 00:00:00 2001 From: Jesse Beder Date: Tue, 22 May 2012 16:53:40 -0500 Subject: [PATCH 42/65] Fixed doc start/end --- src/emitter.cpp | 4 +++- src/emitterstate.cpp | 14 ++++++++++++++ src/emitterstate.h | 2 ++ 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/emitter.cpp b/src/emitter.cpp index ff97616..c89ed65 100644 --- a/src/emitter.cpp +++ b/src/emitter.cpp @@ -181,6 +181,8 @@ namespace YAML if(m_stream.col() > 0) m_stream << "\n"; m_stream << "---\n"; + + m_pState->StartedDoc(); } // EmitEndDoc @@ -313,7 +315,7 @@ namespace YAML void Emitter::PrepareTopNode(EmitterNodeType::value child) { - if(m_pState->CurGroupChildCount() > 0 && m_stream.pos() > 0) { + if(m_pState->CurGroupChildCount() > 0 && m_stream.col() > 0) { if(child != EmitterNodeType::None) EmitBeginDoc(); } diff --git a/src/emitterstate.cpp b/src/emitterstate.cpp index 11c33c7..9642179 100644 --- a/src/emitterstate.cpp +++ b/src/emitterstate.cpp @@ -111,6 +111,20 @@ namespace YAML return EmitterNodeType::None; } + void EmitterState::StartedDoc() + { + m_hasAnchor = false; + m_hasTag = false; + m_hasNonContent = false; + } + + void EmitterState::EndedDoc() + { + m_hasAnchor = false; + m_hasTag = false; + m_hasNonContent = false; + } + void EmitterState::StartedScalar() { StartedNode(); diff --git a/src/emitterstate.h b/src/emitterstate.h index cf48ce0..f43f471 100644 --- a/src/emitterstate.h +++ b/src/emitterstate.h @@ -39,6 +39,8 @@ namespace YAML void SetNonContent(); void SetLongKey(); void ForceFlow(); + void StartedDoc(); + void EndedDoc(); void StartedScalar(); void StartedGroup(GroupType::value type); void EndedGroup(GroupType::value type); From 41235831591d9779c333869b640202880e6dc576 Mon Sep 17 00:00:00 2001 From: Jesse Beder Date: Tue, 22 May 2012 16:56:10 -0500 Subject: [PATCH 43/65] Fixed end seq/map error msg --- src/emitterstate.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/emitterstate.cpp b/src/emitterstate.cpp index 9642179..4e1ae64 100644 --- a/src/emitterstate.cpp +++ b/src/emitterstate.cpp @@ -155,8 +155,12 @@ namespace YAML void EmitterState::EndedGroup(GroupType::value type) { - if(m_groups.empty()) - return SetError(ErrorMsg::UNMATCHED_GROUP_TAG); + if(m_groups.empty()) { + if(type == GroupType::Seq) + return SetError(ErrorMsg::UNEXPECTED_END_SEQ); + else + return SetError(ErrorMsg::UNEXPECTED_END_MAP); + } // get rid of the current group { From a6fe313d32a3fa4e0074f1b179d7a037c10099b8 Mon Sep 17 00:00:00 2001 From: Jesse Beder Date: Tue, 22 May 2012 16:57:30 -0500 Subject: [PATCH 44/65] Removed key/value error checks (since we don't require asking them) --- include/yaml-cpp/exceptions.h | 4 ---- test/emittertests.cpp | 41 ----------------------------------- 2 files changed, 45 deletions(-) diff --git a/include/yaml-cpp/exceptions.h b/include/yaml-cpp/exceptions.h index 9e19637..00848f4 100644 --- a/include/yaml-cpp/exceptions.h +++ b/include/yaml-cpp/exceptions.h @@ -62,10 +62,6 @@ namespace YAML const char * const INVALID_ANCHOR = "invalid anchor"; const char * const INVALID_ALIAS = "invalid alias"; const char * const INVALID_TAG = "invalid tag"; - const char * const EXPECTED_KEY_TOKEN = "expected key token"; - const char * const EXPECTED_VALUE_TOKEN = "expected value token"; - const char * const UNEXPECTED_KEY_TOKEN = "unexpected key token"; - const char * const UNEXPECTED_VALUE_TOKEN = "unexpected value token"; } class Exception: public std::runtime_error { diff --git a/test/emittertests.cpp b/test/emittertests.cpp index b585287..123b9d1 100644 --- a/test/emittertests.cpp +++ b/test/emittertests.cpp @@ -986,43 +986,6 @@ namespace Test out << YAML::Alias("new\nline"); out << YAML::EndSeq; } - - void MissingKey(YAML::Emitter& out, std::string& desiredError) - { - desiredError = YAML::ErrorMsg::EXPECTED_KEY_TOKEN; - - out << YAML::BeginMap; - out << YAML::Key << "key" << YAML::Value << "value"; - out << "missing key" << YAML::Value << "value"; - out << YAML::EndMap; - } - - void MissingValue(YAML::Emitter& out, std::string& desiredError) - { - desiredError = YAML::ErrorMsg::EXPECTED_VALUE_TOKEN; - - out << YAML::BeginMap; - out << YAML::Key << "key" << "value"; - out << YAML::EndMap; - } - - void UnexpectedKey(YAML::Emitter& out, std::string& desiredError) - { - desiredError = YAML::ErrorMsg::UNEXPECTED_KEY_TOKEN; - - out << YAML::BeginSeq; - out << YAML::Key << "hi"; - out << YAML::EndSeq; - } - - void UnexpectedValue(YAML::Emitter& out, std::string& desiredError) - { - desiredError = YAML::ErrorMsg::UNEXPECTED_VALUE_TOKEN; - - out << YAML::BeginSeq; - out << YAML::Value << "hi"; - out << YAML::EndSeq; - } } namespace { @@ -1178,10 +1141,6 @@ namespace Test RunEmitterErrorTest(&Emitter::BadSingleQuoted, "bad single quoted string", passed, total); RunEmitterErrorTest(&Emitter::InvalidAnchor, "invalid anchor", passed, total); RunEmitterErrorTest(&Emitter::InvalidAlias, "invalid alias", passed, total); - RunEmitterErrorTest(&Emitter::MissingKey, "missing key", passed, total); - RunEmitterErrorTest(&Emitter::MissingValue, "missing value", passed, total); - RunEmitterErrorTest(&Emitter::UnexpectedKey, "unexpected key", passed, total); - RunEmitterErrorTest(&Emitter::UnexpectedValue, "unexpected value", passed, total); RunEmitterErrorTest(&Emitter::BadLocalTag, "bad local tag", passed, total); std::cout << "Emitter tests: " << passed << "/" << total << " passed\n"; From ad275901b2eef5933c0d32aa2851eca241d41906 Mon Sep 17 00:00:00 2001 From: Jesse Beder Date: Tue, 22 May 2012 16:59:39 -0500 Subject: [PATCH 45/65] Switched single quoted test to positive test (since we just convert to double quoted) --- test/emittertests.cpp | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/test/emittertests.cpp b/test/emittertests.cpp index 123b9d1..9920496 100644 --- a/test/emittertests.cpp +++ b/test/emittertests.cpp @@ -938,7 +938,14 @@ namespace Test " intelligence: 56"; } - //////////////////////////////////////////////////////////////////////////////////////////////////////// + void ForceSingleQuotedToDouble(YAML::Emitter& out, std::string& desiredOutput) + { + out << YAML::SingleQuoted << "Hello\nWorld"; + + desiredOutput = "Hello\\nWorld"; + } + + //////////////////////////////////////////////////////////////////////////////// // incorrect emitting void ExtraEndSeq(YAML::Emitter& out, std::string& desiredError) @@ -962,13 +969,6 @@ namespace Test out << YAML::EndMap; } - void BadSingleQuoted(YAML::Emitter& out, std::string& desiredError) - { - desiredError = YAML::ErrorMsg::SINGLE_QUOTED_CHAR; - - out << YAML::SingleQuoted << "Hello\nWorld"; - } - void InvalidAnchor(YAML::Emitter& out, std::string& desiredError) { desiredError = YAML::ErrorMsg::INVALID_ANCHOR; @@ -1135,10 +1135,10 @@ namespace Test RunEmitterTest(&Emitter::DashInBlockContext, "dash in block context", passed, total); RunEmitterTest(&Emitter::HexAndOct, "hex and oct", passed, total); RunEmitterTest(&Emitter::CompactMapWithNewline, "compact map with newline", passed, total); + RunEmitterTest(&Emitter::ForceSingleQuotedToDouble, "force single quoted to double", passed, total); RunEmitterErrorTest(&Emitter::ExtraEndSeq, "extra EndSeq", passed, total); RunEmitterErrorTest(&Emitter::ExtraEndMap, "extra EndMap", passed, total); - RunEmitterErrorTest(&Emitter::BadSingleQuoted, "bad single quoted string", passed, total); RunEmitterErrorTest(&Emitter::InvalidAnchor, "invalid anchor", passed, total); RunEmitterErrorTest(&Emitter::InvalidAlias, "invalid alias", passed, total); RunEmitterErrorTest(&Emitter::BadLocalTag, "bad local tag", passed, total); From c664d50d5c0ec5c483bf89d4a8236dc919c9609f Mon Sep 17 00:00:00 2001 From: Jesse Beder Date: Tue, 22 May 2012 17:45:31 -0500 Subject: [PATCH 46/65] Fixed double quote escapes (e.g., \n is now that instead of \x0a) --- src/emitterutils.cpp | 29 +++++++++++++++++------------ test/emittertests.cpp | 4 ++-- util/sandbox.cpp | 5 +---- 3 files changed, 20 insertions(+), 18 deletions(-) diff --git a/src/emitterutils.cpp b/src/emitterutils.cpp index f17e350..5dfaec9 100644 --- a/src/emitterutils.cpp +++ b/src/emitterutils.cpp @@ -275,18 +275,23 @@ namespace YAML GetNextCodePointAndAdvance(codePoint, i, str.end()); ) { - if (codePoint == '\"') - out << "\\\""; - else if (codePoint == '\\') - out << "\\\\"; - else if (codePoint < 0x20 || (codePoint >= 0x80 && codePoint <= 0xA0)) // Control characters and non-breaking space - WriteDoubleQuoteEscapeSequence(out, codePoint); - else if (codePoint == 0xFEFF) // Byte order marks (ZWNS) should be escaped (YAML 1.2, sec. 5.2) - WriteDoubleQuoteEscapeSequence(out, codePoint); - else if (escapeNonAscii && codePoint > 0x7E) - WriteDoubleQuoteEscapeSequence(out, codePoint); - else - WriteCodePoint(out, codePoint); + switch(codePoint) { + case '\"': out << "\\\""; break; + case '\\': out << "\\\\"; break; + case '\n': out << "\\n"; break; + case '\t': out << "\\t"; break; + case '\r': out << "\\r"; break; + case '\b': out << "\\b"; break; + default: + if(codePoint < 0x20 || (codePoint >= 0x80 && codePoint <= 0xA0)) // Control characters and non-breaking space + WriteDoubleQuoteEscapeSequence(out, codePoint); + else if (codePoint == 0xFEFF) // Byte order marks (ZWNS) should be escaped (YAML 1.2, sec. 5.2) + WriteDoubleQuoteEscapeSequence(out, codePoint); + else if (escapeNonAscii && codePoint > 0x7E) + WriteDoubleQuoteEscapeSequence(out, codePoint); + else + WriteCodePoint(out, codePoint); + } } out << "\""; return true; diff --git a/test/emittertests.cpp b/test/emittertests.cpp index 9920496..3c438f6 100644 --- a/test/emittertests.cpp +++ b/test/emittertests.cpp @@ -219,7 +219,7 @@ namespace Test out << YAML::Literal << "literal scalar\nthat may span\nmany, many\nlines and have \"whatever\" crazy\tsymbols that we like"; out << YAML::EndSeq; - desiredOutput = "- simple scalar\n- 'explicit single-quoted scalar'\n- \"explicit double-quoted scalar\"\n- \"auto-detected\\x0adouble-quoted scalar\"\n- a non-\"auto-detected\" double-quoted scalar\n- |\n literal scalar\n that may span\n many, many\n lines and have \"whatever\" crazy\tsymbols that we like"; + desiredOutput = "- simple scalar\n- 'explicit single-quoted scalar'\n- \"explicit double-quoted scalar\"\n- \"auto-detected\\ndouble-quoted scalar\"\n- a non-\"auto-detected\" double-quoted scalar\n- |\n literal scalar\n that may span\n many, many\n lines and have \"whatever\" crazy\tsymbols that we like"; } void AutoLongKeyScalar(YAML::Emitter& out, std::string& desiredOutput) @@ -942,7 +942,7 @@ namespace Test { out << YAML::SingleQuoted << "Hello\nWorld"; - desiredOutput = "Hello\\nWorld"; + desiredOutput = "\"Hello\\nWorld\""; } //////////////////////////////////////////////////////////////////////////////// diff --git a/util/sandbox.cpp b/util/sandbox.cpp index 83956d2..854e26d 100644 --- a/util/sandbox.cpp +++ b/util/sandbox.cpp @@ -4,10 +4,7 @@ int main() { YAML::Emitter out; - out << YAML::Flow; - out << YAML::BeginSeq; - out << "a" << "b"; - out << YAML::EndSeq; + out << YAML::DoubleQuoted << "Hello, World!\n"; std::cout << out.c_str() << "\n"; return 0; From 0abbf650b57b031b51948f788890ea1a1e3366e2 Mon Sep 17 00:00:00 2001 From: Jesse Beder Date: Tue, 22 May 2012 17:50:10 -0500 Subject: [PATCH 47/65] Fixed char output --- src/emitter.cpp | 2 +- util/sandbox.cpp | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/emitter.cpp b/src/emitter.cpp index c89ed65..5e43938 100644 --- a/src/emitter.cpp +++ b/src/emitter.cpp @@ -813,7 +813,7 @@ namespace YAML return *this; PrepareNode(EmitterNodeType::Scalar); - m_stream << ch; + Utils::WriteChar(m_stream, ch); StartedScalar(); return *this; diff --git a/util/sandbox.cpp b/util/sandbox.cpp index 854e26d..be24ae1 100644 --- a/util/sandbox.cpp +++ b/util/sandbox.cpp @@ -4,7 +4,9 @@ int main() { YAML::Emitter out; - out << YAML::DoubleQuoted << "Hello, World!\n"; + out << YAML::BeginSeq; + out << ':'; + out << YAML::EndSeq; std::cout << out.c_str() << "\n"; return 0; From 8b3778a639f5fe8ed3cd8488f619bb072ad6e892 Mon Sep 17 00:00:00 2001 From: Jesse Beder Date: Tue, 22 May 2012 17:50:40 -0500 Subject: [PATCH 48/65] Fixed warnings --- src/emitter.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/emitter.cpp b/src/emitter.cpp index 5e43938..2e84684 100644 --- a/src/emitter.cpp +++ b/src/emitter.cpp @@ -593,7 +593,6 @@ namespace YAML void Emitter::BlockMapPrepareLongKeyValue(EmitterNodeType::value child) { const unsigned curIndent = m_pState->CurIndent(); - const unsigned nextIndent = curIndent + m_pState->CurGroupIndent(); if(child == EmitterNodeType::None) return; From abd49d8bca22bcea095a8d491938edeb39dde7f8 Mon Sep 17 00:00:00 2001 From: Jesse Beder Date: Tue, 22 May 2012 17:55:17 -0500 Subject: [PATCH 49/65] Added null --- src/emitter.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/emitter.cpp b/src/emitter.cpp index 2e84684..bd3cfe7 100644 --- a/src/emitter.cpp +++ b/src/emitter.cpp @@ -918,7 +918,10 @@ namespace YAML if(!good()) return *this; - // TODO + PrepareNode(EmitterNodeType::Scalar); + + m_stream << "~"; + StartedScalar(); return *this; From 8aabc0766b694188551626389a0afdd90de9b1da Mon Sep 17 00:00:00 2001 From: Jesse Beder Date: Tue, 22 May 2012 17:56:07 -0500 Subject: [PATCH 50/65] Fixed indentation test - all emitter tests now pass --- test/emittertests.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/emittertests.cpp b/test/emittertests.cpp index 3c438f6..af819b5 100644 --- a/test/emittertests.cpp +++ b/test/emittertests.cpp @@ -564,7 +564,7 @@ namespace Test out << YAML::EndMap; out << YAML::EndSeq; - desiredOutput = "- key 1: value 1\n key 2:\n - a\n - b\n - c"; + desiredOutput = "- key 1: value 1\n key 2:\n - a\n - b\n - c"; } void SimpleGlobalSettings(YAML::Emitter& out, std::string& desiredOutput) From 7d7075fdf92a47b84aa348aff5ca7fca9f165e83 Mon Sep 17 00:00:00 2001 From: Jesse Beder Date: Tue, 22 May 2012 18:01:48 -0500 Subject: [PATCH 51/65] Set indentation to be at least 2 --- src/emitterstate.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/emitterstate.cpp b/src/emitterstate.cpp index 4e1ae64..08d2c15 100644 --- a/src/emitterstate.cpp +++ b/src/emitterstate.cpp @@ -306,7 +306,7 @@ namespace YAML bool EmitterState::SetIndent(unsigned value, FmtScope::value scope) { - if(value == 0) + if(value <= 1) return false; _Set(m_indent, value, scope); From 8d529cbcf2633e70a3c47b140237a485c4cf5d97 Mon Sep 17 00:00:00 2001 From: Jesse Beder Date: Tue, 22 May 2012 19:31:23 -0500 Subject: [PATCH 52/65] Started emitting test generator --- test/create-emitter-tests.py | 44 ++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 test/create-emitter-tests.py diff --git a/test/create-emitter-tests.py b/test/create-emitter-tests.py new file mode 100644 index 0000000..4bc622e --- /dev/null +++ b/test/create-emitter-tests.py @@ -0,0 +1,44 @@ +import sys +import yaml +import hashlib + +NS = 'Emitter' +EVENT_COUNT = 5 + +EVENTS = [ + {'emit': 'YAML::DocStart', 'handle': 'DOC_START()'}, + {'emit': 'YAML::DocEnd', 'handle': 'DOC_END()'}, +] + +def gen_events(): + pass + +def gen_tests(): + for events in gen_events(): + name = 'test' + hashlib.sha1(''.join(yaml.dump(event) for event in events)).hexdigest()[:20] + yield {'name': name, 'events': events} + + +def create_emitter_tests(out): + out.write('namespace %s {\n' % NS) + + for test in gen_tests(): + out.write('TEST %s(YAML::Emitter& out)\n' % test['name']) + out.write('{\n') + for event in test['events']: + emit = event['emit'] + if emit: + out.write(' out << %s;\n' % emit) + out.write('\n') + out.write(' HANDLE(out.c_str());\n') + for event in test['events']: + handle = event['handle'] + if handle: + out.write(' EXPECT_%s;\n' % handle) + out.write(' DONE();\n') + out.write('}\n') + + out.write('}\n') + +if __name__ == '__main__': + create_emitter_tests(sys.stdout) From 115101d25d39ca848010f7ab6fd520751e8679ec Mon Sep 17 00:00:00 2001 From: Jesse Beder Date: Tue, 22 May 2012 21:59:12 -0500 Subject: [PATCH 53/65] Updated emitter test script, and moved handler macros to own include file --- test/core/spectests.cpp | 204 +-------------------------------- test/create-emitter-tests.py | 56 ++++++++-- test/handlermacros.h | 211 +++++++++++++++++++++++++++++++++++ 3 files changed, 261 insertions(+), 210 deletions(-) create mode 100644 test/handlermacros.h diff --git a/test/core/spectests.cpp b/test/core/spectests.cpp index b707a21..9d13465 100644 --- a/test/core/spectests.cpp +++ b/test/core/spectests.cpp @@ -1,212 +1,10 @@ #include "spectests.h" +#include "handlermacros.h" #include "specexamples.h" #include "yaml-cpp/yaml.h" -#include "yaml-cpp/eventhandler.h" #include -#define YAML_ASSERT(cond) do { if(!(cond)) return " Assert failed: " #cond; } while(false) - namespace Test { - std::string Quote(const std::string& text) { - YAML::Emitter out; - out << YAML::DoubleQuoted << text; - return out.c_str(); - } - - struct Event { - enum Type { DocStart, DocEnd, Null, Alias, Scalar, SeqStart, SeqEnd, MapStart, MapEnd }; - - typedef YAML::Mark Mark; - typedef YAML::anchor_t anchor_t; - - Event(Type type_, const std::string& tag_, anchor_t anchor_, const std::string& scalar_): type(type_), tag(tag_), anchor(anchor_), scalar(scalar_) {} - - Type type; - std::string tag; - anchor_t anchor; - std::string scalar; - - std::ostream& write(std::ostream& out) const { - switch(type) { - case DocStart: - return out << "DocStart"; - case DocEnd: - return out << "DocEnd"; - case Null: - return out << "Null(" << anchor << ")"; - case Alias: - return out << "Alias(" << anchor << ")"; - case Scalar: - return out << "Scalar(" << Quote(tag) << ", " << anchor << ", " << Quote(scalar) << ")"; - case SeqStart: - return out << "SeqStart(" << Quote(tag) << ", " << anchor << ")"; - case SeqEnd: - return out << "SeqEnd"; - case MapStart: - return out << "MapStart(" << Quote(tag) << ", " << anchor << ")"; - case MapEnd: - return out << "MapEnd"; - } - assert(false); - return out; - } - }; - - std::ostream& operator << (std::ostream& out, const Event& event) { - return event.write(out); - } - - bool operator == (const Event& a, const Event& b) { - return a.type == b.type && a.tag == b.tag && a.anchor == b.anchor && a.scalar == b.scalar; - } - - bool operator != (const Event& a, const Event& b) { - return !(a == b); - } - - class MockEventHandler: public YAML::EventHandler - { - public: - typedef YAML::Mark Mark; - typedef YAML::anchor_t anchor_t; - - MockEventHandler() {} - - virtual void OnDocumentStart(const Mark&) { - m_actualEvents.push_back(Event(Event::DocStart, "", 0, "")); - } - - virtual void OnDocumentEnd() { - m_actualEvents.push_back(Event(Event::DocEnd, "", 0, "")); - } - - virtual void OnNull(const Mark&, anchor_t anchor) { - m_actualEvents.push_back(Event(Event::Null, "", anchor, "")); - } - - virtual void OnAlias(const Mark&, anchor_t anchor) { - m_actualEvents.push_back(Event(Event::Alias, "", anchor, "")); - } - - virtual void OnScalar(const Mark&, const std::string& tag, anchor_t anchor, const std::string& value) { - m_actualEvents.push_back(Event(Event::Scalar, tag, anchor, value)); - } - - virtual void OnSequenceStart(const Mark&, const std::string& tag, anchor_t anchor) { - m_actualEvents.push_back(Event(Event::SeqStart, tag, anchor, "")); - } - - virtual void OnSequenceEnd() { - m_actualEvents.push_back(Event(Event::SeqEnd, "", 0, "")); - } - - virtual void OnMapStart(const Mark&, const std::string& tag, anchor_t anchor) { - m_actualEvents.push_back(Event(Event::MapStart, tag, anchor, "")); - } - - virtual void OnMapEnd() { - m_actualEvents.push_back(Event(Event::MapEnd, "", 0, "")); - } - - void Expect(const Event& event) { m_expectedEvents.push_back(event); } - - Test::TEST Check() const { - std::size_t N = std::max(m_expectedEvents.size(), m_actualEvents.size()); - for(std::size_t i=0;i= m_expectedEvents.size()) { - std::stringstream out; - for(std::size_t j=0;j= m_actualEvents.size()) { - std::stringstream out; - for(std::size_t j=0;j m_expectedEvents; - std::vector m_actualEvents; - }; - -#define HANDLE(ex)\ - MockEventHandler handler;\ - std::stringstream stream(ex);\ - YAML::Parser parser(stream);\ - while(parser.HandleNextDocument(handler))\ - -#define EXPECT_DOC_START()\ - do {\ - handler.Expect(Event(Event::DocStart, "", 0, ""));\ - } while(false) - -#define EXPECT_DOC_END()\ - do {\ - handler.Expect(Event(Event::DocEnd, "", 0, ""));\ - } while(false) - -#define EXPECT_NULL(anchor)\ - do {\ - handler.Expect(Event(Event::Null, "", anchor, ""));\ - } while(false) - -#define EXPECT_ALIAS(anchor)\ - do {\ - handler.Expect(Event(Event::Alias, "", anchor, ""));\ - } while(false) - -#define EXPECT_SCALAR(tag, anchor, value)\ - do {\ - handler.Expect(Event(Event::Scalar, tag, anchor, value));\ - } while(false) - -#define EXPECT_SEQ_START(tag, anchor)\ - do {\ - handler.Expect(Event(Event::SeqStart, tag, anchor, ""));\ - } while(false) - -#define EXPECT_SEQ_END()\ - do {\ - handler.Expect(Event(Event::SeqEnd, "", 0, ""));\ - } while(false) - -#define EXPECT_MAP_START(tag, anchor)\ - do {\ - handler.Expect(Event(Event::MapStart, tag, anchor, ""));\ - } while(false) - -#define EXPECT_MAP_END()\ - do {\ - handler.Expect(Event(Event::MapEnd, "", 0, ""));\ - } while(false) - -#define DONE()\ - do {\ - return handler.Check();\ - } while(false) - namespace Spec { // 2.1 TEST SeqScalars() diff --git a/test/create-emitter-tests.py b/test/create-emitter-tests.py index 4bc622e..6bc0096 100644 --- a/test/create-emitter-tests.py +++ b/test/create-emitter-tests.py @@ -5,13 +5,52 @@ import hashlib NS = 'Emitter' EVENT_COUNT = 5 -EVENTS = [ - {'emit': 'YAML::DocStart', 'handle': 'DOC_START()'}, - {'emit': 'YAML::DocEnd', 'handle': 'DOC_END()'}, -] +def encode_stream(line): + for c in line: + if c == '\n': + yield '\\n' + elif c == '"': + yield '\\"' + elif c == '\t': + yield '\\t' + elif ord(c) < 0x20: + yield '\\x' + hex(ord(c)) + else: + yield c + +def encode(line): + return ''.join(encode_stream(line)) + +def doc_start(implicit=False): + if implicit: + return {'emit': '', 'handle': 'DOC_START()'} + else: + return {'emit': 'YAML::DocStart', 'handle': 'DOC_START()'} + +def doc_end(implicit=False): + if implicit: + return {'emit': '', 'handle': 'DOC_END()'} + else: + return {'emit': 'YAML::DocEnd', 'handle': 'DOC_END()'} + +def scalar(value, tag='', anchor='', anchor_id=0): + emit = [] + if tag: + emit += ['YAML::VerbatimTag("%s")' % encode(tag)] + if anchor: + emit += ['YAML::Anchor("%s")' % encode(anchor)] + emit += ['"%s"' % encode(value)] + return {'emit': emit, 'handle': 'SCALAR("%s", %s, "%s")' % (encode(tag), anchor_id, encode(value))} + +def gen_outlines(): + yield [doc_start(), scalar('foo\n'), doc_end()] + yield [doc_start(True), scalar('foo\n'), doc_end()] + yield [doc_start(), scalar('foo\n'), doc_end(True)] + yield [doc_start(True), scalar('foo\n'), doc_end(True)] def gen_events(): - pass + for events in gen_outlines(): + yield events def gen_tests(): for events in gen_events(): @@ -23,11 +62,14 @@ def create_emitter_tests(out): out.write('namespace %s {\n' % NS) for test in gen_tests(): - out.write('TEST %s(YAML::Emitter& out)\n' % test['name']) + out.write('inline TEST %s(YAML::Emitter& out)\n' % test['name']) out.write('{\n') for event in test['events']: emit = event['emit'] - if emit: + if isinstance(emit, list): + for e in emit: + out.write(' out << %s;\n' % e) + elif emit: out.write(' out << %s;\n' % emit) out.write('\n') out.write(' HANDLE(out.c_str());\n') diff --git a/test/handlermacros.h b/test/handlermacros.h new file mode 100644 index 0000000..c36d502 --- /dev/null +++ b/test/handlermacros.h @@ -0,0 +1,211 @@ +#pragma once + +#include "yaml-cpp/yaml.h" +#include "yaml-cpp/eventhandler.h" +#include +#include + +#define YAML_ASSERT(cond) do { if(!(cond)) return " Assert failed: " #cond; } while(false) + +namespace Test { + std::string Quote(const std::string& text) { + YAML::Emitter out; + out << YAML::DoubleQuoted << text; + return out.c_str(); + } + + struct Event { + enum Type { DocStart, DocEnd, Null, Alias, Scalar, SeqStart, SeqEnd, MapStart, MapEnd }; + + typedef YAML::Mark Mark; + typedef YAML::anchor_t anchor_t; + + Event(Type type_, const std::string& tag_, anchor_t anchor_, const std::string& scalar_): type(type_), tag(tag_), anchor(anchor_), scalar(scalar_) {} + + Type type; + std::string tag; + anchor_t anchor; + std::string scalar; + + std::ostream& write(std::ostream& out) const { + switch(type) { + case DocStart: + return out << "DocStart"; + case DocEnd: + return out << "DocEnd"; + case Null: + return out << "Null(" << anchor << ")"; + case Alias: + return out << "Alias(" << anchor << ")"; + case Scalar: + return out << "Scalar(" << Quote(tag) << ", " << anchor << ", " << Quote(scalar) << ")"; + case SeqStart: + return out << "SeqStart(" << Quote(tag) << ", " << anchor << ")"; + case SeqEnd: + return out << "SeqEnd"; + case MapStart: + return out << "MapStart(" << Quote(tag) << ", " << anchor << ")"; + case MapEnd: + return out << "MapEnd"; + } + assert(false); + return out; + } + }; + + std::ostream& operator << (std::ostream& out, const Event& event) { + return event.write(out); + } + + bool operator == (const Event& a, const Event& b) { + return a.type == b.type && a.tag == b.tag && a.anchor == b.anchor && a.scalar == b.scalar; + } + + bool operator != (const Event& a, const Event& b) { + return !(a == b); + } + + class MockEventHandler: public YAML::EventHandler + { + public: + typedef YAML::Mark Mark; + typedef YAML::anchor_t anchor_t; + + MockEventHandler() {} + + virtual void OnDocumentStart(const Mark&) { + m_actualEvents.push_back(Event(Event::DocStart, "", 0, "")); + } + + virtual void OnDocumentEnd() { + m_actualEvents.push_back(Event(Event::DocEnd, "", 0, "")); + } + + virtual void OnNull(const Mark&, anchor_t anchor) { + m_actualEvents.push_back(Event(Event::Null, "", anchor, "")); + } + + virtual void OnAlias(const Mark&, anchor_t anchor) { + m_actualEvents.push_back(Event(Event::Alias, "", anchor, "")); + } + + virtual void OnScalar(const Mark&, const std::string& tag, anchor_t anchor, const std::string& value) { + m_actualEvents.push_back(Event(Event::Scalar, tag, anchor, value)); + } + + virtual void OnSequenceStart(const Mark&, const std::string& tag, anchor_t anchor) { + m_actualEvents.push_back(Event(Event::SeqStart, tag, anchor, "")); + } + + virtual void OnSequenceEnd() { + m_actualEvents.push_back(Event(Event::SeqEnd, "", 0, "")); + } + + virtual void OnMapStart(const Mark&, const std::string& tag, anchor_t anchor) { + m_actualEvents.push_back(Event(Event::MapStart, tag, anchor, "")); + } + + virtual void OnMapEnd() { + m_actualEvents.push_back(Event(Event::MapEnd, "", 0, "")); + } + + void Expect(const Event& event) { m_expectedEvents.push_back(event); } + + Test::TEST Check() const { + std::size_t N = std::max(m_expectedEvents.size(), m_actualEvents.size()); + for(std::size_t i=0;i= m_expectedEvents.size()) { + std::stringstream out; + for(std::size_t j=0;j= m_actualEvents.size()) { + std::stringstream out; + for(std::size_t j=0;j m_expectedEvents; + std::vector m_actualEvents; + }; + +#define HANDLE(ex)\ +MockEventHandler handler;\ +std::stringstream stream(ex);\ +YAML::Parser parser(stream);\ +while(parser.HandleNextDocument(handler))\ + +#define EXPECT_DOC_START()\ +do {\ +handler.Expect(Event(Event::DocStart, "", 0, ""));\ +} while(false) + +#define EXPECT_DOC_END()\ +do {\ +handler.Expect(Event(Event::DocEnd, "", 0, ""));\ +} while(false) + +#define EXPECT_NULL(anchor)\ +do {\ +handler.Expect(Event(Event::Null, "", anchor, ""));\ +} while(false) + +#define EXPECT_ALIAS(anchor)\ +do {\ +handler.Expect(Event(Event::Alias, "", anchor, ""));\ +} while(false) + +#define EXPECT_SCALAR(tag, anchor, value)\ +do {\ +handler.Expect(Event(Event::Scalar, tag, anchor, value));\ +} while(false) + +#define EXPECT_SEQ_START(tag, anchor)\ +do {\ +handler.Expect(Event(Event::SeqStart, tag, anchor, ""));\ +} while(false) + +#define EXPECT_SEQ_END()\ +do {\ +handler.Expect(Event(Event::SeqEnd, "", 0, ""));\ +} while(false) + +#define EXPECT_MAP_START(tag, anchor)\ +do {\ +handler.Expect(Event(Event::MapStart, tag, anchor, ""));\ +} while(false) + +#define EXPECT_MAP_END()\ +do {\ +handler.Expect(Event(Event::MapEnd, "", 0, ""));\ +} while(false) + +#define DONE()\ +do {\ +return handler.Check();\ +} while(false) + +} From 0fb59c18dd2fc4090c6b3c7510f0fb29489efaa3 Mon Sep 17 00:00:00 2001 From: Jesse Beder Date: Tue, 22 May 2012 22:10:47 -0500 Subject: [PATCH 54/65] Split test struct and handler macros out for the emitter/spec tests --- test/create-emitter-tests.py | 12 ++++++++++-- test/emittertests.cpp | 33 +++++++++++++++++++++++++++++++++ test/handlermacros.h | 3 +-- test/spectests.h | 11 +---------- test/teststruct.h | 18 ++++++++++++++++++ 5 files changed, 63 insertions(+), 14 deletions(-) create mode 100644 test/teststruct.h diff --git a/test/create-emitter-tests.py b/test/create-emitter-tests.py index 6bc0096..237d013 100644 --- a/test/create-emitter-tests.py +++ b/test/create-emitter-tests.py @@ -61,8 +61,10 @@ def gen_tests(): def create_emitter_tests(out): out.write('namespace %s {\n' % NS) - for test in gen_tests(): - out.write('inline TEST %s(YAML::Emitter& out)\n' % test['name']) + tests = list(gen_tests()) + + for test in tests: + out.write('TEST %s(YAML::Emitter& out)\n' % test['name']) out.write('{\n') for event in test['events']: emit = event['emit'] @@ -82,5 +84,11 @@ def create_emitter_tests(out): out.write('}\n') + out.write('void RunGenEmitterTests(int& passed, int& total)\n') + out.write('{\n') + for test in tests: + out.write(' RunGenEmitterTest(&Emitter::%s, %s, passed, total);\n' % (test['name'], encode(test['name']))) + out.write('}\n') + if __name__ == '__main__': create_emitter_tests(sys.stdout) diff --git a/test/emittertests.cpp b/test/emittertests.cpp index af819b5..690de05 100644 --- a/test/emittertests.cpp +++ b/test/emittertests.cpp @@ -1,4 +1,5 @@ #include "tests.h" +#include "handlermacros.h" #include "yaml-cpp/yaml.h" #include "yaml-cpp/eventhandler.h" #include @@ -1051,7 +1052,37 @@ namespace Test } total++; } + + void RunGenEmitterTest(TEST (*test)(YAML::Emitter&), const std::string& name, int& passed, int& total) { + YAML::Emitter out; + TEST ret; + + try { + ret = test(out); + } catch(const YAML::Exception& e) { + ret.ok = false; + ret.error = std::string(" Exception caught: ") + e.what(); + } + + if(!out.good()) { + ret.ok = false; + ret.error = out.GetLastError(); + } + + if(!ret.ok) { + std::cout << "Generated emitter test failed: " << name << "\n"; + std::cout << "Output:\n"; + std::cout << out.c_str() << "<<<\n"; + std::cout << ret.error << "\n"; + } + + if(ret.ok) + passed++; + total++; + } } + +#include "genemittertests.h" bool RunEmitterTests() { @@ -1142,6 +1173,8 @@ namespace Test RunEmitterErrorTest(&Emitter::InvalidAnchor, "invalid anchor", passed, total); RunEmitterErrorTest(&Emitter::InvalidAlias, "invalid alias", passed, total); RunEmitterErrorTest(&Emitter::BadLocalTag, "bad local tag", passed, total); + + RunGenEmitterTests(passed, total); std::cout << "Emitter tests: " << passed << "/" << total << " passed\n"; return passed == total; diff --git a/test/handlermacros.h b/test/handlermacros.h index c36d502..5bdaf69 100644 --- a/test/handlermacros.h +++ b/test/handlermacros.h @@ -1,3 +1,4 @@ +#include "teststruct.h" #pragma once #include "yaml-cpp/yaml.h" @@ -5,8 +6,6 @@ #include #include -#define YAML_ASSERT(cond) do { if(!(cond)) return " Assert failed: " #cond; } while(false) - namespace Test { std::string Quote(const std::string& text) { YAML::Emitter out; diff --git a/test/spectests.h b/test/spectests.h index 5246df5..611f3c0 100644 --- a/test/spectests.h +++ b/test/spectests.h @@ -5,18 +5,9 @@ #pragma once #endif -#include +#include "teststruct.h" namespace Test { - struct TEST { - TEST(): ok(false) {} - TEST(bool ok_): ok(ok_) {} - TEST(const char *error_): ok(false), error(error_) {} - - bool ok; - std::string error; - }; - namespace Spec { // 2.1 TEST SeqScalars(); diff --git a/test/teststruct.h b/test/teststruct.h new file mode 100644 index 0000000..2d563e5 --- /dev/null +++ b/test/teststruct.h @@ -0,0 +1,18 @@ +#pragma once + +#include + +#define YAML_ASSERT(cond) do { if(!(cond)) return " Assert failed: " #cond; } while(false) + +namespace Test +{ + struct TEST { + TEST(): ok(false) {} + TEST(bool ok_): ok(ok_) {} + TEST(const char *error_): ok(false), error(error_) {} + + bool ok; + std::string error; + }; + +} From 5af3fc04c60703c30fba87956c7e19b021c6f367 Mon Sep 17 00:00:00 2001 From: Jesse Beder Date: Tue, 22 May 2012 22:17:50 -0500 Subject: [PATCH 55/65] Registered all the generated emitter tests --- test/create-emitter-tests.py | 12 +++++--- test/genemittertests.h | 53 ++++++++++++++++++++++++++++++++++++ test/handlermacros.h | 8 +++--- 3 files changed, 65 insertions(+), 8 deletions(-) create mode 100644 test/genemittertests.h diff --git a/test/create-emitter-tests.py b/test/create-emitter-tests.py index 237d013..93cab54 100644 --- a/test/create-emitter-tests.py +++ b/test/create-emitter-tests.py @@ -25,13 +25,13 @@ def doc_start(implicit=False): if implicit: return {'emit': '', 'handle': 'DOC_START()'} else: - return {'emit': 'YAML::DocStart', 'handle': 'DOC_START()'} + return {'emit': 'YAML::BeginDoc', 'handle': 'DOC_START()'} def doc_end(implicit=False): if implicit: return {'emit': '', 'handle': 'DOC_END()'} else: - return {'emit': 'YAML::DocEnd', 'handle': 'DOC_END()'} + return {'emit': 'YAML::EndDoc', 'handle': 'DOC_END()'} def scalar(value, tag='', anchor='', anchor_id=0): emit = [] @@ -39,8 +39,12 @@ def scalar(value, tag='', anchor='', anchor_id=0): emit += ['YAML::VerbatimTag("%s")' % encode(tag)] if anchor: emit += ['YAML::Anchor("%s")' % encode(anchor)] + if tag: + out_tag = encode(tag) + else: + out_tag = '!' emit += ['"%s"' % encode(value)] - return {'emit': emit, 'handle': 'SCALAR("%s", %s, "%s")' % (encode(tag), anchor_id, encode(value))} + return {'emit': emit, 'handle': 'SCALAR("%s", %s, "%s")' % (out_tag, anchor_id, encode(value))} def gen_outlines(): yield [doc_start(), scalar('foo\n'), doc_end()] @@ -87,7 +91,7 @@ def create_emitter_tests(out): out.write('void RunGenEmitterTests(int& passed, int& total)\n') out.write('{\n') for test in tests: - out.write(' RunGenEmitterTest(&Emitter::%s, %s, passed, total);\n' % (test['name'], encode(test['name']))) + out.write(' RunGenEmitterTest(&Emitter::%s, "%s", passed, total);\n' % (test['name'], encode(test['name']))) out.write('}\n') if __name__ == '__main__': diff --git a/test/genemittertests.h b/test/genemittertests.h new file mode 100644 index 0000000..9e008f2 --- /dev/null +++ b/test/genemittertests.h @@ -0,0 +1,53 @@ +namespace Emitter { +TEST testb3471d40ef2dadee13be(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << "foo\n"; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SCALAR("!", 0, "foo\n"); + EXPECT_DOC_END(); + DONE(); +} +TEST testb1f8cfb6083c3fc130aa(YAML::Emitter& out) +{ + out << "foo\n"; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SCALAR("!", 0, "foo\n"); + EXPECT_DOC_END(); + DONE(); +} +TEST testa2f381bb144cf8886efe(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << "foo\n"; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SCALAR("!", 0, "foo\n"); + EXPECT_DOC_END(); + DONE(); +} +TEST test29a80ae92b2f00fa1d06(YAML::Emitter& out) +{ + out << "foo\n"; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SCALAR("!", 0, "foo\n"); + EXPECT_DOC_END(); + DONE(); +} +} +void RunGenEmitterTests(int& passed, int& total) +{ + RunGenEmitterTest(&Emitter::testb3471d40ef2dadee13be, "testb3471d40ef2dadee13be", passed, total); + RunGenEmitterTest(&Emitter::testb1f8cfb6083c3fc130aa, "testb1f8cfb6083c3fc130aa", passed, total); + RunGenEmitterTest(&Emitter::testa2f381bb144cf8886efe, "testa2f381bb144cf8886efe", passed, total); + RunGenEmitterTest(&Emitter::test29a80ae92b2f00fa1d06, "test29a80ae92b2f00fa1d06", passed, total); +} diff --git a/test/handlermacros.h b/test/handlermacros.h index 5bdaf69..6b87303 100644 --- a/test/handlermacros.h +++ b/test/handlermacros.h @@ -7,7 +7,7 @@ #include namespace Test { - std::string Quote(const std::string& text) { + inline std::string Quote(const std::string& text) { YAML::Emitter out; out << YAML::DoubleQuoted << text; return out.c_str(); @@ -52,15 +52,15 @@ namespace Test { } }; - std::ostream& operator << (std::ostream& out, const Event& event) { + inline std::ostream& operator << (std::ostream& out, const Event& event) { return event.write(out); } - bool operator == (const Event& a, const Event& b) { + inline bool operator == (const Event& a, const Event& b) { return a.type == b.type && a.tag == b.tag && a.anchor == b.anchor && a.scalar == b.scalar; } - bool operator != (const Event& a, const Event& b) { + inline bool operator != (const Event& a, const Event& b) { return !(a == b); } From 277132a21f160b43ef7233599a73775b8b37553b Mon Sep 17 00:00:00 2001 From: Jesse Beder Date: Wed, 23 May 2012 10:56:16 -0500 Subject: [PATCH 56/65] Refactored emitter test template code --- test/create-emitter-tests.py | 30 +++++++++++++++++++++++------- 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/test/create-emitter-tests.py b/test/create-emitter-tests.py index 93cab54..420980c 100644 --- a/test/create-emitter-tests.py +++ b/test/create-emitter-tests.py @@ -46,15 +46,31 @@ def scalar(value, tag='', anchor='', anchor_id=0): emit += ['"%s"' % encode(value)] return {'emit': emit, 'handle': 'SCALAR("%s", %s, "%s")' % (out_tag, anchor_id, encode(value))} -def gen_outlines(): - yield [doc_start(), scalar('foo\n'), doc_end()] - yield [doc_start(True), scalar('foo\n'), doc_end()] - yield [doc_start(), scalar('foo\n'), doc_end(True)] - yield [doc_start(True), scalar('foo\n'), doc_end(True)] +def comment(value): + return {'emit': 'YAML::Comment("%s")' % value, 'handle': ''} + +def gen_templates(): + yield [[doc_start(), doc_start(True)], [scalar('foo\n')], [doc_end(), doc_end(True)]] + +def expand(template): + if len(template) == 0: + pass + elif len(template) == 1: + for item in template[0]: + if isinstance(item, list): + yield item + else: + yield [item] + else: + for car in expand(template[:1]): + for cdr in expand(template[1:]): + yield car + cdr + def gen_events(): - for events in gen_outlines(): - yield events + for template in gen_templates(): + for events in expand(template): + yield events def gen_tests(): for events in gen_events(): From c197d822c133344c5e2172c3e38f78da588260e0 Mon Sep 17 00:00:00 2001 From: Jesse Beder Date: Wed, 23 May 2012 11:00:33 -0500 Subject: [PATCH 57/65] Updated gen emitter tests --- test/create-emitter-tests.py | 13 ++- test/genemittertests.h | 192 ++++++++++++++++++++++++++++++++--- 2 files changed, 186 insertions(+), 19 deletions(-) diff --git a/test/create-emitter-tests.py b/test/create-emitter-tests.py index 420980c..14d56b7 100644 --- a/test/create-emitter-tests.py +++ b/test/create-emitter-tests.py @@ -42,7 +42,10 @@ def scalar(value, tag='', anchor='', anchor_id=0): if tag: out_tag = encode(tag) else: - out_tag = '!' + if value == encode(value): + out_tag = '?' + else: + out_tag = '!' emit += ['"%s"' % encode(value)] return {'emit': emit, 'handle': 'SCALAR("%s", %s, "%s")' % (out_tag, anchor_id, encode(value))} @@ -50,7 +53,7 @@ def comment(value): return {'emit': 'YAML::Comment("%s")' % value, 'handle': ''} def gen_templates(): - yield [[doc_start(), doc_start(True)], [scalar('foo\n')], [doc_end(), doc_end(True)]] + yield [[doc_start(), doc_start(True)], [scalar('foo')], [doc_end(), doc_end(True)]] def expand(template): if len(template) == 0: @@ -70,7 +73,11 @@ def expand(template): def gen_events(): for template in gen_templates(): for events in expand(template): - yield events + base = list(events) + for i in range(0, len(base)+1): + cpy = list(base) + cpy.insert(i, comment('comment')) + yield cpy def gen_tests(): for events in gen_events(): diff --git a/test/genemittertests.h b/test/genemittertests.h index 9e008f2..e4faa28 100644 --- a/test/genemittertests.h +++ b/test/genemittertests.h @@ -1,53 +1,213 @@ namespace Emitter { -TEST testb3471d40ef2dadee13be(YAML::Emitter& out) +TEST test02571eee35ac0cbd3777(YAML::Emitter& out) { + out << YAML::Comment("comment"); out << YAML::BeginDoc; - out << "foo\n"; + out << "foo"; out << YAML::EndDoc; HANDLE(out.c_str()); EXPECT_DOC_START(); - EXPECT_SCALAR("!", 0, "foo\n"); + EXPECT_SCALAR("?", 0, "foo"); EXPECT_DOC_END(); DONE(); } -TEST testb1f8cfb6083c3fc130aa(YAML::Emitter& out) +TEST test71b969ca18898d226320(YAML::Emitter& out) { - out << "foo\n"; + out << YAML::BeginDoc; + out << YAML::Comment("comment"); + out << "foo"; out << YAML::EndDoc; HANDLE(out.c_str()); EXPECT_DOC_START(); - EXPECT_SCALAR("!", 0, "foo\n"); + EXPECT_SCALAR("?", 0, "foo"); EXPECT_DOC_END(); DONE(); } -TEST testa2f381bb144cf8886efe(YAML::Emitter& out) +TEST testd69e4ea95ce6f221c6e7(YAML::Emitter& out) { out << YAML::BeginDoc; - out << "foo\n"; + out << "foo"; + out << YAML::Comment("comment"); + out << YAML::EndDoc; HANDLE(out.c_str()); EXPECT_DOC_START(); - EXPECT_SCALAR("!", 0, "foo\n"); + EXPECT_SCALAR("?", 0, "foo"); EXPECT_DOC_END(); DONE(); } -TEST test29a80ae92b2f00fa1d06(YAML::Emitter& out) +TEST testffbfd295ad9bef4deb00(YAML::Emitter& out) { - out << "foo\n"; + out << YAML::BeginDoc; + out << "foo"; + out << YAML::EndDoc; + out << YAML::Comment("comment"); HANDLE(out.c_str()); EXPECT_DOC_START(); - EXPECT_SCALAR("!", 0, "foo\n"); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_DOC_END(); + DONE(); +} +TEST test6a459b2fe1f6e961e1a7(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginDoc; + out << "foo"; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_DOC_END(); + DONE(); +} +TEST test869ab95640c9933ed4d6(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::Comment("comment"); + out << "foo"; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_DOC_END(); + DONE(); +} +TEST test433c0771f40ac3ba853e(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << "foo"; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_DOC_END(); + DONE(); +} +TEST teste181778974c4003bc5a4(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << "foo"; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_DOC_END(); + DONE(); +} +TEST test0c7bb03fbd6b52ea3ad6(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << "foo"; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_DOC_END(); + DONE(); +} +TEST testb819efb5742c1176df98(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << "foo"; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_DOC_END(); + DONE(); +} +TEST test1f7b7cd5a13070c723d3(YAML::Emitter& out) +{ + out << "foo"; + out << YAML::Comment("comment"); + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_DOC_END(); + DONE(); +} +TEST test32126a88cb2b7311e779(YAML::Emitter& out) +{ + out << "foo"; + out << YAML::EndDoc; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_DOC_END(); + DONE(); +} +TEST testd7f952713bde5ce2f9e7(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << "foo"; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_DOC_END(); + DONE(); +} +TEST test5030b4f2d1efb798f320(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << "foo"; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_DOC_END(); + DONE(); +} +TEST testb9015537b9a9e09b8ec8(YAML::Emitter& out) +{ + out << "foo"; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_DOC_END(); + DONE(); +} +TEST test03229f6d33fa9007a65d(YAML::Emitter& out) +{ + out << "foo"; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SCALAR("?", 0, "foo"); EXPECT_DOC_END(); DONE(); } } void RunGenEmitterTests(int& passed, int& total) { - RunGenEmitterTest(&Emitter::testb3471d40ef2dadee13be, "testb3471d40ef2dadee13be", passed, total); - RunGenEmitterTest(&Emitter::testb1f8cfb6083c3fc130aa, "testb1f8cfb6083c3fc130aa", passed, total); - RunGenEmitterTest(&Emitter::testa2f381bb144cf8886efe, "testa2f381bb144cf8886efe", passed, total); - RunGenEmitterTest(&Emitter::test29a80ae92b2f00fa1d06, "test29a80ae92b2f00fa1d06", passed, total); + RunGenEmitterTest(&Emitter::test02571eee35ac0cbd3777, "test02571eee35ac0cbd3777", passed, total); + RunGenEmitterTest(&Emitter::test71b969ca18898d226320, "test71b969ca18898d226320", passed, total); + RunGenEmitterTest(&Emitter::testd69e4ea95ce6f221c6e7, "testd69e4ea95ce6f221c6e7", passed, total); + RunGenEmitterTest(&Emitter::testffbfd295ad9bef4deb00, "testffbfd295ad9bef4deb00", passed, total); + RunGenEmitterTest(&Emitter::test6a459b2fe1f6e961e1a7, "test6a459b2fe1f6e961e1a7", passed, total); + RunGenEmitterTest(&Emitter::test869ab95640c9933ed4d6, "test869ab95640c9933ed4d6", passed, total); + RunGenEmitterTest(&Emitter::test433c0771f40ac3ba853e, "test433c0771f40ac3ba853e", passed, total); + RunGenEmitterTest(&Emitter::teste181778974c4003bc5a4, "teste181778974c4003bc5a4", passed, total); + RunGenEmitterTest(&Emitter::test0c7bb03fbd6b52ea3ad6, "test0c7bb03fbd6b52ea3ad6", passed, total); + RunGenEmitterTest(&Emitter::testb819efb5742c1176df98, "testb819efb5742c1176df98", passed, total); + RunGenEmitterTest(&Emitter::test1f7b7cd5a13070c723d3, "test1f7b7cd5a13070c723d3", passed, total); + RunGenEmitterTest(&Emitter::test32126a88cb2b7311e779, "test32126a88cb2b7311e779", passed, total); + RunGenEmitterTest(&Emitter::testd7f952713bde5ce2f9e7, "testd7f952713bde5ce2f9e7", passed, total); + RunGenEmitterTest(&Emitter::test5030b4f2d1efb798f320, "test5030b4f2d1efb798f320", passed, total); + RunGenEmitterTest(&Emitter::testb9015537b9a9e09b8ec8, "testb9015537b9a9e09b8ec8", passed, total); + RunGenEmitterTest(&Emitter::test03229f6d33fa9007a65d, "test03229f6d33fa9007a65d", passed, total); } From 52d01ff154911a44022a343321408228fb048d82 Mon Sep 17 00:00:00 2001 From: Jesse Beder Date: Wed, 23 May 2012 11:02:17 -0500 Subject: [PATCH 58/65] Fixed top-level comment emitting --- src/emitter.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/emitter.cpp b/src/emitter.cpp index bd3cfe7..eb01f07 100644 --- a/src/emitter.cpp +++ b/src/emitter.cpp @@ -315,6 +315,9 @@ namespace YAML void Emitter::PrepareTopNode(EmitterNodeType::value child) { + if(child == EmitterNodeType::None) + return; + if(m_pState->CurGroupChildCount() > 0 && m_stream.col() > 0) { if(child != EmitterNodeType::None) EmitBeginDoc(); @@ -322,14 +325,14 @@ namespace YAML switch(child) { case EmitterNodeType::None: + break; case EmitterNodeType::Property: case EmitterNodeType::Scalar: case EmitterNodeType::FlowSeq: case EmitterNodeType::FlowMap: // TODO: if we were writing null, and // we wanted it blank, we wouldn't want a space - if(m_pState->HasBegunContent()) - m_stream << " "; + SpaceOrIndentTo(m_pState->HasBegunContent(), 0); break; case EmitterNodeType::BlockSeq: case EmitterNodeType::BlockMap: From fdfffb09168c8dc26604249d227966e7f26d595e Mon Sep 17 00:00:00 2001 From: Jesse Beder Date: Wed, 23 May 2012 11:02:42 -0500 Subject: [PATCH 59/65] Added gen emitter tests --- test/create-emitter-tests.py | 2 +- test/genemittertests.h | 208 +++++++++++++++++++++++++++++++++++ 2 files changed, 209 insertions(+), 1 deletion(-) diff --git a/test/create-emitter-tests.py b/test/create-emitter-tests.py index 14d56b7..0139583 100644 --- a/test/create-emitter-tests.py +++ b/test/create-emitter-tests.py @@ -53,7 +53,7 @@ def comment(value): return {'emit': 'YAML::Comment("%s")' % value, 'handle': ''} def gen_templates(): - yield [[doc_start(), doc_start(True)], [scalar('foo')], [doc_end(), doc_end(True)]] + yield [[doc_start(), doc_start(True)], [scalar('foo'), scalar('foo\n')], [doc_end(), doc_end(True)]] def expand(template): if len(template) == 0: diff --git a/test/genemittertests.h b/test/genemittertests.h index e4faa28..70cd4e5 100644 --- a/test/genemittertests.h +++ b/test/genemittertests.h @@ -99,6 +99,106 @@ TEST teste181778974c4003bc5a4(YAML::Emitter& out) EXPECT_DOC_END(); DONE(); } +TEST testf8cb7e3f1b11791f53b8(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginDoc; + out << "foo\n"; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SCALAR("!", 0, "foo\n"); + EXPECT_DOC_END(); + DONE(); +} +TEST test3c48ed06807100f0a111(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::Comment("comment"); + out << "foo\n"; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SCALAR("!", 0, "foo\n"); + EXPECT_DOC_END(); + DONE(); +} +TEST testb13f7b031f425b0e383f(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << "foo\n"; + out << YAML::Comment("comment"); + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SCALAR("!", 0, "foo\n"); + EXPECT_DOC_END(); + DONE(); +} +TEST testb77284234d3fbe8b24a0(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << "foo\n"; + out << YAML::EndDoc; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SCALAR("!", 0, "foo\n"); + EXPECT_DOC_END(); + DONE(); +} +TEST test9c56fd285b563327a340(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginDoc; + out << "foo\n"; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SCALAR("!", 0, "foo\n"); + EXPECT_DOC_END(); + DONE(); +} +TEST test1c08639d56176e64c885(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::Comment("comment"); + out << "foo\n"; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SCALAR("!", 0, "foo\n"); + EXPECT_DOC_END(); + DONE(); +} +TEST test94c8742f8cab3cec1b4a(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << "foo\n"; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SCALAR("!", 0, "foo\n"); + EXPECT_DOC_END(); + DONE(); +} +TEST test79d1806ceb3ecebfa60b(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << "foo\n"; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SCALAR("!", 0, "foo\n"); + EXPECT_DOC_END(); + DONE(); +} TEST test0c7bb03fbd6b52ea3ad6(YAML::Emitter& out) { out << YAML::Comment("comment"); @@ -191,6 +291,98 @@ TEST test03229f6d33fa9007a65d(YAML::Emitter& out) EXPECT_DOC_END(); DONE(); } +TEST testf998264dcfd0dba06c0a(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << "foo\n"; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SCALAR("!", 0, "foo\n"); + EXPECT_DOC_END(); + DONE(); +} +TEST test7defadc52eddfbf766aa(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << "foo\n"; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SCALAR("!", 0, "foo\n"); + EXPECT_DOC_END(); + DONE(); +} +TEST test55a7c58211689c7815b2(YAML::Emitter& out) +{ + out << "foo\n"; + out << YAML::Comment("comment"); + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SCALAR("!", 0, "foo\n"); + EXPECT_DOC_END(); + DONE(); +} +TEST testc3873d954433175e0143(YAML::Emitter& out) +{ + out << "foo\n"; + out << YAML::EndDoc; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SCALAR("!", 0, "foo\n"); + EXPECT_DOC_END(); + DONE(); +} +TEST test81fb6bf1f976e0ad3fba(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << "foo\n"; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SCALAR("!", 0, "foo\n"); + EXPECT_DOC_END(); + DONE(); +} +TEST test29e7ff04645f56a7ea2f(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << "foo\n"; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SCALAR("!", 0, "foo\n"); + EXPECT_DOC_END(); + DONE(); +} +TEST testce0089a55f926d311ff4(YAML::Emitter& out) +{ + out << "foo\n"; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SCALAR("!", 0, "foo\n"); + EXPECT_DOC_END(); + DONE(); +} +TEST testd1d301bbc73ec11cd49b(YAML::Emitter& out) +{ + out << "foo\n"; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SCALAR("!", 0, "foo\n"); + EXPECT_DOC_END(); + DONE(); +} } void RunGenEmitterTests(int& passed, int& total) { @@ -202,6 +394,14 @@ void RunGenEmitterTests(int& passed, int& total) RunGenEmitterTest(&Emitter::test869ab95640c9933ed4d6, "test869ab95640c9933ed4d6", passed, total); RunGenEmitterTest(&Emitter::test433c0771f40ac3ba853e, "test433c0771f40ac3ba853e", passed, total); RunGenEmitterTest(&Emitter::teste181778974c4003bc5a4, "teste181778974c4003bc5a4", passed, total); + RunGenEmitterTest(&Emitter::testf8cb7e3f1b11791f53b8, "testf8cb7e3f1b11791f53b8", passed, total); + RunGenEmitterTest(&Emitter::test3c48ed06807100f0a111, "test3c48ed06807100f0a111", passed, total); + RunGenEmitterTest(&Emitter::testb13f7b031f425b0e383f, "testb13f7b031f425b0e383f", passed, total); + RunGenEmitterTest(&Emitter::testb77284234d3fbe8b24a0, "testb77284234d3fbe8b24a0", passed, total); + RunGenEmitterTest(&Emitter::test9c56fd285b563327a340, "test9c56fd285b563327a340", passed, total); + RunGenEmitterTest(&Emitter::test1c08639d56176e64c885, "test1c08639d56176e64c885", passed, total); + RunGenEmitterTest(&Emitter::test94c8742f8cab3cec1b4a, "test94c8742f8cab3cec1b4a", passed, total); + RunGenEmitterTest(&Emitter::test79d1806ceb3ecebfa60b, "test79d1806ceb3ecebfa60b", passed, total); RunGenEmitterTest(&Emitter::test0c7bb03fbd6b52ea3ad6, "test0c7bb03fbd6b52ea3ad6", passed, total); RunGenEmitterTest(&Emitter::testb819efb5742c1176df98, "testb819efb5742c1176df98", passed, total); RunGenEmitterTest(&Emitter::test1f7b7cd5a13070c723d3, "test1f7b7cd5a13070c723d3", passed, total); @@ -210,4 +410,12 @@ void RunGenEmitterTests(int& passed, int& total) RunGenEmitterTest(&Emitter::test5030b4f2d1efb798f320, "test5030b4f2d1efb798f320", passed, total); RunGenEmitterTest(&Emitter::testb9015537b9a9e09b8ec8, "testb9015537b9a9e09b8ec8", passed, total); RunGenEmitterTest(&Emitter::test03229f6d33fa9007a65d, "test03229f6d33fa9007a65d", passed, total); + RunGenEmitterTest(&Emitter::testf998264dcfd0dba06c0a, "testf998264dcfd0dba06c0a", passed, total); + RunGenEmitterTest(&Emitter::test7defadc52eddfbf766aa, "test7defadc52eddfbf766aa", passed, total); + RunGenEmitterTest(&Emitter::test55a7c58211689c7815b2, "test55a7c58211689c7815b2", passed, total); + RunGenEmitterTest(&Emitter::testc3873d954433175e0143, "testc3873d954433175e0143", passed, total); + RunGenEmitterTest(&Emitter::test81fb6bf1f976e0ad3fba, "test81fb6bf1f976e0ad3fba", passed, total); + RunGenEmitterTest(&Emitter::test29e7ff04645f56a7ea2f, "test29e7ff04645f56a7ea2f", passed, total); + RunGenEmitterTest(&Emitter::testce0089a55f926d311ff4, "testce0089a55f926d311ff4", passed, total); + RunGenEmitterTest(&Emitter::testd1d301bbc73ec11cd49b, "testd1d301bbc73ec11cd49b", passed, total); } From 3ddfeff4f59a38a8c6b047a6eea3099215a10782 Mon Sep 17 00:00:00 2001 From: Jesse Beder Date: Wed, 23 May 2012 11:11:50 -0500 Subject: [PATCH 60/65] Added seq gen emitter tests --- test/create-emitter-tests.py | 25 +- test/genemittertests.h | 3652 ++++++++++++++++++++++++++++++++++ 2 files changed, 3676 insertions(+), 1 deletion(-) diff --git a/test/create-emitter-tests.py b/test/create-emitter-tests.py index 0139583..e31c2ce 100644 --- a/test/create-emitter-tests.py +++ b/test/create-emitter-tests.py @@ -52,8 +52,31 @@ def scalar(value, tag='', anchor='', anchor_id=0): def comment(value): return {'emit': 'YAML::Comment("%s")' % value, 'handle': ''} +def seq_start(tag='', anchor='', anchor_id=0): + emit = [] + if tag: + emit += ['YAML::VerbatimTag("%s")' % encode(tag)] + if anchor: + emit += ['YAML::Anchor("%s")' % encode(anchor)] + if tag: + out_tag = encode(tag) + else: + out_tag = '?' + emit += ['YAML::BeginSeq'] + return {'emit': emit, 'handle': 'SEQ_START("%s", %s)' % (out_tag, anchor_id)} + +def seq_end(): + return {'emit': 'YAML::EndSeq', 'handle': 'SEQ_END()'} + def gen_templates(): - yield [[doc_start(), doc_start(True)], [scalar('foo'), scalar('foo\n')], [doc_end(), doc_end(True)]] + yield [[doc_start(), doc_start(True)], + [scalar('foo'), scalar('foo\n'), scalar('foo', 'tag'), scalar('foo', '', 'anchor', 1)], + [doc_end(), doc_end(True)]] + yield [[doc_start(), doc_start(True)], + [seq_start()], + [[], [scalar('foo')], [scalar('foo', 'tag')], [scalar('foo', '', 'anchor', 1)], [scalar('foo', 'tag', 'anchor', 1)], [scalar('foo'), scalar('bar')], [scalar('foo', 'tag', 'anchor', 1), scalar('bar', 'tag', 'other', 2)]], + [seq_end()], + [doc_end(), doc_end(True)]] def expand(template): if len(template) == 0: diff --git a/test/genemittertests.h b/test/genemittertests.h index 70cd4e5..fea8573 100644 --- a/test/genemittertests.h +++ b/test/genemittertests.h @@ -199,6 +199,222 @@ TEST test79d1806ceb3ecebfa60b(YAML::Emitter& out) EXPECT_DOC_END(); DONE(); } +TEST test360afe50348ec36569d3(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginDoc; + out << YAML::VerbatimTag("tag"); + out << "foo"; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SCALAR("tag", 0, "foo"); + EXPECT_DOC_END(); + DONE(); +} +TEST teste599b3fc1857f4265d3b(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::Comment("comment"); + out << YAML::VerbatimTag("tag"); + out << "foo"; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SCALAR("tag", 0, "foo"); + EXPECT_DOC_END(); + DONE(); +} +TEST test88adf7adb474ad063424(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::VerbatimTag("tag"); + out << "foo"; + out << YAML::Comment("comment"); + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SCALAR("tag", 0, "foo"); + EXPECT_DOC_END(); + DONE(); +} +TEST test0978ca6f6358ea06e024(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::VerbatimTag("tag"); + out << "foo"; + out << YAML::EndDoc; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SCALAR("tag", 0, "foo"); + EXPECT_DOC_END(); + DONE(); +} +TEST testd915f57fca4b0f6d77b4(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginDoc; + out << YAML::VerbatimTag("tag"); + out << "foo"; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SCALAR("tag", 0, "foo"); + EXPECT_DOC_END(); + DONE(); +} +TEST test1fe1f22496f2a0ffd64e(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::Comment("comment"); + out << YAML::VerbatimTag("tag"); + out << "foo"; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SCALAR("tag", 0, "foo"); + EXPECT_DOC_END(); + DONE(); +} +TEST test76422a4077d3bdd03579(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::VerbatimTag("tag"); + out << "foo"; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SCALAR("tag", 0, "foo"); + EXPECT_DOC_END(); + DONE(); +} +TEST test92b168a497cb0c7e3144(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::VerbatimTag("tag"); + out << "foo"; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SCALAR("tag", 0, "foo"); + EXPECT_DOC_END(); + DONE(); +} +TEST testa93925b3ae311a7f11d4(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginDoc; + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SCALAR("?", 1, "foo"); + EXPECT_DOC_END(); + DONE(); +} +TEST test2dd1aaf6a1c1924557d0(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::Comment("comment"); + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SCALAR("?", 1, "foo"); + EXPECT_DOC_END(); + DONE(); +} +TEST test6ec0585d0f0945ad9dae(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::Comment("comment"); + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SCALAR("?", 1, "foo"); + EXPECT_DOC_END(); + DONE(); +} +TEST test7e00bca835d55844bbfe(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::EndDoc; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SCALAR("?", 1, "foo"); + EXPECT_DOC_END(); + DONE(); +} +TEST test70912c7d920a0597bbb2(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginDoc; + out << YAML::Anchor("anchor"); + out << "foo"; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SCALAR("?", 1, "foo"); + EXPECT_DOC_END(); + DONE(); +} +TEST test16eacbf77bccde360e54(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::Comment("comment"); + out << YAML::Anchor("anchor"); + out << "foo"; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SCALAR("?", 1, "foo"); + EXPECT_DOC_END(); + DONE(); +} +TEST test556e0c86efb0716d2778(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SCALAR("?", 1, "foo"); + EXPECT_DOC_END(); + DONE(); +} +TEST test71b64326d72fe100e6ad(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SCALAR("?", 1, "foo"); + EXPECT_DOC_END(); + DONE(); +} TEST test0c7bb03fbd6b52ea3ad6(YAML::Emitter& out) { out << YAML::Comment("comment"); @@ -383,6 +599,3238 @@ TEST testd1d301bbc73ec11cd49b(YAML::Emitter& out) EXPECT_DOC_END(); DONE(); } +TEST test4640bfb42711b7209ef9(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::VerbatimTag("tag"); + out << "foo"; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SCALAR("tag", 0, "foo"); + EXPECT_DOC_END(); + DONE(); +} +TEST test1133d19fc3a4ec9fb3e8(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::VerbatimTag("tag"); + out << "foo"; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SCALAR("tag", 0, "foo"); + EXPECT_DOC_END(); + DONE(); +} +TEST test4a6d083241180899f7ed(YAML::Emitter& out) +{ + out << YAML::VerbatimTag("tag"); + out << "foo"; + out << YAML::Comment("comment"); + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SCALAR("tag", 0, "foo"); + EXPECT_DOC_END(); + DONE(); +} +TEST testbadb5b228a4db78efac0(YAML::Emitter& out) +{ + out << YAML::VerbatimTag("tag"); + out << "foo"; + out << YAML::EndDoc; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SCALAR("tag", 0, "foo"); + EXPECT_DOC_END(); + DONE(); +} +TEST test5c6d607ed1ad046568e1(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::VerbatimTag("tag"); + out << "foo"; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SCALAR("tag", 0, "foo"); + EXPECT_DOC_END(); + DONE(); +} +TEST testac34cde109884bb6876b(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::VerbatimTag("tag"); + out << "foo"; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SCALAR("tag", 0, "foo"); + EXPECT_DOC_END(); + DONE(); +} +TEST test5c19597d5336d541f990(YAML::Emitter& out) +{ + out << YAML::VerbatimTag("tag"); + out << "foo"; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SCALAR("tag", 0, "foo"); + EXPECT_DOC_END(); + DONE(); +} +TEST test39e174ed33d5508a61ce(YAML::Emitter& out) +{ + out << YAML::VerbatimTag("tag"); + out << "foo"; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SCALAR("tag", 0, "foo"); + EXPECT_DOC_END(); + DONE(); +} +TEST test43e26cf94441cee4a0c4(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SCALAR("?", 1, "foo"); + EXPECT_DOC_END(); + DONE(); +} +TEST test06afa8e5b516630fc8da(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SCALAR("?", 1, "foo"); + EXPECT_DOC_END(); + DONE(); +} +TEST test4d109db0282a7797cdcb(YAML::Emitter& out) +{ + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::Comment("comment"); + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SCALAR("?", 1, "foo"); + EXPECT_DOC_END(); + DONE(); +} +TEST test0c1c00113c20dfa650a9(YAML::Emitter& out) +{ + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::EndDoc; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SCALAR("?", 1, "foo"); + EXPECT_DOC_END(); + DONE(); +} +TEST testccd7f2183f06483ee5e0(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::Anchor("anchor"); + out << "foo"; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SCALAR("?", 1, "foo"); + EXPECT_DOC_END(); + DONE(); +} +TEST test52e25e363a17f37c296f(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::Anchor("anchor"); + out << "foo"; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SCALAR("?", 1, "foo"); + EXPECT_DOC_END(); + DONE(); +} +TEST testdd81d16d3bdd8636af16(YAML::Emitter& out) +{ + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SCALAR("?", 1, "foo"); + EXPECT_DOC_END(); + DONE(); +} +TEST testd76e8eb5043431c3434e(YAML::Emitter& out) +{ + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SCALAR("?", 1, "foo"); + EXPECT_DOC_END(); + DONE(); +} +TEST teste03be55aff3dc08f07a1(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginDoc; + out << YAML::BeginSeq; + out << YAML::EndSeq; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test8ba3e94c45f696c5027b(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::Comment("comment"); + out << YAML::BeginSeq; + out << YAML::EndSeq; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test90e45bcf67b89e31fd12(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::BeginSeq; + out << YAML::Comment("comment"); + out << YAML::EndSeq; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test0b7c4e535bfebfa3c85d(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::BeginSeq; + out << YAML::EndSeq; + out << YAML::Comment("comment"); + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test3a1c08f490683d254cda(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::BeginSeq; + out << YAML::EndSeq; + out << YAML::EndDoc; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test926cd343d3999525d9ce(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginDoc; + out << YAML::BeginSeq; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test1e5dd6b1e4dfb59f0346(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::Comment("comment"); + out << YAML::BeginSeq; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test0f064b30c1187ff2dd4b(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::BeginSeq; + out << YAML::Comment("comment"); + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test58fd20c1736964e12b53(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::BeginSeq; + out << YAML::EndSeq; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testbddd187d973b632dc188(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::BeginSeq; + out << YAML::EndSeq; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test5bc168e49ab7503fd2e1(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginDoc; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test712e139d81db4e14196d(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::Comment("comment"); + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test48130bfdef5d192b888e(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::BeginSeq; + out << YAML::Comment("comment"); + out << "foo"; + out << YAML::EndSeq; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test27552de54635da852895(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::Comment("comment"); + out << YAML::EndSeq; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test6529691d17594d5abeb6(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::Comment("comment"); + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test46b8a7b9d2461d80e0c0(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::EndDoc; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testbd1cb845de056e97a301(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginDoc; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testfe1f94c842b37340db76(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::Comment("comment"); + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST teste3c7fbf8af4d82e891e3(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::BeginSeq; + out << YAML::Comment("comment"); + out << "foo"; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testd6800d90d6d037d02ace(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::Comment("comment"); + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testdf987230fa431b7a8f1b(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testcd22b774448a8b15345e(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test591a370a1ce302d23688(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginDoc; + out << YAML::BeginSeq; + out << YAML::VerbatimTag("tag"); + out << "foo"; + out << YAML::EndSeq; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("tag", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test5e56c5800a9f2c4591ff(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::Comment("comment"); + out << YAML::BeginSeq; + out << YAML::VerbatimTag("tag"); + out << "foo"; + out << YAML::EndSeq; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("tag", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test72f6d368cc2f52b488bd(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::BeginSeq; + out << YAML::Comment("comment"); + out << YAML::VerbatimTag("tag"); + out << "foo"; + out << YAML::EndSeq; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("tag", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test6786da34791cbab71591(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::BeginSeq; + out << YAML::VerbatimTag("tag"); + out << "foo"; + out << YAML::Comment("comment"); + out << YAML::EndSeq; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("tag", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test6d53136f35632180e2e8(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::BeginSeq; + out << YAML::VerbatimTag("tag"); + out << "foo"; + out << YAML::EndSeq; + out << YAML::Comment("comment"); + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("tag", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test01020a01f84721d7fb07(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::BeginSeq; + out << YAML::VerbatimTag("tag"); + out << "foo"; + out << YAML::EndSeq; + out << YAML::EndDoc; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("tag", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testc3ab223703ef17e47ec7(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginDoc; + out << YAML::BeginSeq; + out << YAML::VerbatimTag("tag"); + out << "foo"; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("tag", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test033db6218db214ae5ef9(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::Comment("comment"); + out << YAML::BeginSeq; + out << YAML::VerbatimTag("tag"); + out << "foo"; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("tag", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test38fe09343ac97f51b38f(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::BeginSeq; + out << YAML::Comment("comment"); + out << YAML::VerbatimTag("tag"); + out << "foo"; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("tag", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test99eb29693d619703a052(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::BeginSeq; + out << YAML::VerbatimTag("tag"); + out << "foo"; + out << YAML::Comment("comment"); + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("tag", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST teste9e58998a49132e15fb4(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::BeginSeq; + out << YAML::VerbatimTag("tag"); + out << "foo"; + out << YAML::EndSeq; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("tag", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testc1b4fba9280329b30583(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::BeginSeq; + out << YAML::VerbatimTag("tag"); + out << "foo"; + out << YAML::EndSeq; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("tag", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test2f8651438d44de183d22(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginDoc; + out << YAML::BeginSeq; + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::EndSeq; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 1, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test4c506bf0bc7a972cb62d(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::Comment("comment"); + out << YAML::BeginSeq; + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::EndSeq; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 1, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test6a42214b8698a0e87f5f(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::BeginSeq; + out << YAML::Comment("comment"); + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::EndSeq; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 1, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST teste0b5020ccbc0cbc7f699(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::BeginSeq; + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::Comment("comment"); + out << YAML::EndSeq; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 1, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test3fb453ac1de7a2d37a16(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::BeginSeq; + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::EndSeq; + out << YAML::Comment("comment"); + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 1, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test4d3236ecd88c5faa74e8(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::BeginSeq; + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::EndSeq; + out << YAML::EndDoc; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 1, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test116230234c38c68eb060(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginDoc; + out << YAML::BeginSeq; + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 1, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testb7c63d73350b11bf4a56(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::Comment("comment"); + out << YAML::BeginSeq; + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 1, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test26ae0a3b97fb1c7743bf(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::BeginSeq; + out << YAML::Comment("comment"); + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 1, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testeabf01d5500c4f5c9de5(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::BeginSeq; + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::Comment("comment"); + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 1, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testf9195cd2fb4c57783870(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::BeginSeq; + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::EndSeq; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 1, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test8c7159f70888a6c5548e(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::BeginSeq; + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::EndSeq; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 1, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testba96c9cdf5e82c9ebd0f(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginDoc; + out << YAML::BeginSeq; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::EndSeq; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("tag", 1, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test6cbb2232cc1e43752958(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::Comment("comment"); + out << YAML::BeginSeq; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::EndSeq; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("tag", 1, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test2bc126cc8be9e3d0a5bb(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::BeginSeq; + out << YAML::Comment("comment"); + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::EndSeq; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("tag", 1, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testb053b9b6ee7c7eecc798(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::BeginSeq; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::Comment("comment"); + out << YAML::EndSeq; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("tag", 1, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testda8339179085c81ac7a9(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::BeginSeq; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::EndSeq; + out << YAML::Comment("comment"); + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("tag", 1, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testf38e7a065a9bda416bf0(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::BeginSeq; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::EndSeq; + out << YAML::EndDoc; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("tag", 1, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test5345180f2a8a65af5b72(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginDoc; + out << YAML::BeginSeq; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("tag", 1, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test7aee5968853276b78e65(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::Comment("comment"); + out << YAML::BeginSeq; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("tag", 1, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test1c20b15f6680fd1fa304(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::BeginSeq; + out << YAML::Comment("comment"); + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("tag", 1, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test3ad355d8aa94a80ed9d0(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::BeginSeq; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::Comment("comment"); + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("tag", 1, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test717b89ec9b7b004e5c17(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::BeginSeq; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::EndSeq; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("tag", 1, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testc540c8d6d92913953ef8(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::BeginSeq; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::EndSeq; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("tag", 1, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test805391f6964c07b1fc51(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginDoc; + out << YAML::BeginSeq; + out << "foo"; + out << "bar"; + out << YAML::EndSeq; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testafc978dbd9b5d8005968(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::Comment("comment"); + out << YAML::BeginSeq; + out << "foo"; + out << "bar"; + out << YAML::EndSeq; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testf137897e42e659d45548(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::BeginSeq; + out << YAML::Comment("comment"); + out << "foo"; + out << "bar"; + out << YAML::EndSeq; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test41c10a5f012922d6d240(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::Comment("comment"); + out << "bar"; + out << YAML::EndSeq; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test6d46af9b0e1bab6eefd2(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::BeginSeq; + out << "foo"; + out << "bar"; + out << YAML::Comment("comment"); + out << YAML::EndSeq; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test6908c1e71bca5b5a09b6(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::BeginSeq; + out << "foo"; + out << "bar"; + out << YAML::EndSeq; + out << YAML::Comment("comment"); + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test158d6160ee94d7f929c0(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::BeginSeq; + out << "foo"; + out << "bar"; + out << YAML::EndSeq; + out << YAML::EndDoc; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test07186666318de7b13975(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginDoc; + out << YAML::BeginSeq; + out << "foo"; + out << "bar"; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testdcb6011d1dbc47e024b4(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::Comment("comment"); + out << YAML::BeginSeq; + out << "foo"; + out << "bar"; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test998e6b11c32e19f91a43(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::BeginSeq; + out << YAML::Comment("comment"); + out << "foo"; + out << "bar"; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test7b009b420c34f753e2dc(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::Comment("comment"); + out << "bar"; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testba4c5b4eedf23c16ab44(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::BeginSeq; + out << "foo"; + out << "bar"; + out << YAML::Comment("comment"); + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test022d120061a5c77c6640(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::BeginSeq; + out << "foo"; + out << "bar"; + out << YAML::EndSeq; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testeb346f4b70732835631f(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::BeginSeq; + out << "foo"; + out << "bar"; + out << YAML::EndSeq; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testade70114082f144726ee(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginDoc; + out << YAML::BeginSeq; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("other"); + out << "bar"; + out << YAML::EndSeq; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("tag", 1, "foo"); + EXPECT_SCALAR("tag", 2, "bar"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testf2b68aae6173ab6ad66d(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::Comment("comment"); + out << YAML::BeginSeq; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("other"); + out << "bar"; + out << YAML::EndSeq; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("tag", 1, "foo"); + EXPECT_SCALAR("tag", 2, "bar"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST teste9a962c26a72ea4d3f8d(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::BeginSeq; + out << YAML::Comment("comment"); + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("other"); + out << "bar"; + out << YAML::EndSeq; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("tag", 1, "foo"); + EXPECT_SCALAR("tag", 2, "bar"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testa9603ff993f8a8d47b5d(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::BeginSeq; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::Comment("comment"); + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("other"); + out << "bar"; + out << YAML::EndSeq; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("tag", 1, "foo"); + EXPECT_SCALAR("tag", 2, "bar"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test2b70cf1579b37e0fb086(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::BeginSeq; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("other"); + out << "bar"; + out << YAML::Comment("comment"); + out << YAML::EndSeq; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("tag", 1, "foo"); + EXPECT_SCALAR("tag", 2, "bar"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test3790d77103bac72dc302(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::BeginSeq; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("other"); + out << "bar"; + out << YAML::EndSeq; + out << YAML::Comment("comment"); + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("tag", 1, "foo"); + EXPECT_SCALAR("tag", 2, "bar"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testadfa25cb2fd5a9346102(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::BeginSeq; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("other"); + out << "bar"; + out << YAML::EndSeq; + out << YAML::EndDoc; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("tag", 1, "foo"); + EXPECT_SCALAR("tag", 2, "bar"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test9764ad298ba1fe9ecfa8(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginDoc; + out << YAML::BeginSeq; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("other"); + out << "bar"; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("tag", 1, "foo"); + EXPECT_SCALAR("tag", 2, "bar"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test22f20fac5e02211edadc(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::Comment("comment"); + out << YAML::BeginSeq; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("other"); + out << "bar"; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("tag", 1, "foo"); + EXPECT_SCALAR("tag", 2, "bar"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test8b3b22c8ffd679b15623(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::BeginSeq; + out << YAML::Comment("comment"); + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("other"); + out << "bar"; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("tag", 1, "foo"); + EXPECT_SCALAR("tag", 2, "bar"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test438d1581dec9088389d7(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::BeginSeq; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::Comment("comment"); + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("other"); + out << "bar"; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("tag", 1, "foo"); + EXPECT_SCALAR("tag", 2, "bar"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test0b417297c8e11f038c7c(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::BeginSeq; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("other"); + out << "bar"; + out << YAML::Comment("comment"); + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("tag", 1, "foo"); + EXPECT_SCALAR("tag", 2, "bar"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testa3686f0b87652d4640c2(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::BeginSeq; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("other"); + out << "bar"; + out << YAML::EndSeq; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("tag", 1, "foo"); + EXPECT_SCALAR("tag", 2, "bar"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testd6f021791f2162c85174(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::BeginSeq; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("other"); + out << "bar"; + out << YAML::EndSeq; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("tag", 1, "foo"); + EXPECT_SCALAR("tag", 2, "bar"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test3d34018a42371ab9fbcd(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginSeq; + out << YAML::EndSeq; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test7a9287f053731d912e63(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginSeq; + out << YAML::EndSeq; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testa9aa047a659d330a4a8b(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::Comment("comment"); + out << YAML::EndSeq; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test74e66203a050c2ce6c17(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::EndSeq; + out << YAML::Comment("comment"); + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test7338d0bbe29dd57fab54(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::EndSeq; + out << YAML::EndDoc; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testbd4f6be8cdb35c6f251d(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginSeq; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test8f0d1345830b83dfc1b7(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginSeq; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testa4e1c63bc2832a9ffb90(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::Comment("comment"); + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test9d5abf8cc60b9bd0d314(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::EndSeq; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test332175e66c385ed1a97e(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::EndSeq; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test34238765b14f93c81e57(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test10797ce06190a3866a08(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST teste92cd495aff9e502a1ca(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::Comment("comment"); + out << "foo"; + out << YAML::EndSeq; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testf02ffda4a54ad1390ab6(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << "foo"; + out << YAML::Comment("comment"); + out << YAML::EndSeq; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test252e5030af4f0ab7bf2b(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::Comment("comment"); + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testfe3d96e64a5db1098e2d(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::EndDoc; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test94c9f1a9c03f970dde84(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testd16f010f550e384c3e59(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test9b6529d7a517cd7dbc13(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::Comment("comment"); + out << "foo"; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test706fdc6bcd111cd4de81(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << "foo"; + out << YAML::Comment("comment"); + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test7ce41e86a2afa55d59d7(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test14aebe584c51e7c2a682(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testb9987fabfcd184f82c65(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginSeq; + out << YAML::VerbatimTag("tag"); + out << "foo"; + out << YAML::EndSeq; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("tag", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testbe1a5e58793366c0c07a(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginSeq; + out << YAML::VerbatimTag("tag"); + out << "foo"; + out << YAML::EndSeq; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("tag", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test1eac7fa4e151174d20c5(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::Comment("comment"); + out << YAML::VerbatimTag("tag"); + out << "foo"; + out << YAML::EndSeq; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("tag", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test5a372a31cdbea0111962(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::VerbatimTag("tag"); + out << "foo"; + out << YAML::Comment("comment"); + out << YAML::EndSeq; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("tag", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testcc1a35b80f0b02e1255e(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::VerbatimTag("tag"); + out << "foo"; + out << YAML::EndSeq; + out << YAML::Comment("comment"); + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("tag", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testb04cc0e338c9b30cffa3(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::VerbatimTag("tag"); + out << "foo"; + out << YAML::EndSeq; + out << YAML::EndDoc; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("tag", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testb0a82e7bf3b5bdebdd9c(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginSeq; + out << YAML::VerbatimTag("tag"); + out << "foo"; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("tag", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test0d883c1652c0b59e6643(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginSeq; + out << YAML::VerbatimTag("tag"); + out << "foo"; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("tag", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testa38bc626fc7e3454333b(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::Comment("comment"); + out << YAML::VerbatimTag("tag"); + out << "foo"; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("tag", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test8bea94aa1202a12d9ae9(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::VerbatimTag("tag"); + out << "foo"; + out << YAML::Comment("comment"); + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("tag", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test24a263a0eb80caaaea4b(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::VerbatimTag("tag"); + out << "foo"; + out << YAML::EndSeq; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("tag", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testb86b045d63884140fd1d(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::VerbatimTag("tag"); + out << "foo"; + out << YAML::EndSeq; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("tag", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test9d261e666ae24a9cfc70(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginSeq; + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::EndSeq; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 1, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test331919d746512b1bd2dd(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginSeq; + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::EndSeq; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 1, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test58b5cb1c0a14ca820fa0(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::Comment("comment"); + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::EndSeq; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 1, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testfcc5a2d53d8b78bff00e(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::Comment("comment"); + out << YAML::EndSeq; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 1, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test4e18e90b6551c4af46b7(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::EndSeq; + out << YAML::Comment("comment"); + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 1, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testfd0cdd7da5ea80def96c(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::EndSeq; + out << YAML::EndDoc; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 1, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test31fa2c218bc9f47d31b5(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginSeq; + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 1, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test486f1defd8f55e9519a9(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginSeq; + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 1, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testbd67707be3be50792791(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::Comment("comment"); + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 1, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test1a5d67d4591ad4c8d1e7(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::Comment("comment"); + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 1, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testd1b42a0d7e5156b00706(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::EndSeq; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 1, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test120e16514220d9f1b114(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::EndSeq; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 1, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testf3200a3148254d3357d3(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginSeq; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::EndSeq; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("tag", 1, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test291bb8d225b135c1f926(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginSeq; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::EndSeq; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("tag", 1, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testd89446599f31a400dcec(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::Comment("comment"); + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::EndSeq; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("tag", 1, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test10810f50a49dfe065bfa(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::Comment("comment"); + out << YAML::EndSeq; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("tag", 1, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testb1f754216d575a8cc3af(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::EndSeq; + out << YAML::Comment("comment"); + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("tag", 1, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testb9d82396ef66bed18aed(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::EndSeq; + out << YAML::EndDoc; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("tag", 1, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test5469f77f98702583e6ea(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginSeq; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("tag", 1, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testea4d055788f9af327d2e(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginSeq; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("tag", 1, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test08ac3b6e6f8814cdc77a(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::Comment("comment"); + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("tag", 1, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test9e8e5ac1687da916f607(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::Comment("comment"); + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("tag", 1, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test6265b47bba1fd6839697(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::EndSeq; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("tag", 1, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testa78aad03d3d6c0cd9810(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::EndSeq; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("tag", 1, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test050fb21ac4e0ec123acc(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginSeq; + out << "foo"; + out << "bar"; + out << YAML::EndSeq; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test41e74fd70f88555712db(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginSeq; + out << "foo"; + out << "bar"; + out << YAML::EndSeq; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testc066eeba93b49bfd475e(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::Comment("comment"); + out << "foo"; + out << "bar"; + out << YAML::EndSeq; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testba918d828779830ff775(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << "foo"; + out << YAML::Comment("comment"); + out << "bar"; + out << YAML::EndSeq; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test9fc69104bdb595977460(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << "foo"; + out << "bar"; + out << YAML::Comment("comment"); + out << YAML::EndSeq; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test0dd65e43cc41ad032d71(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << "foo"; + out << "bar"; + out << YAML::EndSeq; + out << YAML::Comment("comment"); + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test324295b9fb6b58411e30(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << "foo"; + out << "bar"; + out << YAML::EndSeq; + out << YAML::EndDoc; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test8aebc8d0e0485dfeb252(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginSeq; + out << "foo"; + out << "bar"; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testd222de940e9a99d43cdd(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginSeq; + out << "foo"; + out << "bar"; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test9b7e3c531ced5ced7f08(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::Comment("comment"); + out << "foo"; + out << "bar"; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testcfc4d3d407725683e731(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << "foo"; + out << YAML::Comment("comment"); + out << "bar"; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test76848f10a77db08e038e(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << "foo"; + out << "bar"; + out << YAML::Comment("comment"); + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testa4c728e62357ca05c45c(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << "foo"; + out << "bar"; + out << YAML::EndSeq; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test666ae3bb483cb7d83170(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << "foo"; + out << "bar"; + out << YAML::EndSeq; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test6ec557a6e48fd6900cb1(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginSeq; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("other"); + out << "bar"; + out << YAML::EndSeq; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("tag", 1, "foo"); + EXPECT_SCALAR("tag", 2, "bar"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test18a5d0db57d08d737b99(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginSeq; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("other"); + out << "bar"; + out << YAML::EndSeq; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("tag", 1, "foo"); + EXPECT_SCALAR("tag", 2, "bar"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testd974ded8f39d6b77c0a1(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::Comment("comment"); + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("other"); + out << "bar"; + out << YAML::EndSeq; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("tag", 1, "foo"); + EXPECT_SCALAR("tag", 2, "bar"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test6c6d47297f6ea03c588b(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::Comment("comment"); + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("other"); + out << "bar"; + out << YAML::EndSeq; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("tag", 1, "foo"); + EXPECT_SCALAR("tag", 2, "bar"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testfb543650c644777c82ec(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("other"); + out << "bar"; + out << YAML::Comment("comment"); + out << YAML::EndSeq; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("tag", 1, "foo"); + EXPECT_SCALAR("tag", 2, "bar"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test85cf601a990a9689b6c2(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("other"); + out << "bar"; + out << YAML::EndSeq; + out << YAML::Comment("comment"); + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("tag", 1, "foo"); + EXPECT_SCALAR("tag", 2, "bar"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testae2c05021a270e7e6ce6(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("other"); + out << "bar"; + out << YAML::EndSeq; + out << YAML::EndDoc; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("tag", 1, "foo"); + EXPECT_SCALAR("tag", 2, "bar"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testceebe4a07ec516cb5a7a(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginSeq; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("other"); + out << "bar"; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("tag", 1, "foo"); + EXPECT_SCALAR("tag", 2, "bar"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test1a2b24646720aa998cbb(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginSeq; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("other"); + out << "bar"; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("tag", 1, "foo"); + EXPECT_SCALAR("tag", 2, "bar"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testf415efe81b5c2c8112a2(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::Comment("comment"); + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("other"); + out << "bar"; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("tag", 1, "foo"); + EXPECT_SCALAR("tag", 2, "bar"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test0f1b297a0cb08c094411(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::Comment("comment"); + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("other"); + out << "bar"; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("tag", 1, "foo"); + EXPECT_SCALAR("tag", 2, "bar"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test1b49cc3347751dcb09a9(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("other"); + out << "bar"; + out << YAML::Comment("comment"); + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("tag", 1, "foo"); + EXPECT_SCALAR("tag", 2, "bar"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testffe72c176661d48910bd(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("other"); + out << "bar"; + out << YAML::EndSeq; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("tag", 1, "foo"); + EXPECT_SCALAR("tag", 2, "bar"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testf3f2d1d0e79f326b3d2f(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("other"); + out << "bar"; + out << YAML::EndSeq; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("tag", 1, "foo"); + EXPECT_SCALAR("tag", 2, "bar"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} } void RunGenEmitterTests(int& passed, int& total) { @@ -402,6 +3850,22 @@ void RunGenEmitterTests(int& passed, int& total) RunGenEmitterTest(&Emitter::test1c08639d56176e64c885, "test1c08639d56176e64c885", passed, total); RunGenEmitterTest(&Emitter::test94c8742f8cab3cec1b4a, "test94c8742f8cab3cec1b4a", passed, total); RunGenEmitterTest(&Emitter::test79d1806ceb3ecebfa60b, "test79d1806ceb3ecebfa60b", passed, total); + RunGenEmitterTest(&Emitter::test360afe50348ec36569d3, "test360afe50348ec36569d3", passed, total); + RunGenEmitterTest(&Emitter::teste599b3fc1857f4265d3b, "teste599b3fc1857f4265d3b", passed, total); + RunGenEmitterTest(&Emitter::test88adf7adb474ad063424, "test88adf7adb474ad063424", passed, total); + RunGenEmitterTest(&Emitter::test0978ca6f6358ea06e024, "test0978ca6f6358ea06e024", passed, total); + RunGenEmitterTest(&Emitter::testd915f57fca4b0f6d77b4, "testd915f57fca4b0f6d77b4", passed, total); + RunGenEmitterTest(&Emitter::test1fe1f22496f2a0ffd64e, "test1fe1f22496f2a0ffd64e", passed, total); + RunGenEmitterTest(&Emitter::test76422a4077d3bdd03579, "test76422a4077d3bdd03579", passed, total); + RunGenEmitterTest(&Emitter::test92b168a497cb0c7e3144, "test92b168a497cb0c7e3144", passed, total); + RunGenEmitterTest(&Emitter::testa93925b3ae311a7f11d4, "testa93925b3ae311a7f11d4", passed, total); + RunGenEmitterTest(&Emitter::test2dd1aaf6a1c1924557d0, "test2dd1aaf6a1c1924557d0", passed, total); + RunGenEmitterTest(&Emitter::test6ec0585d0f0945ad9dae, "test6ec0585d0f0945ad9dae", passed, total); + RunGenEmitterTest(&Emitter::test7e00bca835d55844bbfe, "test7e00bca835d55844bbfe", passed, total); + RunGenEmitterTest(&Emitter::test70912c7d920a0597bbb2, "test70912c7d920a0597bbb2", passed, total); + RunGenEmitterTest(&Emitter::test16eacbf77bccde360e54, "test16eacbf77bccde360e54", passed, total); + RunGenEmitterTest(&Emitter::test556e0c86efb0716d2778, "test556e0c86efb0716d2778", passed, total); + RunGenEmitterTest(&Emitter::test71b64326d72fe100e6ad, "test71b64326d72fe100e6ad", passed, total); RunGenEmitterTest(&Emitter::test0c7bb03fbd6b52ea3ad6, "test0c7bb03fbd6b52ea3ad6", passed, total); RunGenEmitterTest(&Emitter::testb819efb5742c1176df98, "testb819efb5742c1176df98", passed, total); RunGenEmitterTest(&Emitter::test1f7b7cd5a13070c723d3, "test1f7b7cd5a13070c723d3", passed, total); @@ -418,4 +3882,192 @@ void RunGenEmitterTests(int& passed, int& total) RunGenEmitterTest(&Emitter::test29e7ff04645f56a7ea2f, "test29e7ff04645f56a7ea2f", passed, total); RunGenEmitterTest(&Emitter::testce0089a55f926d311ff4, "testce0089a55f926d311ff4", passed, total); RunGenEmitterTest(&Emitter::testd1d301bbc73ec11cd49b, "testd1d301bbc73ec11cd49b", passed, total); + RunGenEmitterTest(&Emitter::test4640bfb42711b7209ef9, "test4640bfb42711b7209ef9", passed, total); + RunGenEmitterTest(&Emitter::test1133d19fc3a4ec9fb3e8, "test1133d19fc3a4ec9fb3e8", passed, total); + RunGenEmitterTest(&Emitter::test4a6d083241180899f7ed, "test4a6d083241180899f7ed", passed, total); + RunGenEmitterTest(&Emitter::testbadb5b228a4db78efac0, "testbadb5b228a4db78efac0", passed, total); + RunGenEmitterTest(&Emitter::test5c6d607ed1ad046568e1, "test5c6d607ed1ad046568e1", passed, total); + RunGenEmitterTest(&Emitter::testac34cde109884bb6876b, "testac34cde109884bb6876b", passed, total); + RunGenEmitterTest(&Emitter::test5c19597d5336d541f990, "test5c19597d5336d541f990", passed, total); + RunGenEmitterTest(&Emitter::test39e174ed33d5508a61ce, "test39e174ed33d5508a61ce", passed, total); + RunGenEmitterTest(&Emitter::test43e26cf94441cee4a0c4, "test43e26cf94441cee4a0c4", passed, total); + RunGenEmitterTest(&Emitter::test06afa8e5b516630fc8da, "test06afa8e5b516630fc8da", passed, total); + RunGenEmitterTest(&Emitter::test4d109db0282a7797cdcb, "test4d109db0282a7797cdcb", passed, total); + RunGenEmitterTest(&Emitter::test0c1c00113c20dfa650a9, "test0c1c00113c20dfa650a9", passed, total); + RunGenEmitterTest(&Emitter::testccd7f2183f06483ee5e0, "testccd7f2183f06483ee5e0", passed, total); + RunGenEmitterTest(&Emitter::test52e25e363a17f37c296f, "test52e25e363a17f37c296f", passed, total); + RunGenEmitterTest(&Emitter::testdd81d16d3bdd8636af16, "testdd81d16d3bdd8636af16", passed, total); + RunGenEmitterTest(&Emitter::testd76e8eb5043431c3434e, "testd76e8eb5043431c3434e", passed, total); + RunGenEmitterTest(&Emitter::teste03be55aff3dc08f07a1, "teste03be55aff3dc08f07a1", passed, total); + RunGenEmitterTest(&Emitter::test8ba3e94c45f696c5027b, "test8ba3e94c45f696c5027b", passed, total); + RunGenEmitterTest(&Emitter::test90e45bcf67b89e31fd12, "test90e45bcf67b89e31fd12", passed, total); + RunGenEmitterTest(&Emitter::test0b7c4e535bfebfa3c85d, "test0b7c4e535bfebfa3c85d", passed, total); + RunGenEmitterTest(&Emitter::test3a1c08f490683d254cda, "test3a1c08f490683d254cda", passed, total); + RunGenEmitterTest(&Emitter::test926cd343d3999525d9ce, "test926cd343d3999525d9ce", passed, total); + RunGenEmitterTest(&Emitter::test1e5dd6b1e4dfb59f0346, "test1e5dd6b1e4dfb59f0346", passed, total); + RunGenEmitterTest(&Emitter::test0f064b30c1187ff2dd4b, "test0f064b30c1187ff2dd4b", passed, total); + RunGenEmitterTest(&Emitter::test58fd20c1736964e12b53, "test58fd20c1736964e12b53", passed, total); + RunGenEmitterTest(&Emitter::testbddd187d973b632dc188, "testbddd187d973b632dc188", passed, total); + RunGenEmitterTest(&Emitter::test5bc168e49ab7503fd2e1, "test5bc168e49ab7503fd2e1", passed, total); + RunGenEmitterTest(&Emitter::test712e139d81db4e14196d, "test712e139d81db4e14196d", passed, total); + RunGenEmitterTest(&Emitter::test48130bfdef5d192b888e, "test48130bfdef5d192b888e", passed, total); + RunGenEmitterTest(&Emitter::test27552de54635da852895, "test27552de54635da852895", passed, total); + RunGenEmitterTest(&Emitter::test6529691d17594d5abeb6, "test6529691d17594d5abeb6", passed, total); + RunGenEmitterTest(&Emitter::test46b8a7b9d2461d80e0c0, "test46b8a7b9d2461d80e0c0", passed, total); + RunGenEmitterTest(&Emitter::testbd1cb845de056e97a301, "testbd1cb845de056e97a301", passed, total); + RunGenEmitterTest(&Emitter::testfe1f94c842b37340db76, "testfe1f94c842b37340db76", passed, total); + RunGenEmitterTest(&Emitter::teste3c7fbf8af4d82e891e3, "teste3c7fbf8af4d82e891e3", passed, total); + RunGenEmitterTest(&Emitter::testd6800d90d6d037d02ace, "testd6800d90d6d037d02ace", passed, total); + RunGenEmitterTest(&Emitter::testdf987230fa431b7a8f1b, "testdf987230fa431b7a8f1b", passed, total); + RunGenEmitterTest(&Emitter::testcd22b774448a8b15345e, "testcd22b774448a8b15345e", passed, total); + RunGenEmitterTest(&Emitter::test591a370a1ce302d23688, "test591a370a1ce302d23688", passed, total); + RunGenEmitterTest(&Emitter::test5e56c5800a9f2c4591ff, "test5e56c5800a9f2c4591ff", passed, total); + RunGenEmitterTest(&Emitter::test72f6d368cc2f52b488bd, "test72f6d368cc2f52b488bd", passed, total); + RunGenEmitterTest(&Emitter::test6786da34791cbab71591, "test6786da34791cbab71591", passed, total); + RunGenEmitterTest(&Emitter::test6d53136f35632180e2e8, "test6d53136f35632180e2e8", passed, total); + RunGenEmitterTest(&Emitter::test01020a01f84721d7fb07, "test01020a01f84721d7fb07", passed, total); + RunGenEmitterTest(&Emitter::testc3ab223703ef17e47ec7, "testc3ab223703ef17e47ec7", passed, total); + RunGenEmitterTest(&Emitter::test033db6218db214ae5ef9, "test033db6218db214ae5ef9", passed, total); + RunGenEmitterTest(&Emitter::test38fe09343ac97f51b38f, "test38fe09343ac97f51b38f", passed, total); + RunGenEmitterTest(&Emitter::test99eb29693d619703a052, "test99eb29693d619703a052", passed, total); + RunGenEmitterTest(&Emitter::teste9e58998a49132e15fb4, "teste9e58998a49132e15fb4", passed, total); + RunGenEmitterTest(&Emitter::testc1b4fba9280329b30583, "testc1b4fba9280329b30583", passed, total); + RunGenEmitterTest(&Emitter::test2f8651438d44de183d22, "test2f8651438d44de183d22", passed, total); + RunGenEmitterTest(&Emitter::test4c506bf0bc7a972cb62d, "test4c506bf0bc7a972cb62d", passed, total); + RunGenEmitterTest(&Emitter::test6a42214b8698a0e87f5f, "test6a42214b8698a0e87f5f", passed, total); + RunGenEmitterTest(&Emitter::teste0b5020ccbc0cbc7f699, "teste0b5020ccbc0cbc7f699", passed, total); + RunGenEmitterTest(&Emitter::test3fb453ac1de7a2d37a16, "test3fb453ac1de7a2d37a16", passed, total); + RunGenEmitterTest(&Emitter::test4d3236ecd88c5faa74e8, "test4d3236ecd88c5faa74e8", passed, total); + RunGenEmitterTest(&Emitter::test116230234c38c68eb060, "test116230234c38c68eb060", passed, total); + RunGenEmitterTest(&Emitter::testb7c63d73350b11bf4a56, "testb7c63d73350b11bf4a56", passed, total); + RunGenEmitterTest(&Emitter::test26ae0a3b97fb1c7743bf, "test26ae0a3b97fb1c7743bf", passed, total); + RunGenEmitterTest(&Emitter::testeabf01d5500c4f5c9de5, "testeabf01d5500c4f5c9de5", passed, total); + RunGenEmitterTest(&Emitter::testf9195cd2fb4c57783870, "testf9195cd2fb4c57783870", passed, total); + RunGenEmitterTest(&Emitter::test8c7159f70888a6c5548e, "test8c7159f70888a6c5548e", passed, total); + RunGenEmitterTest(&Emitter::testba96c9cdf5e82c9ebd0f, "testba96c9cdf5e82c9ebd0f", passed, total); + RunGenEmitterTest(&Emitter::test6cbb2232cc1e43752958, "test6cbb2232cc1e43752958", passed, total); + RunGenEmitterTest(&Emitter::test2bc126cc8be9e3d0a5bb, "test2bc126cc8be9e3d0a5bb", passed, total); + RunGenEmitterTest(&Emitter::testb053b9b6ee7c7eecc798, "testb053b9b6ee7c7eecc798", passed, total); + RunGenEmitterTest(&Emitter::testda8339179085c81ac7a9, "testda8339179085c81ac7a9", passed, total); + RunGenEmitterTest(&Emitter::testf38e7a065a9bda416bf0, "testf38e7a065a9bda416bf0", passed, total); + RunGenEmitterTest(&Emitter::test5345180f2a8a65af5b72, "test5345180f2a8a65af5b72", passed, total); + RunGenEmitterTest(&Emitter::test7aee5968853276b78e65, "test7aee5968853276b78e65", passed, total); + RunGenEmitterTest(&Emitter::test1c20b15f6680fd1fa304, "test1c20b15f6680fd1fa304", passed, total); + RunGenEmitterTest(&Emitter::test3ad355d8aa94a80ed9d0, "test3ad355d8aa94a80ed9d0", passed, total); + RunGenEmitterTest(&Emitter::test717b89ec9b7b004e5c17, "test717b89ec9b7b004e5c17", passed, total); + RunGenEmitterTest(&Emitter::testc540c8d6d92913953ef8, "testc540c8d6d92913953ef8", passed, total); + RunGenEmitterTest(&Emitter::test805391f6964c07b1fc51, "test805391f6964c07b1fc51", passed, total); + RunGenEmitterTest(&Emitter::testafc978dbd9b5d8005968, "testafc978dbd9b5d8005968", passed, total); + RunGenEmitterTest(&Emitter::testf137897e42e659d45548, "testf137897e42e659d45548", passed, total); + RunGenEmitterTest(&Emitter::test41c10a5f012922d6d240, "test41c10a5f012922d6d240", passed, total); + RunGenEmitterTest(&Emitter::test6d46af9b0e1bab6eefd2, "test6d46af9b0e1bab6eefd2", passed, total); + RunGenEmitterTest(&Emitter::test6908c1e71bca5b5a09b6, "test6908c1e71bca5b5a09b6", passed, total); + RunGenEmitterTest(&Emitter::test158d6160ee94d7f929c0, "test158d6160ee94d7f929c0", passed, total); + RunGenEmitterTest(&Emitter::test07186666318de7b13975, "test07186666318de7b13975", passed, total); + RunGenEmitterTest(&Emitter::testdcb6011d1dbc47e024b4, "testdcb6011d1dbc47e024b4", passed, total); + RunGenEmitterTest(&Emitter::test998e6b11c32e19f91a43, "test998e6b11c32e19f91a43", passed, total); + RunGenEmitterTest(&Emitter::test7b009b420c34f753e2dc, "test7b009b420c34f753e2dc", passed, total); + RunGenEmitterTest(&Emitter::testba4c5b4eedf23c16ab44, "testba4c5b4eedf23c16ab44", passed, total); + RunGenEmitterTest(&Emitter::test022d120061a5c77c6640, "test022d120061a5c77c6640", passed, total); + RunGenEmitterTest(&Emitter::testeb346f4b70732835631f, "testeb346f4b70732835631f", passed, total); + RunGenEmitterTest(&Emitter::testade70114082f144726ee, "testade70114082f144726ee", passed, total); + RunGenEmitterTest(&Emitter::testf2b68aae6173ab6ad66d, "testf2b68aae6173ab6ad66d", passed, total); + RunGenEmitterTest(&Emitter::teste9a962c26a72ea4d3f8d, "teste9a962c26a72ea4d3f8d", passed, total); + RunGenEmitterTest(&Emitter::testa9603ff993f8a8d47b5d, "testa9603ff993f8a8d47b5d", passed, total); + RunGenEmitterTest(&Emitter::test2b70cf1579b37e0fb086, "test2b70cf1579b37e0fb086", passed, total); + RunGenEmitterTest(&Emitter::test3790d77103bac72dc302, "test3790d77103bac72dc302", passed, total); + RunGenEmitterTest(&Emitter::testadfa25cb2fd5a9346102, "testadfa25cb2fd5a9346102", passed, total); + RunGenEmitterTest(&Emitter::test9764ad298ba1fe9ecfa8, "test9764ad298ba1fe9ecfa8", passed, total); + RunGenEmitterTest(&Emitter::test22f20fac5e02211edadc, "test22f20fac5e02211edadc", passed, total); + RunGenEmitterTest(&Emitter::test8b3b22c8ffd679b15623, "test8b3b22c8ffd679b15623", passed, total); + RunGenEmitterTest(&Emitter::test438d1581dec9088389d7, "test438d1581dec9088389d7", passed, total); + RunGenEmitterTest(&Emitter::test0b417297c8e11f038c7c, "test0b417297c8e11f038c7c", passed, total); + RunGenEmitterTest(&Emitter::testa3686f0b87652d4640c2, "testa3686f0b87652d4640c2", passed, total); + RunGenEmitterTest(&Emitter::testd6f021791f2162c85174, "testd6f021791f2162c85174", passed, total); + RunGenEmitterTest(&Emitter::test3d34018a42371ab9fbcd, "test3d34018a42371ab9fbcd", passed, total); + RunGenEmitterTest(&Emitter::test7a9287f053731d912e63, "test7a9287f053731d912e63", passed, total); + RunGenEmitterTest(&Emitter::testa9aa047a659d330a4a8b, "testa9aa047a659d330a4a8b", passed, total); + RunGenEmitterTest(&Emitter::test74e66203a050c2ce6c17, "test74e66203a050c2ce6c17", passed, total); + RunGenEmitterTest(&Emitter::test7338d0bbe29dd57fab54, "test7338d0bbe29dd57fab54", passed, total); + RunGenEmitterTest(&Emitter::testbd4f6be8cdb35c6f251d, "testbd4f6be8cdb35c6f251d", passed, total); + RunGenEmitterTest(&Emitter::test8f0d1345830b83dfc1b7, "test8f0d1345830b83dfc1b7", passed, total); + RunGenEmitterTest(&Emitter::testa4e1c63bc2832a9ffb90, "testa4e1c63bc2832a9ffb90", passed, total); + RunGenEmitterTest(&Emitter::test9d5abf8cc60b9bd0d314, "test9d5abf8cc60b9bd0d314", passed, total); + RunGenEmitterTest(&Emitter::test332175e66c385ed1a97e, "test332175e66c385ed1a97e", passed, total); + RunGenEmitterTest(&Emitter::test34238765b14f93c81e57, "test34238765b14f93c81e57", passed, total); + RunGenEmitterTest(&Emitter::test10797ce06190a3866a08, "test10797ce06190a3866a08", passed, total); + RunGenEmitterTest(&Emitter::teste92cd495aff9e502a1ca, "teste92cd495aff9e502a1ca", passed, total); + RunGenEmitterTest(&Emitter::testf02ffda4a54ad1390ab6, "testf02ffda4a54ad1390ab6", passed, total); + RunGenEmitterTest(&Emitter::test252e5030af4f0ab7bf2b, "test252e5030af4f0ab7bf2b", passed, total); + RunGenEmitterTest(&Emitter::testfe3d96e64a5db1098e2d, "testfe3d96e64a5db1098e2d", passed, total); + RunGenEmitterTest(&Emitter::test94c9f1a9c03f970dde84, "test94c9f1a9c03f970dde84", passed, total); + RunGenEmitterTest(&Emitter::testd16f010f550e384c3e59, "testd16f010f550e384c3e59", passed, total); + RunGenEmitterTest(&Emitter::test9b6529d7a517cd7dbc13, "test9b6529d7a517cd7dbc13", passed, total); + RunGenEmitterTest(&Emitter::test706fdc6bcd111cd4de81, "test706fdc6bcd111cd4de81", passed, total); + RunGenEmitterTest(&Emitter::test7ce41e86a2afa55d59d7, "test7ce41e86a2afa55d59d7", passed, total); + RunGenEmitterTest(&Emitter::test14aebe584c51e7c2a682, "test14aebe584c51e7c2a682", passed, total); + RunGenEmitterTest(&Emitter::testb9987fabfcd184f82c65, "testb9987fabfcd184f82c65", passed, total); + RunGenEmitterTest(&Emitter::testbe1a5e58793366c0c07a, "testbe1a5e58793366c0c07a", passed, total); + RunGenEmitterTest(&Emitter::test1eac7fa4e151174d20c5, "test1eac7fa4e151174d20c5", passed, total); + RunGenEmitterTest(&Emitter::test5a372a31cdbea0111962, "test5a372a31cdbea0111962", passed, total); + RunGenEmitterTest(&Emitter::testcc1a35b80f0b02e1255e, "testcc1a35b80f0b02e1255e", passed, total); + RunGenEmitterTest(&Emitter::testb04cc0e338c9b30cffa3, "testb04cc0e338c9b30cffa3", passed, total); + RunGenEmitterTest(&Emitter::testb0a82e7bf3b5bdebdd9c, "testb0a82e7bf3b5bdebdd9c", passed, total); + RunGenEmitterTest(&Emitter::test0d883c1652c0b59e6643, "test0d883c1652c0b59e6643", passed, total); + RunGenEmitterTest(&Emitter::testa38bc626fc7e3454333b, "testa38bc626fc7e3454333b", passed, total); + RunGenEmitterTest(&Emitter::test8bea94aa1202a12d9ae9, "test8bea94aa1202a12d9ae9", passed, total); + RunGenEmitterTest(&Emitter::test24a263a0eb80caaaea4b, "test24a263a0eb80caaaea4b", passed, total); + RunGenEmitterTest(&Emitter::testb86b045d63884140fd1d, "testb86b045d63884140fd1d", passed, total); + RunGenEmitterTest(&Emitter::test9d261e666ae24a9cfc70, "test9d261e666ae24a9cfc70", passed, total); + RunGenEmitterTest(&Emitter::test331919d746512b1bd2dd, "test331919d746512b1bd2dd", passed, total); + RunGenEmitterTest(&Emitter::test58b5cb1c0a14ca820fa0, "test58b5cb1c0a14ca820fa0", passed, total); + RunGenEmitterTest(&Emitter::testfcc5a2d53d8b78bff00e, "testfcc5a2d53d8b78bff00e", passed, total); + RunGenEmitterTest(&Emitter::test4e18e90b6551c4af46b7, "test4e18e90b6551c4af46b7", passed, total); + RunGenEmitterTest(&Emitter::testfd0cdd7da5ea80def96c, "testfd0cdd7da5ea80def96c", passed, total); + RunGenEmitterTest(&Emitter::test31fa2c218bc9f47d31b5, "test31fa2c218bc9f47d31b5", passed, total); + RunGenEmitterTest(&Emitter::test486f1defd8f55e9519a9, "test486f1defd8f55e9519a9", passed, total); + RunGenEmitterTest(&Emitter::testbd67707be3be50792791, "testbd67707be3be50792791", passed, total); + RunGenEmitterTest(&Emitter::test1a5d67d4591ad4c8d1e7, "test1a5d67d4591ad4c8d1e7", passed, total); + RunGenEmitterTest(&Emitter::testd1b42a0d7e5156b00706, "testd1b42a0d7e5156b00706", passed, total); + RunGenEmitterTest(&Emitter::test120e16514220d9f1b114, "test120e16514220d9f1b114", passed, total); + RunGenEmitterTest(&Emitter::testf3200a3148254d3357d3, "testf3200a3148254d3357d3", passed, total); + RunGenEmitterTest(&Emitter::test291bb8d225b135c1f926, "test291bb8d225b135c1f926", passed, total); + RunGenEmitterTest(&Emitter::testd89446599f31a400dcec, "testd89446599f31a400dcec", passed, total); + RunGenEmitterTest(&Emitter::test10810f50a49dfe065bfa, "test10810f50a49dfe065bfa", passed, total); + RunGenEmitterTest(&Emitter::testb1f754216d575a8cc3af, "testb1f754216d575a8cc3af", passed, total); + RunGenEmitterTest(&Emitter::testb9d82396ef66bed18aed, "testb9d82396ef66bed18aed", passed, total); + RunGenEmitterTest(&Emitter::test5469f77f98702583e6ea, "test5469f77f98702583e6ea", passed, total); + RunGenEmitterTest(&Emitter::testea4d055788f9af327d2e, "testea4d055788f9af327d2e", passed, total); + RunGenEmitterTest(&Emitter::test08ac3b6e6f8814cdc77a, "test08ac3b6e6f8814cdc77a", passed, total); + RunGenEmitterTest(&Emitter::test9e8e5ac1687da916f607, "test9e8e5ac1687da916f607", passed, total); + RunGenEmitterTest(&Emitter::test6265b47bba1fd6839697, "test6265b47bba1fd6839697", passed, total); + RunGenEmitterTest(&Emitter::testa78aad03d3d6c0cd9810, "testa78aad03d3d6c0cd9810", passed, total); + RunGenEmitterTest(&Emitter::test050fb21ac4e0ec123acc, "test050fb21ac4e0ec123acc", passed, total); + RunGenEmitterTest(&Emitter::test41e74fd70f88555712db, "test41e74fd70f88555712db", passed, total); + RunGenEmitterTest(&Emitter::testc066eeba93b49bfd475e, "testc066eeba93b49bfd475e", passed, total); + RunGenEmitterTest(&Emitter::testba918d828779830ff775, "testba918d828779830ff775", passed, total); + RunGenEmitterTest(&Emitter::test9fc69104bdb595977460, "test9fc69104bdb595977460", passed, total); + RunGenEmitterTest(&Emitter::test0dd65e43cc41ad032d71, "test0dd65e43cc41ad032d71", passed, total); + RunGenEmitterTest(&Emitter::test324295b9fb6b58411e30, "test324295b9fb6b58411e30", passed, total); + RunGenEmitterTest(&Emitter::test8aebc8d0e0485dfeb252, "test8aebc8d0e0485dfeb252", passed, total); + RunGenEmitterTest(&Emitter::testd222de940e9a99d43cdd, "testd222de940e9a99d43cdd", passed, total); + RunGenEmitterTest(&Emitter::test9b7e3c531ced5ced7f08, "test9b7e3c531ced5ced7f08", passed, total); + RunGenEmitterTest(&Emitter::testcfc4d3d407725683e731, "testcfc4d3d407725683e731", passed, total); + RunGenEmitterTest(&Emitter::test76848f10a77db08e038e, "test76848f10a77db08e038e", passed, total); + RunGenEmitterTest(&Emitter::testa4c728e62357ca05c45c, "testa4c728e62357ca05c45c", passed, total); + RunGenEmitterTest(&Emitter::test666ae3bb483cb7d83170, "test666ae3bb483cb7d83170", passed, total); + RunGenEmitterTest(&Emitter::test6ec557a6e48fd6900cb1, "test6ec557a6e48fd6900cb1", passed, total); + RunGenEmitterTest(&Emitter::test18a5d0db57d08d737b99, "test18a5d0db57d08d737b99", passed, total); + RunGenEmitterTest(&Emitter::testd974ded8f39d6b77c0a1, "testd974ded8f39d6b77c0a1", passed, total); + RunGenEmitterTest(&Emitter::test6c6d47297f6ea03c588b, "test6c6d47297f6ea03c588b", passed, total); + RunGenEmitterTest(&Emitter::testfb543650c644777c82ec, "testfb543650c644777c82ec", passed, total); + RunGenEmitterTest(&Emitter::test85cf601a990a9689b6c2, "test85cf601a990a9689b6c2", passed, total); + RunGenEmitterTest(&Emitter::testae2c05021a270e7e6ce6, "testae2c05021a270e7e6ce6", passed, total); + RunGenEmitterTest(&Emitter::testceebe4a07ec516cb5a7a, "testceebe4a07ec516cb5a7a", passed, total); + RunGenEmitterTest(&Emitter::test1a2b24646720aa998cbb, "test1a2b24646720aa998cbb", passed, total); + RunGenEmitterTest(&Emitter::testf415efe81b5c2c8112a2, "testf415efe81b5c2c8112a2", passed, total); + RunGenEmitterTest(&Emitter::test0f1b297a0cb08c094411, "test0f1b297a0cb08c094411", passed, total); + RunGenEmitterTest(&Emitter::test1b49cc3347751dcb09a9, "test1b49cc3347751dcb09a9", passed, total); + RunGenEmitterTest(&Emitter::testffe72c176661d48910bd, "testffe72c176661d48910bd", passed, total); + RunGenEmitterTest(&Emitter::testf3f2d1d0e79f326b3d2f, "testf3f2d1d0e79f326b3d2f", passed, total); } From 1ab9469f10606828487ce978f69ae8b0ba15155d Mon Sep 17 00:00:00 2001 From: Jesse Beder Date: Wed, 23 May 2012 11:16:32 -0500 Subject: [PATCH 61/65] Added map/seq gen emitter tests, including some failing ones --- test/create-emitter-tests.py | 27 + test/genemittertests.h | 3826 ++++++++++++++++++++++++++++++++++ 2 files changed, 3853 insertions(+) diff --git a/test/create-emitter-tests.py b/test/create-emitter-tests.py index e31c2ce..96cab29 100644 --- a/test/create-emitter-tests.py +++ b/test/create-emitter-tests.py @@ -68,6 +68,22 @@ def seq_start(tag='', anchor='', anchor_id=0): def seq_end(): return {'emit': 'YAML::EndSeq', 'handle': 'SEQ_END()'} +def map_start(tag='', anchor='', anchor_id=0): + emit = [] + if tag: + emit += ['YAML::VerbatimTag("%s")' % encode(tag)] + if anchor: + emit += ['YAML::Anchor("%s")' % encode(anchor)] + if tag: + out_tag = encode(tag) + else: + out_tag = '?' + emit += ['YAML::BeginMap'] + return {'emit': emit, 'handle': 'MAP_START("%s", %s)' % (out_tag, anchor_id)} + +def map_end(): + return {'emit': 'YAML::EndMap', 'handle': 'MAP_END()'} + def gen_templates(): yield [[doc_start(), doc_start(True)], [scalar('foo'), scalar('foo\n'), scalar('foo', 'tag'), scalar('foo', '', 'anchor', 1)], @@ -77,6 +93,17 @@ def gen_templates(): [[], [scalar('foo')], [scalar('foo', 'tag')], [scalar('foo', '', 'anchor', 1)], [scalar('foo', 'tag', 'anchor', 1)], [scalar('foo'), scalar('bar')], [scalar('foo', 'tag', 'anchor', 1), scalar('bar', 'tag', 'other', 2)]], [seq_end()], [doc_end(), doc_end(True)]] + yield [[doc_start(), doc_start(True)], + [map_start()], + [[], [scalar('foo'), scalar('bar')], [scalar('foo', 'tag', 'anchor', 1), scalar('bar', 'tag', 'other', 2)]], + [map_end()], + [doc_end(), doc_end(True)]] + yield [[doc_start(True)], + [map_start()], + [[scalar('foo')], [seq_start(), scalar('foo'), seq_end()], [map_start(), scalar('foo'), scalar('bar'), map_end()]], + [[scalar('foo')], [seq_start(), scalar('foo'), seq_end()], [map_start(), scalar('foo'), scalar('bar'), map_end()]], + [map_end()], + [doc_end(True)]] def expand(template): if len(template) == 0: diff --git a/test/genemittertests.h b/test/genemittertests.h index fea8573..0bf13d9 100644 --- a/test/genemittertests.h +++ b/test/genemittertests.h @@ -3831,6 +3831,3663 @@ TEST testf3f2d1d0e79f326b3d2f(YAML::Emitter& out) EXPECT_DOC_END(); DONE(); } +TEST testeb66a6725a958bb76923(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginDoc; + out << YAML::BeginMap; + out << YAML::EndMap; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test0a8fc83bac630f116c86(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::Comment("comment"); + out << YAML::BeginMap; + out << YAML::EndMap; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test6c62ccca61f383967d91(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::BeginMap; + out << YAML::Comment("comment"); + out << YAML::EndMap; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test6ba9e6495bef38087e7f(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::BeginMap; + out << YAML::EndMap; + out << YAML::Comment("comment"); + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test643e77d887ec7390c1c9(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::BeginMap; + out << YAML::EndMap; + out << YAML::EndDoc; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testa9725ffe34acd33603c4(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginDoc; + out << YAML::BeginMap; + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test1a65df7ae90ac6ba1f22(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::Comment("comment"); + out << YAML::BeginMap; + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test7f982251b9a09ebb1059(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::BeginMap; + out << YAML::Comment("comment"); + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test4b2138b3eafc346d6bd3(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::BeginMap; + out << YAML::EndMap; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testa316e26e6b940d585005(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::BeginMap; + out << YAML::EndMap; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testda2e0d2a6fd2a83cb298(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginDoc; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test54aac276524c0baaecd1(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::Comment("comment"); + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testd1fb3fd39f4a2fda5c6a(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::BeginMap; + out << YAML::Comment("comment"); + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test4aaf20817b31a62e905f(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::BeginMap; + out << "foo"; + out << YAML::Comment("comment"); + out << "bar"; + out << YAML::EndMap; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test446f00cbeee81a34d936(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::Comment("comment"); + out << YAML::EndMap; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testb13663976ee52dac5370(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::Comment("comment"); + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testd245994f89c881efef06(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::EndDoc; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testb6e7c5ee86f3c0559fe3(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginDoc; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testee28e38a088388ee5d9f(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::Comment("comment"); + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test9b40d68cb65d34934b50(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::BeginMap; + out << YAML::Comment("comment"); + out << "foo"; + out << "bar"; + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test045fac0048d3cfc15d88(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::BeginMap; + out << "foo"; + out << YAML::Comment("comment"); + out << "bar"; + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test85c3ad95991be29b3aff(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::Comment("comment"); + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test2abfed1da9a2ab365c18(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testa999e4a9d0199bf463ec(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test8452a26a810950ad47b2(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginDoc; + out << YAML::BeginMap; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("other"); + out << "bar"; + out << YAML::EndMap; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("tag", 1, "foo"); + EXPECT_SCALAR("tag", 2, "bar"); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test1e2b3a261f435a0f6316(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::Comment("comment"); + out << YAML::BeginMap; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("other"); + out << "bar"; + out << YAML::EndMap; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("tag", 1, "foo"); + EXPECT_SCALAR("tag", 2, "bar"); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test1423ee4cd0795e6ef646(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::BeginMap; + out << YAML::Comment("comment"); + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("other"); + out << "bar"; + out << YAML::EndMap; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("tag", 1, "foo"); + EXPECT_SCALAR("tag", 2, "bar"); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testf95070e81f8def8ceec9(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::BeginMap; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::Comment("comment"); + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("other"); + out << "bar"; + out << YAML::EndMap; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("tag", 1, "foo"); + EXPECT_SCALAR("tag", 2, "bar"); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testf533a12940040f665761(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::BeginMap; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("other"); + out << "bar"; + out << YAML::Comment("comment"); + out << YAML::EndMap; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("tag", 1, "foo"); + EXPECT_SCALAR("tag", 2, "bar"); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test51bd09a609a537b79c8a(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::BeginMap; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("other"); + out << "bar"; + out << YAML::EndMap; + out << YAML::Comment("comment"); + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("tag", 1, "foo"); + EXPECT_SCALAR("tag", 2, "bar"); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testc10b994394aa86a1789b(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::BeginMap; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("other"); + out << "bar"; + out << YAML::EndMap; + out << YAML::EndDoc; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("tag", 1, "foo"); + EXPECT_SCALAR("tag", 2, "bar"); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testc5de3511ef8fa1e5841e(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginDoc; + out << YAML::BeginMap; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("other"); + out << "bar"; + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("tag", 1, "foo"); + EXPECT_SCALAR("tag", 2, "bar"); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test0e957613f266e5693f83(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::Comment("comment"); + out << YAML::BeginMap; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("other"); + out << "bar"; + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("tag", 1, "foo"); + EXPECT_SCALAR("tag", 2, "bar"); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testf36b8fb2ec772e02a48c(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::BeginMap; + out << YAML::Comment("comment"); + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("other"); + out << "bar"; + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("tag", 1, "foo"); + EXPECT_SCALAR("tag", 2, "bar"); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test249b4ee9b0e6936bdfcf(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::BeginMap; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::Comment("comment"); + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("other"); + out << "bar"; + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("tag", 1, "foo"); + EXPECT_SCALAR("tag", 2, "bar"); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testdae669b09d29d1d05e81(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::BeginMap; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("other"); + out << "bar"; + out << YAML::Comment("comment"); + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("tag", 1, "foo"); + EXPECT_SCALAR("tag", 2, "bar"); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testa3645755a60c69fe8af4(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::BeginMap; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("other"); + out << "bar"; + out << YAML::EndMap; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("tag", 1, "foo"); + EXPECT_SCALAR("tag", 2, "bar"); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test5500c0af0cbb6a8efc04(YAML::Emitter& out) +{ + out << YAML::BeginDoc; + out << YAML::BeginMap; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("other"); + out << "bar"; + out << YAML::EndMap; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("tag", 1, "foo"); + EXPECT_SCALAR("tag", 2, "bar"); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test6528fe35c2b993cbd28b(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginMap; + out << YAML::EndMap; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test072a41bf81e5b4dcd7d2(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginMap; + out << YAML::EndMap; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test3b47e24ba197ca8f686b(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << YAML::Comment("comment"); + out << YAML::EndMap; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test938c1c274b5ebf36c6b2(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << YAML::EndMap; + out << YAML::Comment("comment"); + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testeea818614d4fbef183a8(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << YAML::EndMap; + out << YAML::EndDoc; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test18533eabe468baceac59(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginMap; + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST teste239cd01ef68ce26375d(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginMap; + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testd3a9b36f8218cd633402(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << YAML::Comment("comment"); + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testa899f4512569981104e8(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << YAML::EndMap; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test230a8fd0d19c5e15963b(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << YAML::EndMap; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test4fa431a3bea1c616f8d0(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testdd05d8f0df4f1ba79b8f(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test0cb381d8a384434a2646(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << YAML::Comment("comment"); + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testeadefbe24693d510ac03(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << "foo"; + out << YAML::Comment("comment"); + out << "bar"; + out << YAML::EndMap; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test0b43e898410a9da3db1a(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::Comment("comment"); + out << YAML::EndMap; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test450ed0f6d19326bab043(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::Comment("comment"); + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test38b7c3f09ffb6f4e73a5(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::EndDoc; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testab434195f62ee39997ae(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testdce4c351d6c426d24f14(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test2363249f46e86ae9bd64(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << YAML::Comment("comment"); + out << "foo"; + out << "bar"; + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test6225a910ac0a5ce7304f(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << "foo"; + out << YAML::Comment("comment"); + out << "bar"; + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testf7898be54854e4587c54(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::Comment("comment"); + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test1ab55f98773e2e58c659(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testf116d0bf1446d5e989db(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test90df709c20ab5305b5b0(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginMap; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("other"); + out << "bar"; + out << YAML::EndMap; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("tag", 1, "foo"); + EXPECT_SCALAR("tag", 2, "bar"); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test37e041f7726819b98004(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginMap; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("other"); + out << "bar"; + out << YAML::EndMap; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("tag", 1, "foo"); + EXPECT_SCALAR("tag", 2, "bar"); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test5c13c8d0762eb77abbbe(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << YAML::Comment("comment"); + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("other"); + out << "bar"; + out << YAML::EndMap; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("tag", 1, "foo"); + EXPECT_SCALAR("tag", 2, "bar"); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test3c9ec0009e080492d6a0(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::Comment("comment"); + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("other"); + out << "bar"; + out << YAML::EndMap; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("tag", 1, "foo"); + EXPECT_SCALAR("tag", 2, "bar"); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testd016b2610a9701c799be(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("other"); + out << "bar"; + out << YAML::Comment("comment"); + out << YAML::EndMap; + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("tag", 1, "foo"); + EXPECT_SCALAR("tag", 2, "bar"); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test12e858bf6ec981811cc8(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("other"); + out << "bar"; + out << YAML::EndMap; + out << YAML::Comment("comment"); + out << YAML::EndDoc; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("tag", 1, "foo"); + EXPECT_SCALAR("tag", 2, "bar"); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test0e09fd8b6ac12a309a36(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("other"); + out << "bar"; + out << YAML::EndMap; + out << YAML::EndDoc; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("tag", 1, "foo"); + EXPECT_SCALAR("tag", 2, "bar"); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testca30dc12961feab24a33(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginMap; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("other"); + out << "bar"; + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("tag", 1, "foo"); + EXPECT_SCALAR("tag", 2, "bar"); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test162ca62af5cdf9d02507(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginMap; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("other"); + out << "bar"; + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("tag", 1, "foo"); + EXPECT_SCALAR("tag", 2, "bar"); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST teste3a7658df7a81c1ce8e5(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << YAML::Comment("comment"); + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("other"); + out << "bar"; + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("tag", 1, "foo"); + EXPECT_SCALAR("tag", 2, "bar"); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test9dac5e4f0e78f96fcaad(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::Comment("comment"); + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("other"); + out << "bar"; + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("tag", 1, "foo"); + EXPECT_SCALAR("tag", 2, "bar"); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testaf2e952791b73c6bf78c(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("other"); + out << "bar"; + out << YAML::Comment("comment"); + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("tag", 1, "foo"); + EXPECT_SCALAR("tag", 2, "bar"); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test82b161574e0926b9c854(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("other"); + out << "bar"; + out << YAML::EndMap; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("tag", 1, "foo"); + EXPECT_SCALAR("tag", 2, "bar"); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test13c3f29be0e6b7bc92b1(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("anchor"); + out << "foo"; + out << YAML::VerbatimTag("tag"); + out << YAML::Anchor("other"); + out << "bar"; + out << YAML::EndMap; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("tag", 1, "foo"); + EXPECT_SCALAR("tag", 2, "bar"); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST teste87c7e9ce16fd2ac5f0e(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginMap; + out << "foo"; + out << "foo"; + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testeed7f7f244221932d32f(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginMap; + out << "foo"; + out << "foo"; + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test31a5563bfa532571339f(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << YAML::Comment("comment"); + out << "foo"; + out << "foo"; + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test502ab92aab5195ff4759(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << "foo"; + out << YAML::Comment("comment"); + out << "foo"; + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testdbe2ce5bc02435009b2c(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << "foo"; + out << "foo"; + out << YAML::Comment("comment"); + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test06b8d2cc9bbb233d55d5(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << "foo"; + out << "foo"; + out << YAML::EndMap; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test9adf48ae5d6dff37e89a(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << "foo"; + out << "foo"; + out << YAML::EndMap; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test398282871dcc1c7f8dbe(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginMap; + out << "foo"; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test2e2b3c35732210898be1(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginMap; + out << "foo"; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test155697ae715940b6d804(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << YAML::Comment("comment"); + out << "foo"; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testb01c87881d846bb10ecd(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << "foo"; + out << YAML::Comment("comment"); + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test84a9d3d2ae4eaacc9c98(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << "foo"; + out << YAML::BeginSeq; + out << YAML::Comment("comment"); + out << "foo"; + out << YAML::EndSeq; + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testb836cd5dc876cf6eb204(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << "foo"; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::Comment("comment"); + out << YAML::EndSeq; + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test4aa81dc715c5e5c53de1(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << "foo"; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::Comment("comment"); + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testfa8ba9d405de1af93537(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << "foo"; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::EndMap; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test3c07c460dae114d3f278(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << "foo"; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::EndMap; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testf513330011b92283e713(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginMap; + out << "foo"; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test88667a8fe856748b4dc6(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginMap; + out << "foo"; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test7cbc7ae88a6b60d3cb54(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << YAML::Comment("comment"); + out << "foo"; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test8b126d00ee878273f3e9(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << "foo"; + out << YAML::Comment("comment"); + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test414dcec883b2fb2668d9(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << "foo"; + out << YAML::BeginMap; + out << YAML::Comment("comment"); + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test41754fe2ab40560f1afe(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << "foo"; + out << YAML::BeginMap; + out << "foo"; + out << YAML::Comment("comment"); + out << "bar"; + out << YAML::EndMap; + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test39b7a9ee0ccb5580ef60(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << "foo"; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::Comment("comment"); + out << YAML::EndMap; + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test1f4cbfdb2f53d041fb74(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << "foo"; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::Comment("comment"); + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testc20612e8922a8eeba24d(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << "foo"; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::EndMap; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test693f48133cf726f1e05c(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << "foo"; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::EndMap; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test12b26bfed7a24736dd8b(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginMap; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << "foo"; + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test41d6ec7f045897841e9c(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginMap; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << "foo"; + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test2bc8d1d6e4ec042ede3e(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << YAML::Comment("comment"); + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << "foo"; + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test647ff876c844ad7540ff(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << YAML::BeginSeq; + out << YAML::Comment("comment"); + out << "foo"; + out << YAML::EndSeq; + out << "foo"; + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test844c1bcb896dde8ea51b(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::Comment("comment"); + out << YAML::EndSeq; + out << "foo"; + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testbcf04a5174e8505d1891(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::Comment("comment"); + out << "foo"; + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testdb6c8ca130035d7a271f(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << "foo"; + out << YAML::Comment("comment"); + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testa0db96f3d93a255f2201(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << "foo"; + out << YAML::EndMap; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test4fb3eaac714942122715(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << "foo"; + out << YAML::EndMap; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test634678f31daa20127d6c(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginMap; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test1dd395a1149e46dcc208(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginMap; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testebc585cbde90d10a0af1(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << YAML::Comment("comment"); + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testd1ecec189e73f8932485(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << YAML::BeginSeq; + out << YAML::Comment("comment"); + out << "foo"; + out << YAML::EndSeq; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testf8fc72597f0a41b22daa(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::Comment("comment"); + out << YAML::EndSeq; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testd01959c5c228946c8759(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::Comment("comment"); + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST teste8236a9672d9244ca486(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::BeginSeq; + out << YAML::Comment("comment"); + out << "foo"; + out << YAML::EndSeq; + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test22bd5d24dbd3f0670f97(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::Comment("comment"); + out << YAML::EndSeq; + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test0f2c6cac0ce0e624eb08(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::Comment("comment"); + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test2ed2eef7f03696ca3c94(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::EndMap; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test6fe33177e10d14328a14(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::EndMap; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test0ea79e93c3439d90bdb8(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginMap; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test2ab970621d7e037153c9(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginMap; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test4229059ec3d639faf4b2(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << YAML::Comment("comment"); + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test6df809b4712b73c8577f(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << YAML::BeginSeq; + out << YAML::Comment("comment"); + out << "foo"; + out << YAML::EndSeq; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test37a0a34b2bef743d8241(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::Comment("comment"); + out << YAML::EndSeq; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testd6c37c1e50617419a37d(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::Comment("comment"); + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test2fb71689fb176533159c(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::BeginMap; + out << YAML::Comment("comment"); + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testa91d7999dd9b43fb5827(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::BeginMap; + out << "foo"; + out << YAML::Comment("comment"); + out << "bar"; + out << YAML::EndMap; + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test8dfd4533e2891d3861ec(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::Comment("comment"); + out << YAML::EndMap; + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test0a9b0c29dfcf4f071eb9(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::Comment("comment"); + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test3882a796318e573b115d(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::EndMap; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test1ade39a1572a12eda7b8(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::EndMap; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testd308c7e19671725523cd(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginMap; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << "foo"; + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test1ac58dc569ce7b4eebdf(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginMap; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << "foo"; + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test5fe4c34b163d0efa12d5(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << YAML::Comment("comment"); + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << "foo"; + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test78433ff7edf3224ce58b(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << YAML::BeginMap; + out << YAML::Comment("comment"); + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << "foo"; + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test089ed50cafddf39653d6(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << YAML::BeginMap; + out << "foo"; + out << YAML::Comment("comment"); + out << "bar"; + out << YAML::EndMap; + out << "foo"; + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test809723ec7bdea45cf562(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::Comment("comment"); + out << YAML::EndMap; + out << "foo"; + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test953cf821d2acc7898582(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::Comment("comment"); + out << "foo"; + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test0f1db947e4627596eace(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << "foo"; + out << YAML::Comment("comment"); + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test52f3b0674f30d955eea7(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << "foo"; + out << YAML::EndMap; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testf95a488631e07f6ca914(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << "foo"; + out << YAML::EndMap; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test9b7a916f4c1e2a1ae6ee(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginMap; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test54ea34948e814ef79607(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginMap; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testcef62af7508e0a1e3ee3(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << YAML::Comment("comment"); + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testffcfb27f0c904fae7833(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << YAML::BeginMap; + out << YAML::Comment("comment"); + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test31ed1460205bbc5a4a68(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << YAML::BeginMap; + out << "foo"; + out << YAML::Comment("comment"); + out << "bar"; + out << YAML::EndMap; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test7d04c8d923b046159db0(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::Comment("comment"); + out << YAML::EndMap; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test31b396851023614cf9fd(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::Comment("comment"); + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test5befd800aa07d83e2df7(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::BeginSeq; + out << YAML::Comment("comment"); + out << "foo"; + out << YAML::EndSeq; + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test2df4f378f687fd80b98c(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::Comment("comment"); + out << YAML::EndSeq; + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test232f5aa6ea7e85e186c4(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::Comment("comment"); + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test011421ad7da175099088(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::EndMap; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testf50217feca0ae03a0b03(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::EndMap; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST teste4b49044063dd3c8a7ff(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginMap; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testbe9295522ec1f0bc9de5(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginMap; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test7a18055f1e3a49f93d40(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << YAML::Comment("comment"); + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testd8eebabad65b8ef02375(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << YAML::BeginMap; + out << YAML::Comment("comment"); + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test948f36e3182f3c1aa800(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << YAML::BeginMap; + out << "foo"; + out << YAML::Comment("comment"); + out << "bar"; + out << YAML::EndMap; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testde02b69600e5931c39ab(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::Comment("comment"); + out << YAML::EndMap; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test5fdab21609e7017c3b86(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::Comment("comment"); + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testfb52965f57b912ec23a4(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::BeginMap; + out << YAML::Comment("comment"); + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testa3f220ead85b78154f89(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::BeginMap; + out << "foo"; + out << YAML::Comment("comment"); + out << "bar"; + out << YAML::EndMap; + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test0ef1b1c26e8a1fa34ccd(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::Comment("comment"); + out << YAML::EndMap; + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test7661db62a921285da885(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::Comment("comment"); + out << YAML::EndMap; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test9382f466be3e19ca395f(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::EndMap; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test33c4f45355dc7df2e2a8(YAML::Emitter& out) +{ + out << YAML::BeginMap; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::EndMap; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_MAP_START("?", 0); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_MAP_END(); + EXPECT_DOC_END(); + DONE(); +} } void RunGenEmitterTests(int& passed, int& total) { @@ -4070,4 +7727,173 @@ void RunGenEmitterTests(int& passed, int& total) RunGenEmitterTest(&Emitter::test1b49cc3347751dcb09a9, "test1b49cc3347751dcb09a9", passed, total); RunGenEmitterTest(&Emitter::testffe72c176661d48910bd, "testffe72c176661d48910bd", passed, total); RunGenEmitterTest(&Emitter::testf3f2d1d0e79f326b3d2f, "testf3f2d1d0e79f326b3d2f", passed, total); + RunGenEmitterTest(&Emitter::testeb66a6725a958bb76923, "testeb66a6725a958bb76923", passed, total); + RunGenEmitterTest(&Emitter::test0a8fc83bac630f116c86, "test0a8fc83bac630f116c86", passed, total); + RunGenEmitterTest(&Emitter::test6c62ccca61f383967d91, "test6c62ccca61f383967d91", passed, total); + RunGenEmitterTest(&Emitter::test6ba9e6495bef38087e7f, "test6ba9e6495bef38087e7f", passed, total); + RunGenEmitterTest(&Emitter::test643e77d887ec7390c1c9, "test643e77d887ec7390c1c9", passed, total); + RunGenEmitterTest(&Emitter::testa9725ffe34acd33603c4, "testa9725ffe34acd33603c4", passed, total); + RunGenEmitterTest(&Emitter::test1a65df7ae90ac6ba1f22, "test1a65df7ae90ac6ba1f22", passed, total); + RunGenEmitterTest(&Emitter::test7f982251b9a09ebb1059, "test7f982251b9a09ebb1059", passed, total); + RunGenEmitterTest(&Emitter::test4b2138b3eafc346d6bd3, "test4b2138b3eafc346d6bd3", passed, total); + RunGenEmitterTest(&Emitter::testa316e26e6b940d585005, "testa316e26e6b940d585005", passed, total); + RunGenEmitterTest(&Emitter::testda2e0d2a6fd2a83cb298, "testda2e0d2a6fd2a83cb298", passed, total); + RunGenEmitterTest(&Emitter::test54aac276524c0baaecd1, "test54aac276524c0baaecd1", passed, total); + RunGenEmitterTest(&Emitter::testd1fb3fd39f4a2fda5c6a, "testd1fb3fd39f4a2fda5c6a", passed, total); + RunGenEmitterTest(&Emitter::test4aaf20817b31a62e905f, "test4aaf20817b31a62e905f", passed, total); + RunGenEmitterTest(&Emitter::test446f00cbeee81a34d936, "test446f00cbeee81a34d936", passed, total); + RunGenEmitterTest(&Emitter::testb13663976ee52dac5370, "testb13663976ee52dac5370", passed, total); + RunGenEmitterTest(&Emitter::testd245994f89c881efef06, "testd245994f89c881efef06", passed, total); + RunGenEmitterTest(&Emitter::testb6e7c5ee86f3c0559fe3, "testb6e7c5ee86f3c0559fe3", passed, total); + RunGenEmitterTest(&Emitter::testee28e38a088388ee5d9f, "testee28e38a088388ee5d9f", passed, total); + RunGenEmitterTest(&Emitter::test9b40d68cb65d34934b50, "test9b40d68cb65d34934b50", passed, total); + RunGenEmitterTest(&Emitter::test045fac0048d3cfc15d88, "test045fac0048d3cfc15d88", passed, total); + RunGenEmitterTest(&Emitter::test85c3ad95991be29b3aff, "test85c3ad95991be29b3aff", passed, total); + RunGenEmitterTest(&Emitter::test2abfed1da9a2ab365c18, "test2abfed1da9a2ab365c18", passed, total); + RunGenEmitterTest(&Emitter::testa999e4a9d0199bf463ec, "testa999e4a9d0199bf463ec", passed, total); + RunGenEmitterTest(&Emitter::test8452a26a810950ad47b2, "test8452a26a810950ad47b2", passed, total); + RunGenEmitterTest(&Emitter::test1e2b3a261f435a0f6316, "test1e2b3a261f435a0f6316", passed, total); + RunGenEmitterTest(&Emitter::test1423ee4cd0795e6ef646, "test1423ee4cd0795e6ef646", passed, total); + RunGenEmitterTest(&Emitter::testf95070e81f8def8ceec9, "testf95070e81f8def8ceec9", passed, total); + RunGenEmitterTest(&Emitter::testf533a12940040f665761, "testf533a12940040f665761", passed, total); + RunGenEmitterTest(&Emitter::test51bd09a609a537b79c8a, "test51bd09a609a537b79c8a", passed, total); + RunGenEmitterTest(&Emitter::testc10b994394aa86a1789b, "testc10b994394aa86a1789b", passed, total); + RunGenEmitterTest(&Emitter::testc5de3511ef8fa1e5841e, "testc5de3511ef8fa1e5841e", passed, total); + RunGenEmitterTest(&Emitter::test0e957613f266e5693f83, "test0e957613f266e5693f83", passed, total); + RunGenEmitterTest(&Emitter::testf36b8fb2ec772e02a48c, "testf36b8fb2ec772e02a48c", passed, total); + RunGenEmitterTest(&Emitter::test249b4ee9b0e6936bdfcf, "test249b4ee9b0e6936bdfcf", passed, total); + RunGenEmitterTest(&Emitter::testdae669b09d29d1d05e81, "testdae669b09d29d1d05e81", passed, total); + RunGenEmitterTest(&Emitter::testa3645755a60c69fe8af4, "testa3645755a60c69fe8af4", passed, total); + RunGenEmitterTest(&Emitter::test5500c0af0cbb6a8efc04, "test5500c0af0cbb6a8efc04", passed, total); + RunGenEmitterTest(&Emitter::test6528fe35c2b993cbd28b, "test6528fe35c2b993cbd28b", passed, total); + RunGenEmitterTest(&Emitter::test072a41bf81e5b4dcd7d2, "test072a41bf81e5b4dcd7d2", passed, total); + RunGenEmitterTest(&Emitter::test3b47e24ba197ca8f686b, "test3b47e24ba197ca8f686b", passed, total); + RunGenEmitterTest(&Emitter::test938c1c274b5ebf36c6b2, "test938c1c274b5ebf36c6b2", passed, total); + RunGenEmitterTest(&Emitter::testeea818614d4fbef183a8, "testeea818614d4fbef183a8", passed, total); + RunGenEmitterTest(&Emitter::test18533eabe468baceac59, "test18533eabe468baceac59", passed, total); + RunGenEmitterTest(&Emitter::teste239cd01ef68ce26375d, "teste239cd01ef68ce26375d", passed, total); + RunGenEmitterTest(&Emitter::testd3a9b36f8218cd633402, "testd3a9b36f8218cd633402", passed, total); + RunGenEmitterTest(&Emitter::testa899f4512569981104e8, "testa899f4512569981104e8", passed, total); + RunGenEmitterTest(&Emitter::test230a8fd0d19c5e15963b, "test230a8fd0d19c5e15963b", passed, total); + RunGenEmitterTest(&Emitter::test4fa431a3bea1c616f8d0, "test4fa431a3bea1c616f8d0", passed, total); + RunGenEmitterTest(&Emitter::testdd05d8f0df4f1ba79b8f, "testdd05d8f0df4f1ba79b8f", passed, total); + RunGenEmitterTest(&Emitter::test0cb381d8a384434a2646, "test0cb381d8a384434a2646", passed, total); + RunGenEmitterTest(&Emitter::testeadefbe24693d510ac03, "testeadefbe24693d510ac03", passed, total); + RunGenEmitterTest(&Emitter::test0b43e898410a9da3db1a, "test0b43e898410a9da3db1a", passed, total); + RunGenEmitterTest(&Emitter::test450ed0f6d19326bab043, "test450ed0f6d19326bab043", passed, total); + RunGenEmitterTest(&Emitter::test38b7c3f09ffb6f4e73a5, "test38b7c3f09ffb6f4e73a5", passed, total); + RunGenEmitterTest(&Emitter::testab434195f62ee39997ae, "testab434195f62ee39997ae", passed, total); + RunGenEmitterTest(&Emitter::testdce4c351d6c426d24f14, "testdce4c351d6c426d24f14", passed, total); + RunGenEmitterTest(&Emitter::test2363249f46e86ae9bd64, "test2363249f46e86ae9bd64", passed, total); + RunGenEmitterTest(&Emitter::test6225a910ac0a5ce7304f, "test6225a910ac0a5ce7304f", passed, total); + RunGenEmitterTest(&Emitter::testf7898be54854e4587c54, "testf7898be54854e4587c54", passed, total); + RunGenEmitterTest(&Emitter::test1ab55f98773e2e58c659, "test1ab55f98773e2e58c659", passed, total); + RunGenEmitterTest(&Emitter::testf116d0bf1446d5e989db, "testf116d0bf1446d5e989db", passed, total); + RunGenEmitterTest(&Emitter::test90df709c20ab5305b5b0, "test90df709c20ab5305b5b0", passed, total); + RunGenEmitterTest(&Emitter::test37e041f7726819b98004, "test37e041f7726819b98004", passed, total); + RunGenEmitterTest(&Emitter::test5c13c8d0762eb77abbbe, "test5c13c8d0762eb77abbbe", passed, total); + RunGenEmitterTest(&Emitter::test3c9ec0009e080492d6a0, "test3c9ec0009e080492d6a0", passed, total); + RunGenEmitterTest(&Emitter::testd016b2610a9701c799be, "testd016b2610a9701c799be", passed, total); + RunGenEmitterTest(&Emitter::test12e858bf6ec981811cc8, "test12e858bf6ec981811cc8", passed, total); + RunGenEmitterTest(&Emitter::test0e09fd8b6ac12a309a36, "test0e09fd8b6ac12a309a36", passed, total); + RunGenEmitterTest(&Emitter::testca30dc12961feab24a33, "testca30dc12961feab24a33", passed, total); + RunGenEmitterTest(&Emitter::test162ca62af5cdf9d02507, "test162ca62af5cdf9d02507", passed, total); + RunGenEmitterTest(&Emitter::teste3a7658df7a81c1ce8e5, "teste3a7658df7a81c1ce8e5", passed, total); + RunGenEmitterTest(&Emitter::test9dac5e4f0e78f96fcaad, "test9dac5e4f0e78f96fcaad", passed, total); + RunGenEmitterTest(&Emitter::testaf2e952791b73c6bf78c, "testaf2e952791b73c6bf78c", passed, total); + RunGenEmitterTest(&Emitter::test82b161574e0926b9c854, "test82b161574e0926b9c854", passed, total); + RunGenEmitterTest(&Emitter::test13c3f29be0e6b7bc92b1, "test13c3f29be0e6b7bc92b1", passed, total); + RunGenEmitterTest(&Emitter::teste87c7e9ce16fd2ac5f0e, "teste87c7e9ce16fd2ac5f0e", passed, total); + RunGenEmitterTest(&Emitter::testeed7f7f244221932d32f, "testeed7f7f244221932d32f", passed, total); + RunGenEmitterTest(&Emitter::test31a5563bfa532571339f, "test31a5563bfa532571339f", passed, total); + RunGenEmitterTest(&Emitter::test502ab92aab5195ff4759, "test502ab92aab5195ff4759", passed, total); + RunGenEmitterTest(&Emitter::testdbe2ce5bc02435009b2c, "testdbe2ce5bc02435009b2c", passed, total); + RunGenEmitterTest(&Emitter::test06b8d2cc9bbb233d55d5, "test06b8d2cc9bbb233d55d5", passed, total); + RunGenEmitterTest(&Emitter::test9adf48ae5d6dff37e89a, "test9adf48ae5d6dff37e89a", passed, total); + RunGenEmitterTest(&Emitter::test398282871dcc1c7f8dbe, "test398282871dcc1c7f8dbe", passed, total); + RunGenEmitterTest(&Emitter::test2e2b3c35732210898be1, "test2e2b3c35732210898be1", passed, total); + RunGenEmitterTest(&Emitter::test155697ae715940b6d804, "test155697ae715940b6d804", passed, total); + RunGenEmitterTest(&Emitter::testb01c87881d846bb10ecd, "testb01c87881d846bb10ecd", passed, total); + RunGenEmitterTest(&Emitter::test84a9d3d2ae4eaacc9c98, "test84a9d3d2ae4eaacc9c98", passed, total); + RunGenEmitterTest(&Emitter::testb836cd5dc876cf6eb204, "testb836cd5dc876cf6eb204", passed, total); + RunGenEmitterTest(&Emitter::test4aa81dc715c5e5c53de1, "test4aa81dc715c5e5c53de1", passed, total); + RunGenEmitterTest(&Emitter::testfa8ba9d405de1af93537, "testfa8ba9d405de1af93537", passed, total); + RunGenEmitterTest(&Emitter::test3c07c460dae114d3f278, "test3c07c460dae114d3f278", passed, total); + RunGenEmitterTest(&Emitter::testf513330011b92283e713, "testf513330011b92283e713", passed, total); + RunGenEmitterTest(&Emitter::test88667a8fe856748b4dc6, "test88667a8fe856748b4dc6", passed, total); + RunGenEmitterTest(&Emitter::test7cbc7ae88a6b60d3cb54, "test7cbc7ae88a6b60d3cb54", passed, total); + RunGenEmitterTest(&Emitter::test8b126d00ee878273f3e9, "test8b126d00ee878273f3e9", passed, total); + RunGenEmitterTest(&Emitter::test414dcec883b2fb2668d9, "test414dcec883b2fb2668d9", passed, total); + RunGenEmitterTest(&Emitter::test41754fe2ab40560f1afe, "test41754fe2ab40560f1afe", passed, total); + RunGenEmitterTest(&Emitter::test39b7a9ee0ccb5580ef60, "test39b7a9ee0ccb5580ef60", passed, total); + RunGenEmitterTest(&Emitter::test1f4cbfdb2f53d041fb74, "test1f4cbfdb2f53d041fb74", passed, total); + RunGenEmitterTest(&Emitter::testc20612e8922a8eeba24d, "testc20612e8922a8eeba24d", passed, total); + RunGenEmitterTest(&Emitter::test693f48133cf726f1e05c, "test693f48133cf726f1e05c", passed, total); + RunGenEmitterTest(&Emitter::test12b26bfed7a24736dd8b, "test12b26bfed7a24736dd8b", passed, total); + RunGenEmitterTest(&Emitter::test41d6ec7f045897841e9c, "test41d6ec7f045897841e9c", passed, total); + RunGenEmitterTest(&Emitter::test2bc8d1d6e4ec042ede3e, "test2bc8d1d6e4ec042ede3e", passed, total); + RunGenEmitterTest(&Emitter::test647ff876c844ad7540ff, "test647ff876c844ad7540ff", passed, total); + RunGenEmitterTest(&Emitter::test844c1bcb896dde8ea51b, "test844c1bcb896dde8ea51b", passed, total); + RunGenEmitterTest(&Emitter::testbcf04a5174e8505d1891, "testbcf04a5174e8505d1891", passed, total); + RunGenEmitterTest(&Emitter::testdb6c8ca130035d7a271f, "testdb6c8ca130035d7a271f", passed, total); + RunGenEmitterTest(&Emitter::testa0db96f3d93a255f2201, "testa0db96f3d93a255f2201", passed, total); + RunGenEmitterTest(&Emitter::test4fb3eaac714942122715, "test4fb3eaac714942122715", passed, total); + RunGenEmitterTest(&Emitter::test634678f31daa20127d6c, "test634678f31daa20127d6c", passed, total); + RunGenEmitterTest(&Emitter::test1dd395a1149e46dcc208, "test1dd395a1149e46dcc208", passed, total); + RunGenEmitterTest(&Emitter::testebc585cbde90d10a0af1, "testebc585cbde90d10a0af1", passed, total); + RunGenEmitterTest(&Emitter::testd1ecec189e73f8932485, "testd1ecec189e73f8932485", passed, total); + RunGenEmitterTest(&Emitter::testf8fc72597f0a41b22daa, "testf8fc72597f0a41b22daa", passed, total); + RunGenEmitterTest(&Emitter::testd01959c5c228946c8759, "testd01959c5c228946c8759", passed, total); + RunGenEmitterTest(&Emitter::teste8236a9672d9244ca486, "teste8236a9672d9244ca486", passed, total); + RunGenEmitterTest(&Emitter::test22bd5d24dbd3f0670f97, "test22bd5d24dbd3f0670f97", passed, total); + RunGenEmitterTest(&Emitter::test0f2c6cac0ce0e624eb08, "test0f2c6cac0ce0e624eb08", passed, total); + RunGenEmitterTest(&Emitter::test2ed2eef7f03696ca3c94, "test2ed2eef7f03696ca3c94", passed, total); + RunGenEmitterTest(&Emitter::test6fe33177e10d14328a14, "test6fe33177e10d14328a14", passed, total); + RunGenEmitterTest(&Emitter::test0ea79e93c3439d90bdb8, "test0ea79e93c3439d90bdb8", passed, total); + RunGenEmitterTest(&Emitter::test2ab970621d7e037153c9, "test2ab970621d7e037153c9", passed, total); + RunGenEmitterTest(&Emitter::test4229059ec3d639faf4b2, "test4229059ec3d639faf4b2", passed, total); + RunGenEmitterTest(&Emitter::test6df809b4712b73c8577f, "test6df809b4712b73c8577f", passed, total); + RunGenEmitterTest(&Emitter::test37a0a34b2bef743d8241, "test37a0a34b2bef743d8241", passed, total); + RunGenEmitterTest(&Emitter::testd6c37c1e50617419a37d, "testd6c37c1e50617419a37d", passed, total); + RunGenEmitterTest(&Emitter::test2fb71689fb176533159c, "test2fb71689fb176533159c", passed, total); + RunGenEmitterTest(&Emitter::testa91d7999dd9b43fb5827, "testa91d7999dd9b43fb5827", passed, total); + RunGenEmitterTest(&Emitter::test8dfd4533e2891d3861ec, "test8dfd4533e2891d3861ec", passed, total); + RunGenEmitterTest(&Emitter::test0a9b0c29dfcf4f071eb9, "test0a9b0c29dfcf4f071eb9", passed, total); + RunGenEmitterTest(&Emitter::test3882a796318e573b115d, "test3882a796318e573b115d", passed, total); + RunGenEmitterTest(&Emitter::test1ade39a1572a12eda7b8, "test1ade39a1572a12eda7b8", passed, total); + RunGenEmitterTest(&Emitter::testd308c7e19671725523cd, "testd308c7e19671725523cd", passed, total); + RunGenEmitterTest(&Emitter::test1ac58dc569ce7b4eebdf, "test1ac58dc569ce7b4eebdf", passed, total); + RunGenEmitterTest(&Emitter::test5fe4c34b163d0efa12d5, "test5fe4c34b163d0efa12d5", passed, total); + RunGenEmitterTest(&Emitter::test78433ff7edf3224ce58b, "test78433ff7edf3224ce58b", passed, total); + RunGenEmitterTest(&Emitter::test089ed50cafddf39653d6, "test089ed50cafddf39653d6", passed, total); + RunGenEmitterTest(&Emitter::test809723ec7bdea45cf562, "test809723ec7bdea45cf562", passed, total); + RunGenEmitterTest(&Emitter::test953cf821d2acc7898582, "test953cf821d2acc7898582", passed, total); + RunGenEmitterTest(&Emitter::test0f1db947e4627596eace, "test0f1db947e4627596eace", passed, total); + RunGenEmitterTest(&Emitter::test52f3b0674f30d955eea7, "test52f3b0674f30d955eea7", passed, total); + RunGenEmitterTest(&Emitter::testf95a488631e07f6ca914, "testf95a488631e07f6ca914", passed, total); + RunGenEmitterTest(&Emitter::test9b7a916f4c1e2a1ae6ee, "test9b7a916f4c1e2a1ae6ee", passed, total); + RunGenEmitterTest(&Emitter::test54ea34948e814ef79607, "test54ea34948e814ef79607", passed, total); + RunGenEmitterTest(&Emitter::testcef62af7508e0a1e3ee3, "testcef62af7508e0a1e3ee3", passed, total); + RunGenEmitterTest(&Emitter::testffcfb27f0c904fae7833, "testffcfb27f0c904fae7833", passed, total); + RunGenEmitterTest(&Emitter::test31ed1460205bbc5a4a68, "test31ed1460205bbc5a4a68", passed, total); + RunGenEmitterTest(&Emitter::test7d04c8d923b046159db0, "test7d04c8d923b046159db0", passed, total); + RunGenEmitterTest(&Emitter::test31b396851023614cf9fd, "test31b396851023614cf9fd", passed, total); + RunGenEmitterTest(&Emitter::test5befd800aa07d83e2df7, "test5befd800aa07d83e2df7", passed, total); + RunGenEmitterTest(&Emitter::test2df4f378f687fd80b98c, "test2df4f378f687fd80b98c", passed, total); + RunGenEmitterTest(&Emitter::test232f5aa6ea7e85e186c4, "test232f5aa6ea7e85e186c4", passed, total); + RunGenEmitterTest(&Emitter::test011421ad7da175099088, "test011421ad7da175099088", passed, total); + RunGenEmitterTest(&Emitter::testf50217feca0ae03a0b03, "testf50217feca0ae03a0b03", passed, total); + RunGenEmitterTest(&Emitter::teste4b49044063dd3c8a7ff, "teste4b49044063dd3c8a7ff", passed, total); + RunGenEmitterTest(&Emitter::testbe9295522ec1f0bc9de5, "testbe9295522ec1f0bc9de5", passed, total); + RunGenEmitterTest(&Emitter::test7a18055f1e3a49f93d40, "test7a18055f1e3a49f93d40", passed, total); + RunGenEmitterTest(&Emitter::testd8eebabad65b8ef02375, "testd8eebabad65b8ef02375", passed, total); + RunGenEmitterTest(&Emitter::test948f36e3182f3c1aa800, "test948f36e3182f3c1aa800", passed, total); + RunGenEmitterTest(&Emitter::testde02b69600e5931c39ab, "testde02b69600e5931c39ab", passed, total); + RunGenEmitterTest(&Emitter::test5fdab21609e7017c3b86, "test5fdab21609e7017c3b86", passed, total); + RunGenEmitterTest(&Emitter::testfb52965f57b912ec23a4, "testfb52965f57b912ec23a4", passed, total); + RunGenEmitterTest(&Emitter::testa3f220ead85b78154f89, "testa3f220ead85b78154f89", passed, total); + RunGenEmitterTest(&Emitter::test0ef1b1c26e8a1fa34ccd, "test0ef1b1c26e8a1fa34ccd", passed, total); + RunGenEmitterTest(&Emitter::test7661db62a921285da885, "test7661db62a921285da885", passed, total); + RunGenEmitterTest(&Emitter::test9382f466be3e19ca395f, "test9382f466be3e19ca395f", passed, total); + RunGenEmitterTest(&Emitter::test33c4f45355dc7df2e2a8, "test33c4f45355dc7df2e2a8", passed, total); } From 52813050d2a948ef41b10fd9cec6509a12ce5ff2 Mon Sep 17 00:00:00 2001 From: Jesse Beder Date: Wed, 23 May 2012 11:18:53 -0500 Subject: [PATCH 62/65] Fixed map/comment/seq emitting --- src/emitter.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/emitter.cpp b/src/emitter.cpp index eb01f07..ed5993a 100644 --- a/src/emitter.cpp +++ b/src/emitter.cpp @@ -567,7 +567,7 @@ namespace YAML if(child == EmitterNodeType::None) return; - if(!m_pState->HasBegunNode()) { + if(!m_pState->HasBegunContent()) { if(childCount > 0) { m_stream << "\n"; } From 288c7e51f22706cd6c149ddc86d46417847d8527 Mon Sep 17 00:00:00 2001 From: Jesse Beder Date: Wed, 23 May 2012 11:20:36 -0500 Subject: [PATCH 63/65] Added seq/map gen emitter tests --- test/create-emitter-tests.py | 6 + test/genemittertests.h | 2350 ++++++++++++++++++++++++++++++++++ 2 files changed, 2356 insertions(+) diff --git a/test/create-emitter-tests.py b/test/create-emitter-tests.py index 96cab29..91ea567 100644 --- a/test/create-emitter-tests.py +++ b/test/create-emitter-tests.py @@ -104,6 +104,12 @@ def gen_templates(): [[scalar('foo')], [seq_start(), scalar('foo'), seq_end()], [map_start(), scalar('foo'), scalar('bar'), map_end()]], [map_end()], [doc_end(True)]] + yield [[doc_start(True)], + [seq_start()], + [[scalar('foo')], [seq_start(), scalar('foo'), seq_end()], [map_start(), scalar('foo'), scalar('bar'), map_end()]], + [[scalar('foo')], [seq_start(), scalar('foo'), seq_end()], [map_start(), scalar('foo'), scalar('bar'), map_end()]], + [seq_end()], + [doc_end(True)]] def expand(template): if len(template) == 0: diff --git a/test/genemittertests.h b/test/genemittertests.h index 0bf13d9..94edca6 100644 --- a/test/genemittertests.h +++ b/test/genemittertests.h @@ -7488,6 +7488,2263 @@ TEST test33c4f45355dc7df2e2a8(YAML::Emitter& out) EXPECT_DOC_END(); DONE(); } +TEST testc55c40f32c34c890acce(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginSeq; + out << "foo"; + out << "foo"; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testb06ba64c5895f218175d(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginSeq; + out << "foo"; + out << "foo"; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test14adb5374833871b2d0c(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::Comment("comment"); + out << "foo"; + out << "foo"; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test7ff7826c0f0563ce5a65(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << "foo"; + out << YAML::Comment("comment"); + out << "foo"; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test394e607327447b08e729(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << "foo"; + out << "foo"; + out << YAML::Comment("comment"); + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testdf03e1437e901976c2c8(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << "foo"; + out << "foo"; + out << YAML::EndSeq; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test77467fcda467dd063050(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << "foo"; + out << "foo"; + out << YAML::EndSeq; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test5bcea73651331a2357d0(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginSeq; + out << "foo"; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test2956b3f097a16a4cd951(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginSeq; + out << "foo"; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test3170422d0cad24cd602a(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::Comment("comment"); + out << "foo"; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testb37f0cd80f138e8f2622(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << "foo"; + out << YAML::Comment("comment"); + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test3e00cce71da4636fa1f7(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << "foo"; + out << YAML::BeginSeq; + out << YAML::Comment("comment"); + out << "foo"; + out << YAML::EndSeq; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testfd184c04759685f21abb(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << "foo"; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::Comment("comment"); + out << YAML::EndSeq; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test14ab4965eff0a569da16(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << "foo"; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::Comment("comment"); + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test271811f2df7210366780(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << "foo"; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::EndSeq; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testfcfe8657dffc21f6cd45(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << "foo"; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::EndSeq; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test609e44eab4ab95f31e33(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginSeq; + out << "foo"; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test7841fc715275a45a2770(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginSeq; + out << "foo"; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test662c03de87ca40bd943e(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::Comment("comment"); + out << "foo"; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test0a9475ec3c946fe11991(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << "foo"; + out << YAML::Comment("comment"); + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test94d28ebdbee90f430eb1(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << "foo"; + out << YAML::BeginMap; + out << YAML::Comment("comment"); + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testd5035afc82e23b67ce03(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << "foo"; + out << YAML::BeginMap; + out << "foo"; + out << YAML::Comment("comment"); + out << "bar"; + out << YAML::EndMap; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testcc9788c342da4454758f(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << "foo"; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::Comment("comment"); + out << YAML::EndMap; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test140974453293fdb1155d(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << "foo"; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::Comment("comment"); + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testdc0b80a131730e98d735(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << "foo"; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::EndSeq; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test1c5225b07d746c2bd331(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << "foo"; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::EndSeq; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testa49a0be204cd2b57f17b(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginSeq; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << "foo"; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testbe08cc0a08cf2cb5e7ec(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginSeq; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << "foo"; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test4d2a2e12689655edd77c(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::Comment("comment"); + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << "foo"; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test4d4a25a54401f0282ceb(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::BeginSeq; + out << YAML::Comment("comment"); + out << "foo"; + out << YAML::EndSeq; + out << "foo"; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test91f55feebb012ce89a93(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::Comment("comment"); + out << YAML::EndSeq; + out << "foo"; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test1f3d0b19c6a346b087e0(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::Comment("comment"); + out << "foo"; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test4e26682c2daf8ded04a6(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << "foo"; + out << YAML::Comment("comment"); + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test6f24e6df03922bba0d8a(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test60849eca7dc178908ff1(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test28b7db2ac68bb806e143(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginSeq; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test8db156db7065942bc260(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginSeq; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST teste240aced6e2292a9b091(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::Comment("comment"); + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test468628a845426ce4a106(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::BeginSeq; + out << YAML::Comment("comment"); + out << "foo"; + out << YAML::EndSeq; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testa3a2d467766b74acd6fd(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::Comment("comment"); + out << YAML::EndSeq; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test5bf63d8ed606d688d869(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::Comment("comment"); + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test0d35c1487237ba7d8bdc(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::BeginSeq; + out << YAML::Comment("comment"); + out << "foo"; + out << YAML::EndSeq; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testb1fddc2897760d60e733(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::Comment("comment"); + out << YAML::EndSeq; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testbaf845554a46f088bf71(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::Comment("comment"); + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test6383f28d62ad9ce3c075(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::EndSeq; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test88a4c1cc11b99a61eccd(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::EndSeq; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test4716a2cf58a70705987b(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginSeq; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test75222084929bd0f9d38f(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginSeq; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test2fb23c79eec625216523(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::Comment("comment"); + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testb1699a6b7c5ded480677(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::BeginSeq; + out << YAML::Comment("comment"); + out << "foo"; + out << YAML::EndSeq; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testd7de744a20ca1dc099db(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::Comment("comment"); + out << YAML::EndSeq; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test900b2dcf20981b44ea65(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::Comment("comment"); + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test20cc330b6d1171584aed(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::BeginMap; + out << YAML::Comment("comment"); + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test5ea8e3642fab864fb09d(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::BeginMap; + out << "foo"; + out << YAML::Comment("comment"); + out << "bar"; + out << YAML::EndMap; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test42e21cbc65f534972ead(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::Comment("comment"); + out << YAML::EndMap; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test14e3b5dca1d7a5a0c957(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::Comment("comment"); + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test9bd4800a58394b172738(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::EndSeq; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testb715a2b66987a872ced8(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::EndSeq; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST teste9b56880009cc6899131(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginSeq; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << "foo"; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test21f96f767e38471c9d4d(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginSeq; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << "foo"; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testa8aebba05fc1858c0a6c(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::Comment("comment"); + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << "foo"; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST teste6e7442377049b17ee9e(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::BeginMap; + out << YAML::Comment("comment"); + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << "foo"; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test428b593e283163fee752(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::BeginMap; + out << "foo"; + out << YAML::Comment("comment"); + out << "bar"; + out << YAML::EndMap; + out << "foo"; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test0b6c63323da4bf9798c2(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::Comment("comment"); + out << YAML::EndMap; + out << "foo"; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test0f4c45c39fe39dfc8a1d(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::Comment("comment"); + out << "foo"; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testb8043a7ae1de42dd81db(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << "foo"; + out << YAML::Comment("comment"); + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test4d9b278579ffb76fc56d(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << "foo"; + out << YAML::EndSeq; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test672fc8b6d281f82b9332(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << "foo"; + out << YAML::EndSeq; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testb406d378fa0df952b051(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginSeq; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test68a227d03f20863f37e4(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginSeq; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testcee8582fd340377bda46(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::Comment("comment"); + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test06fd48e8c86baf6fc05b(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::BeginMap; + out << YAML::Comment("comment"); + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test70b4ccbf71c0716bf8e4(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::BeginMap; + out << "foo"; + out << YAML::Comment("comment"); + out << "bar"; + out << YAML::EndMap; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test449c2b349be8da36682b(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::Comment("comment"); + out << YAML::EndMap; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test9620fa69718e3b4fe391(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::Comment("comment"); + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test3faaebe701bea6f8ee39(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::BeginSeq; + out << YAML::Comment("comment"); + out << "foo"; + out << YAML::EndSeq; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test763ee61808091c7a354d(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::Comment("comment"); + out << YAML::EndSeq; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test81b0d6b575228cde91e5(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::Comment("comment"); + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testb607ae3c5d560092e37b(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::EndSeq; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testa53c54726737df14a5dd(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::BeginSeq; + out << "foo"; + out << YAML::EndSeq; + out << YAML::EndSeq; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_SEQ_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SEQ_END(); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test071d73b309a1365e0b07(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginSeq; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testf8f45511528fa28cddcb(YAML::Emitter& out) +{ + out << YAML::Comment("comment"); + out << YAML::BeginSeq; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testabdd2bf3bdf550e3dd60(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::Comment("comment"); + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test53424b35498a73fbede9(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::BeginMap; + out << YAML::Comment("comment"); + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testf0c6c1a1afced157d6a5(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::BeginMap; + out << "foo"; + out << YAML::Comment("comment"); + out << "bar"; + out << YAML::EndMap; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST teste45dbac33918e0fee74f(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::Comment("comment"); + out << YAML::EndMap; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test903c7ab3d09d4323107f(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::Comment("comment"); + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test5d39d351680dba4be04b(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::BeginMap; + out << YAML::Comment("comment"); + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testaa1e8d6d4385aab47bcd(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::BeginMap; + out << "foo"; + out << YAML::Comment("comment"); + out << "bar"; + out << YAML::EndMap; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test9bd238b748ced1db588b(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::Comment("comment"); + out << YAML::EndMap; + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST testec1cdffaae8842854947(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::Comment("comment"); + out << YAML::EndSeq; + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test30727d97de63c1ad395a(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::EndSeq; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} +TEST test7adafdc8be65a5d610bf(YAML::Emitter& out) +{ + out << YAML::BeginSeq; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::BeginMap; + out << "foo"; + out << "bar"; + out << YAML::EndMap; + out << YAML::EndSeq; + out << YAML::Comment("comment"); + + HANDLE(out.c_str()); + EXPECT_DOC_START(); + EXPECT_SEQ_START("?", 0); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_MAP_START("?", 0); + EXPECT_SCALAR("?", 0, "foo"); + EXPECT_SCALAR("?", 0, "bar"); + EXPECT_MAP_END(); + EXPECT_SEQ_END(); + EXPECT_DOC_END(); + DONE(); +} } void RunGenEmitterTests(int& passed, int& total) { @@ -7896,4 +10153,97 @@ void RunGenEmitterTests(int& passed, int& total) RunGenEmitterTest(&Emitter::test7661db62a921285da885, "test7661db62a921285da885", passed, total); RunGenEmitterTest(&Emitter::test9382f466be3e19ca395f, "test9382f466be3e19ca395f", passed, total); RunGenEmitterTest(&Emitter::test33c4f45355dc7df2e2a8, "test33c4f45355dc7df2e2a8", passed, total); + RunGenEmitterTest(&Emitter::testc55c40f32c34c890acce, "testc55c40f32c34c890acce", passed, total); + RunGenEmitterTest(&Emitter::testb06ba64c5895f218175d, "testb06ba64c5895f218175d", passed, total); + RunGenEmitterTest(&Emitter::test14adb5374833871b2d0c, "test14adb5374833871b2d0c", passed, total); + RunGenEmitterTest(&Emitter::test7ff7826c0f0563ce5a65, "test7ff7826c0f0563ce5a65", passed, total); + RunGenEmitterTest(&Emitter::test394e607327447b08e729, "test394e607327447b08e729", passed, total); + RunGenEmitterTest(&Emitter::testdf03e1437e901976c2c8, "testdf03e1437e901976c2c8", passed, total); + RunGenEmitterTest(&Emitter::test77467fcda467dd063050, "test77467fcda467dd063050", passed, total); + RunGenEmitterTest(&Emitter::test5bcea73651331a2357d0, "test5bcea73651331a2357d0", passed, total); + RunGenEmitterTest(&Emitter::test2956b3f097a16a4cd951, "test2956b3f097a16a4cd951", passed, total); + RunGenEmitterTest(&Emitter::test3170422d0cad24cd602a, "test3170422d0cad24cd602a", passed, total); + RunGenEmitterTest(&Emitter::testb37f0cd80f138e8f2622, "testb37f0cd80f138e8f2622", passed, total); + RunGenEmitterTest(&Emitter::test3e00cce71da4636fa1f7, "test3e00cce71da4636fa1f7", passed, total); + RunGenEmitterTest(&Emitter::testfd184c04759685f21abb, "testfd184c04759685f21abb", passed, total); + RunGenEmitterTest(&Emitter::test14ab4965eff0a569da16, "test14ab4965eff0a569da16", passed, total); + RunGenEmitterTest(&Emitter::test271811f2df7210366780, "test271811f2df7210366780", passed, total); + RunGenEmitterTest(&Emitter::testfcfe8657dffc21f6cd45, "testfcfe8657dffc21f6cd45", passed, total); + RunGenEmitterTest(&Emitter::test609e44eab4ab95f31e33, "test609e44eab4ab95f31e33", passed, total); + RunGenEmitterTest(&Emitter::test7841fc715275a45a2770, "test7841fc715275a45a2770", passed, total); + RunGenEmitterTest(&Emitter::test662c03de87ca40bd943e, "test662c03de87ca40bd943e", passed, total); + RunGenEmitterTest(&Emitter::test0a9475ec3c946fe11991, "test0a9475ec3c946fe11991", passed, total); + RunGenEmitterTest(&Emitter::test94d28ebdbee90f430eb1, "test94d28ebdbee90f430eb1", passed, total); + RunGenEmitterTest(&Emitter::testd5035afc82e23b67ce03, "testd5035afc82e23b67ce03", passed, total); + RunGenEmitterTest(&Emitter::testcc9788c342da4454758f, "testcc9788c342da4454758f", passed, total); + RunGenEmitterTest(&Emitter::test140974453293fdb1155d, "test140974453293fdb1155d", passed, total); + RunGenEmitterTest(&Emitter::testdc0b80a131730e98d735, "testdc0b80a131730e98d735", passed, total); + RunGenEmitterTest(&Emitter::test1c5225b07d746c2bd331, "test1c5225b07d746c2bd331", passed, total); + RunGenEmitterTest(&Emitter::testa49a0be204cd2b57f17b, "testa49a0be204cd2b57f17b", passed, total); + RunGenEmitterTest(&Emitter::testbe08cc0a08cf2cb5e7ec, "testbe08cc0a08cf2cb5e7ec", passed, total); + RunGenEmitterTest(&Emitter::test4d2a2e12689655edd77c, "test4d2a2e12689655edd77c", passed, total); + RunGenEmitterTest(&Emitter::test4d4a25a54401f0282ceb, "test4d4a25a54401f0282ceb", passed, total); + RunGenEmitterTest(&Emitter::test91f55feebb012ce89a93, "test91f55feebb012ce89a93", passed, total); + RunGenEmitterTest(&Emitter::test1f3d0b19c6a346b087e0, "test1f3d0b19c6a346b087e0", passed, total); + RunGenEmitterTest(&Emitter::test4e26682c2daf8ded04a6, "test4e26682c2daf8ded04a6", passed, total); + RunGenEmitterTest(&Emitter::test6f24e6df03922bba0d8a, "test6f24e6df03922bba0d8a", passed, total); + RunGenEmitterTest(&Emitter::test60849eca7dc178908ff1, "test60849eca7dc178908ff1", passed, total); + RunGenEmitterTest(&Emitter::test28b7db2ac68bb806e143, "test28b7db2ac68bb806e143", passed, total); + RunGenEmitterTest(&Emitter::test8db156db7065942bc260, "test8db156db7065942bc260", passed, total); + RunGenEmitterTest(&Emitter::teste240aced6e2292a9b091, "teste240aced6e2292a9b091", passed, total); + RunGenEmitterTest(&Emitter::test468628a845426ce4a106, "test468628a845426ce4a106", passed, total); + RunGenEmitterTest(&Emitter::testa3a2d467766b74acd6fd, "testa3a2d467766b74acd6fd", passed, total); + RunGenEmitterTest(&Emitter::test5bf63d8ed606d688d869, "test5bf63d8ed606d688d869", passed, total); + RunGenEmitterTest(&Emitter::test0d35c1487237ba7d8bdc, "test0d35c1487237ba7d8bdc", passed, total); + RunGenEmitterTest(&Emitter::testb1fddc2897760d60e733, "testb1fddc2897760d60e733", passed, total); + RunGenEmitterTest(&Emitter::testbaf845554a46f088bf71, "testbaf845554a46f088bf71", passed, total); + RunGenEmitterTest(&Emitter::test6383f28d62ad9ce3c075, "test6383f28d62ad9ce3c075", passed, total); + RunGenEmitterTest(&Emitter::test88a4c1cc11b99a61eccd, "test88a4c1cc11b99a61eccd", passed, total); + RunGenEmitterTest(&Emitter::test4716a2cf58a70705987b, "test4716a2cf58a70705987b", passed, total); + RunGenEmitterTest(&Emitter::test75222084929bd0f9d38f, "test75222084929bd0f9d38f", passed, total); + RunGenEmitterTest(&Emitter::test2fb23c79eec625216523, "test2fb23c79eec625216523", passed, total); + RunGenEmitterTest(&Emitter::testb1699a6b7c5ded480677, "testb1699a6b7c5ded480677", passed, total); + RunGenEmitterTest(&Emitter::testd7de744a20ca1dc099db, "testd7de744a20ca1dc099db", passed, total); + RunGenEmitterTest(&Emitter::test900b2dcf20981b44ea65, "test900b2dcf20981b44ea65", passed, total); + RunGenEmitterTest(&Emitter::test20cc330b6d1171584aed, "test20cc330b6d1171584aed", passed, total); + RunGenEmitterTest(&Emitter::test5ea8e3642fab864fb09d, "test5ea8e3642fab864fb09d", passed, total); + RunGenEmitterTest(&Emitter::test42e21cbc65f534972ead, "test42e21cbc65f534972ead", passed, total); + RunGenEmitterTest(&Emitter::test14e3b5dca1d7a5a0c957, "test14e3b5dca1d7a5a0c957", passed, total); + RunGenEmitterTest(&Emitter::test9bd4800a58394b172738, "test9bd4800a58394b172738", passed, total); + RunGenEmitterTest(&Emitter::testb715a2b66987a872ced8, "testb715a2b66987a872ced8", passed, total); + RunGenEmitterTest(&Emitter::teste9b56880009cc6899131, "teste9b56880009cc6899131", passed, total); + RunGenEmitterTest(&Emitter::test21f96f767e38471c9d4d, "test21f96f767e38471c9d4d", passed, total); + RunGenEmitterTest(&Emitter::testa8aebba05fc1858c0a6c, "testa8aebba05fc1858c0a6c", passed, total); + RunGenEmitterTest(&Emitter::teste6e7442377049b17ee9e, "teste6e7442377049b17ee9e", passed, total); + RunGenEmitterTest(&Emitter::test428b593e283163fee752, "test428b593e283163fee752", passed, total); + RunGenEmitterTest(&Emitter::test0b6c63323da4bf9798c2, "test0b6c63323da4bf9798c2", passed, total); + RunGenEmitterTest(&Emitter::test0f4c45c39fe39dfc8a1d, "test0f4c45c39fe39dfc8a1d", passed, total); + RunGenEmitterTest(&Emitter::testb8043a7ae1de42dd81db, "testb8043a7ae1de42dd81db", passed, total); + RunGenEmitterTest(&Emitter::test4d9b278579ffb76fc56d, "test4d9b278579ffb76fc56d", passed, total); + RunGenEmitterTest(&Emitter::test672fc8b6d281f82b9332, "test672fc8b6d281f82b9332", passed, total); + RunGenEmitterTest(&Emitter::testb406d378fa0df952b051, "testb406d378fa0df952b051", passed, total); + RunGenEmitterTest(&Emitter::test68a227d03f20863f37e4, "test68a227d03f20863f37e4", passed, total); + RunGenEmitterTest(&Emitter::testcee8582fd340377bda46, "testcee8582fd340377bda46", passed, total); + RunGenEmitterTest(&Emitter::test06fd48e8c86baf6fc05b, "test06fd48e8c86baf6fc05b", passed, total); + RunGenEmitterTest(&Emitter::test70b4ccbf71c0716bf8e4, "test70b4ccbf71c0716bf8e4", passed, total); + RunGenEmitterTest(&Emitter::test449c2b349be8da36682b, "test449c2b349be8da36682b", passed, total); + RunGenEmitterTest(&Emitter::test9620fa69718e3b4fe391, "test9620fa69718e3b4fe391", passed, total); + RunGenEmitterTest(&Emitter::test3faaebe701bea6f8ee39, "test3faaebe701bea6f8ee39", passed, total); + RunGenEmitterTest(&Emitter::test763ee61808091c7a354d, "test763ee61808091c7a354d", passed, total); + RunGenEmitterTest(&Emitter::test81b0d6b575228cde91e5, "test81b0d6b575228cde91e5", passed, total); + RunGenEmitterTest(&Emitter::testb607ae3c5d560092e37b, "testb607ae3c5d560092e37b", passed, total); + RunGenEmitterTest(&Emitter::testa53c54726737df14a5dd, "testa53c54726737df14a5dd", passed, total); + RunGenEmitterTest(&Emitter::test071d73b309a1365e0b07, "test071d73b309a1365e0b07", passed, total); + RunGenEmitterTest(&Emitter::testf8f45511528fa28cddcb, "testf8f45511528fa28cddcb", passed, total); + RunGenEmitterTest(&Emitter::testabdd2bf3bdf550e3dd60, "testabdd2bf3bdf550e3dd60", passed, total); + RunGenEmitterTest(&Emitter::test53424b35498a73fbede9, "test53424b35498a73fbede9", passed, total); + RunGenEmitterTest(&Emitter::testf0c6c1a1afced157d6a5, "testf0c6c1a1afced157d6a5", passed, total); + RunGenEmitterTest(&Emitter::teste45dbac33918e0fee74f, "teste45dbac33918e0fee74f", passed, total); + RunGenEmitterTest(&Emitter::test903c7ab3d09d4323107f, "test903c7ab3d09d4323107f", passed, total); + RunGenEmitterTest(&Emitter::test5d39d351680dba4be04b, "test5d39d351680dba4be04b", passed, total); + RunGenEmitterTest(&Emitter::testaa1e8d6d4385aab47bcd, "testaa1e8d6d4385aab47bcd", passed, total); + RunGenEmitterTest(&Emitter::test9bd238b748ced1db588b, "test9bd238b748ced1db588b", passed, total); + RunGenEmitterTest(&Emitter::testec1cdffaae8842854947, "testec1cdffaae8842854947", passed, total); + RunGenEmitterTest(&Emitter::test30727d97de63c1ad395a, "test30727d97de63c1ad395a", passed, total); + RunGenEmitterTest(&Emitter::test7adafdc8be65a5d610bf, "test7adafdc8be65a5d610bf", passed, total); } From f0119757698f4e94c45c91adcb442408d0ed6cd9 Mon Sep 17 00:00:00 2001 From: Jesse Beder Date: Wed, 23 May 2012 15:12:36 -0500 Subject: [PATCH 64/65] Fixed handler macros to remove warnings in gcc --- test/handlermacros.h | 42 +++++++++++------------------------------- 1 file changed, 11 insertions(+), 31 deletions(-) diff --git a/test/handlermacros.h b/test/handlermacros.h index 6b87303..db2019c 100644 --- a/test/handlermacros.h +++ b/test/handlermacros.h @@ -155,56 +155,36 @@ namespace Test { MockEventHandler handler;\ std::stringstream stream(ex);\ YAML::Parser parser(stream);\ -while(parser.HandleNextDocument(handler))\ +while(parser.HandleNextDocument(handler)) {} #define EXPECT_DOC_START()\ -do {\ -handler.Expect(Event(Event::DocStart, "", 0, ""));\ -} while(false) +handler.Expect(Event(Event::DocStart, "", 0, "")) #define EXPECT_DOC_END()\ -do {\ -handler.Expect(Event(Event::DocEnd, "", 0, ""));\ -} while(false) +handler.Expect(Event(Event::DocEnd, "", 0, "")) #define EXPECT_NULL(anchor)\ -do {\ -handler.Expect(Event(Event::Null, "", anchor, ""));\ -} while(false) +handler.Expect(Event(Event::Null, "", anchor, "")) #define EXPECT_ALIAS(anchor)\ -do {\ -handler.Expect(Event(Event::Alias, "", anchor, ""));\ -} while(false) +handler.Expect(Event(Event::Alias, "", anchor, "")) #define EXPECT_SCALAR(tag, anchor, value)\ -do {\ -handler.Expect(Event(Event::Scalar, tag, anchor, value));\ -} while(false) +handler.Expect(Event(Event::Scalar, tag, anchor, value)) #define EXPECT_SEQ_START(tag, anchor)\ -do {\ -handler.Expect(Event(Event::SeqStart, tag, anchor, ""));\ -} while(false) +handler.Expect(Event(Event::SeqStart, tag, anchor, "")) #define EXPECT_SEQ_END()\ -do {\ -handler.Expect(Event(Event::SeqEnd, "", 0, ""));\ -} while(false) +handler.Expect(Event(Event::SeqEnd, "", 0, "")) #define EXPECT_MAP_START(tag, anchor)\ -do {\ -handler.Expect(Event(Event::MapStart, tag, anchor, ""));\ -} while(false) +handler.Expect(Event(Event::MapStart, tag, anchor, "")) #define EXPECT_MAP_END()\ -do {\ -handler.Expect(Event(Event::MapEnd, "", 0, ""));\ -} while(false) +handler.Expect(Event(Event::MapEnd, "", 0, "")) #define DONE()\ -do {\ -return handler.Check();\ -} while(false) +return handler.Check() } From 2dd1cf4596c392d7c35f5764877d88a344303846 Mon Sep 17 00:00:00 2001 From: Jesse Beder Date: Wed, 23 May 2012 15:16:34 -0500 Subject: [PATCH 65/65] Added compiler flag to compile the generated tests, since gcc takes *forever* to compile them --- test/create-emitter-tests.py | 7 +++++++ test/genemittertests.h | 7 +++++++ 2 files changed, 14 insertions(+) diff --git a/test/create-emitter-tests.py b/test/create-emitter-tests.py index 91ea567..bf17f0a 100644 --- a/test/create-emitter-tests.py +++ b/test/create-emitter-tests.py @@ -3,6 +3,7 @@ import yaml import hashlib NS = 'Emitter' +DEFINE = 'YAML_GEN_TESTS' EVENT_COUNT = 5 def encode_stream(line): @@ -142,6 +143,7 @@ def gen_tests(): def create_emitter_tests(out): + out.write('#ifdef %s\n' % DEFINE) out.write('namespace %s {\n' % NS) tests = list(gen_tests()) @@ -166,11 +168,16 @@ def create_emitter_tests(out): out.write('}\n') out.write('}\n') + out.write('#endif // %s\n\n' % DEFINE) out.write('void RunGenEmitterTests(int& passed, int& total)\n') out.write('{\n') + out.write('#ifdef %s\n' % DEFINE) for test in tests: out.write(' RunGenEmitterTest(&Emitter::%s, "%s", passed, total);\n' % (test['name'], encode(test['name']))) + out.write('#else // %s\n' % DEFINE) + out.write(' (void)passed; (void)total;\n') + out.write('#endif // %s\n' % DEFINE) out.write('}\n') if __name__ == '__main__': diff --git a/test/genemittertests.h b/test/genemittertests.h index 94edca6..d15690a 100644 --- a/test/genemittertests.h +++ b/test/genemittertests.h @@ -1,3 +1,4 @@ +#ifdef YAML_GEN_TESTS namespace Emitter { TEST test02571eee35ac0cbd3777(YAML::Emitter& out) { @@ -9746,8 +9747,11 @@ TEST test7adafdc8be65a5d610bf(YAML::Emitter& out) DONE(); } } +#endif // YAML_GEN_TESTS + void RunGenEmitterTests(int& passed, int& total) { +#ifdef YAML_GEN_TESTS RunGenEmitterTest(&Emitter::test02571eee35ac0cbd3777, "test02571eee35ac0cbd3777", passed, total); RunGenEmitterTest(&Emitter::test71b969ca18898d226320, "test71b969ca18898d226320", passed, total); RunGenEmitterTest(&Emitter::testd69e4ea95ce6f221c6e7, "testd69e4ea95ce6f221c6e7", passed, total); @@ -10246,4 +10250,7 @@ void RunGenEmitterTests(int& passed, int& total) RunGenEmitterTest(&Emitter::testec1cdffaae8842854947, "testec1cdffaae8842854947", passed, total); RunGenEmitterTest(&Emitter::test30727d97de63c1ad395a, "test30727d97de63c1ad395a", passed, total); RunGenEmitterTest(&Emitter::test7adafdc8be65a5d610bf, "test7adafdc8be65a5d610bf", passed, total); +#else // YAML_GEN_TESTS + (void)passed; (void)total; +#endif // YAML_GEN_TESTS }