Switched YAML::Parse to YAML::Load, and added LoadAll

This commit is contained in:
beder
2011-09-13 14:24:47 -05:00
parent d899562ba1
commit 183ba98d03
4 changed files with 146 additions and 117 deletions

View File

@@ -5,16 +5,21 @@
#pragma once #pragma once
#endif #endif
#include <string>
#include <iosfwd> #include <iosfwd>
#include <string>
#include <vector>
namespace YAML namespace YAML
{ {
class Node; class Node;
Node Parse(const std::string& input); Node Load(const std::string& input);
Node Parse(const char *input); Node Load(const char *input);
Node Parse(std::istream& input); Node Load(std::istream& input);
std::vector<Node> LoadAll(const std::string& input);
std::vector<Node> LoadAll(const char *input);
std::vector<Node> LoadAll(std::istream& input);
} }
#endif // VALUE_PARSE_H_62B23520_7C8E_11DE_8A39_0800200C9A66 #endif // VALUE_PARSE_H_62B23520_7C8E_11DE_8A39_0800200C9A66

View File

@@ -8,17 +8,17 @@
namespace YAML namespace YAML
{ {
Node Parse(const std::string& input) { Node Load(const std::string& input) {
std::stringstream stream(input); std::stringstream stream(input);
return Parse(stream); return Load(stream);
} }
Node Parse(const char *input) { Node Load(const char *input) {
std::stringstream stream(input); std::stringstream stream(input);
return Parse(stream); return Load(stream);
} }
Node Parse(std::istream& input) { Node Load(std::istream& input) {
Parser parser(input); Parser parser(input);
NodeBuilder builder; NodeBuilder builder;
if(!parser.HandleNextDocument(builder)) if(!parser.HandleNextDocument(builder))
@@ -26,4 +26,28 @@ namespace YAML
return builder.Root(); return builder.Root();
} }
std::vector<Node> LoadAll(const std::string& input) {
std::stringstream stream(input);
return LoadAll(stream);
}
std::vector<Node> LoadAll(const char *input) {
std::stringstream stream(input);
return LoadAll(stream);
}
std::vector<Node> LoadAll(std::istream& input) {
std::vector<Node> docs;
Parser parser(input);
while(1) {
NodeBuilder builder;
if(!parser.HandleNextDocument(builder))
break;
docs.push_back(builder.Root());
}
return docs;
}
} }

View File

@@ -10,7 +10,7 @@ namespace Test
{ {
// 2.1 // 2.1
TEST SeqScalars() { TEST SeqScalars() {
YAML::Node doc = YAML::Parse(ex2_1); YAML::Node doc = YAML::Load(ex2_1);
YAML_ASSERT(doc.IsSequence()); YAML_ASSERT(doc.IsSequence());
YAML_ASSERT(doc.size() == 3); YAML_ASSERT(doc.size() == 3);
YAML_ASSERT(doc[0].as<std::string>() == "Mark McGwire"); YAML_ASSERT(doc[0].as<std::string>() == "Mark McGwire");
@@ -21,7 +21,7 @@ namespace Test
// 2.2 // 2.2
TEST MappingScalarsToScalars() { TEST MappingScalarsToScalars() {
YAML::Node doc = YAML::Parse(ex2_2); YAML::Node doc = YAML::Load(ex2_2);
YAML_ASSERT(doc.IsMap()); YAML_ASSERT(doc.IsMap());
YAML_ASSERT(doc.size() == 3); YAML_ASSERT(doc.size() == 3);
YAML_ASSERT(doc["hr"].as<std::string>() == "65"); YAML_ASSERT(doc["hr"].as<std::string>() == "65");
@@ -32,7 +32,7 @@ namespace Test
// 2.3 // 2.3
TEST MappingScalarsToSequences() { TEST MappingScalarsToSequences() {
YAML::Node doc = YAML::Parse(ex2_3); YAML::Node doc = YAML::Load(ex2_3);
YAML_ASSERT(doc.IsMap()); YAML_ASSERT(doc.IsMap());
YAML_ASSERT(doc.size() == 2); YAML_ASSERT(doc.size() == 2);
YAML_ASSERT(doc["american"].size() == 3); YAML_ASSERT(doc["american"].size() == 3);
@@ -48,7 +48,7 @@ namespace Test
// 2.4 // 2.4
TEST SequenceOfMappings() { TEST SequenceOfMappings() {
YAML::Node doc = YAML::Parse(ex2_4); YAML::Node doc = YAML::Load(ex2_4);
YAML_ASSERT(doc.size() == 2); YAML_ASSERT(doc.size() == 2);
YAML_ASSERT(doc[0].size() == 3); YAML_ASSERT(doc[0].size() == 3);
YAML_ASSERT(doc[0]["name"].as<std::string>() == "Mark McGwire"); YAML_ASSERT(doc[0]["name"].as<std::string>() == "Mark McGwire");
@@ -63,7 +63,7 @@ namespace Test
// 2.5 // 2.5
TEST SequenceOfSequences() { TEST SequenceOfSequences() {
YAML::Node doc = YAML::Parse(ex2_5); YAML::Node doc = YAML::Load(ex2_5);
YAML_ASSERT(doc.size() == 3); YAML_ASSERT(doc.size() == 3);
YAML_ASSERT(doc[0].size() == 3); YAML_ASSERT(doc[0].size() == 3);
YAML_ASSERT(doc[0][0].as<std::string>() == "name"); YAML_ASSERT(doc[0][0].as<std::string>() == "name");
@@ -82,7 +82,7 @@ namespace Test
// 2.6 // 2.6
TEST MappingOfMappings() { TEST MappingOfMappings() {
YAML::Node doc = YAML::Parse(ex2_6); YAML::Node doc = YAML::Load(ex2_6);
YAML_ASSERT(doc.size() == 2); YAML_ASSERT(doc.size() == 2);
YAML_ASSERT(doc["Mark McGwire"].size() == 2); YAML_ASSERT(doc["Mark McGwire"].size() == 2);
YAML_ASSERT(doc["Mark McGwire"]["hr"].as<std::string>() == "65"); YAML_ASSERT(doc["Mark McGwire"]["hr"].as<std::string>() == "65");
@@ -105,7 +105,7 @@ namespace Test
// 2.9 // 2.9
TEST SingleDocumentWithTwoComments() { TEST SingleDocumentWithTwoComments() {
YAML::Node doc = YAML::Parse(ex2_9); YAML::Node doc = YAML::Load(ex2_9);
YAML_ASSERT(doc.size() == 2); YAML_ASSERT(doc.size() == 2);
YAML_ASSERT(doc["hr"].size() == 2); YAML_ASSERT(doc["hr"].size() == 2);
YAML_ASSERT(doc["hr"][0].as<std::string>() == "Mark McGwire"); YAML_ASSERT(doc["hr"][0].as<std::string>() == "Mark McGwire");
@@ -118,7 +118,7 @@ namespace Test
// 2.10 // 2.10
TEST SimpleAnchor() { TEST SimpleAnchor() {
YAML::Node doc = YAML::Parse(ex2_10); YAML::Node doc = YAML::Load(ex2_10);
YAML_ASSERT(doc.size() == 2); YAML_ASSERT(doc.size() == 2);
YAML_ASSERT(doc["hr"].size() == 2); YAML_ASSERT(doc["hr"].size() == 2);
YAML_ASSERT(doc["hr"][0].as<std::string>() == "Mark McGwire"); YAML_ASSERT(doc["hr"][0].as<std::string>() == "Mark McGwire");
@@ -131,7 +131,7 @@ namespace Test
// 2.11 // 2.11
TEST MappingBetweenSequences() { TEST MappingBetweenSequences() {
YAML::Node doc = YAML::Parse(ex2_11); YAML::Node doc = YAML::Load(ex2_11);
std::vector<std::string> tigers_cubs; std::vector<std::string> tigers_cubs;
tigers_cubs.push_back("Detroit Tigers"); tigers_cubs.push_back("Detroit Tigers");
@@ -154,7 +154,7 @@ namespace Test
// 2.12 // 2.12
TEST CompactNestedMapping() { TEST CompactNestedMapping() {
YAML::Node doc = YAML::Parse(ex2_12); YAML::Node doc = YAML::Load(ex2_12);
YAML_ASSERT(doc.size() == 3); YAML_ASSERT(doc.size() == 3);
YAML_ASSERT(doc[0].size() == 2); YAML_ASSERT(doc[0].size() == 2);
YAML_ASSERT(doc[0]["item"].as<std::string>() == "Super Hoop"); YAML_ASSERT(doc[0]["item"].as<std::string>() == "Super Hoop");
@@ -170,7 +170,7 @@ namespace Test
// 2.13 // 2.13
TEST InLiteralsNewlinesArePreserved() { TEST InLiteralsNewlinesArePreserved() {
YAML::Node doc = YAML::Parse(ex2_13); YAML::Node doc = YAML::Load(ex2_13);
YAML_ASSERT(doc.as<std::string>() == YAML_ASSERT(doc.as<std::string>() ==
"\\//||\\/||\n" "\\//||\\/||\n"
"// || ||__"); "// || ||__");
@@ -179,14 +179,14 @@ namespace Test
// 2.14 // 2.14
TEST InFoldedScalarsNewlinesBecomeSpaces() { TEST InFoldedScalarsNewlinesBecomeSpaces() {
YAML::Node doc = YAML::Parse(ex2_14); YAML::Node doc = YAML::Load(ex2_14);
YAML_ASSERT(doc.as<std::string>() == "Mark McGwire's year was crippled by a knee injury."); YAML_ASSERT(doc.as<std::string>() == "Mark McGwire's year was crippled by a knee injury.");
return true; return true;
} }
// 2.15 // 2.15
TEST FoldedNewlinesArePreservedForMoreIndentedAndBlankLines() { TEST FoldedNewlinesArePreservedForMoreIndentedAndBlankLines() {
YAML::Node doc = YAML::Parse(ex2_15); YAML::Node doc = YAML::Load(ex2_15);
YAML_ASSERT(doc.as<std::string>() == YAML_ASSERT(doc.as<std::string>() ==
"Sammy Sosa completed another fine season with great stats.\n\n" "Sammy Sosa completed another fine season with great stats.\n\n"
" 63 Home Runs\n" " 63 Home Runs\n"
@@ -197,7 +197,7 @@ namespace Test
// 2.16 // 2.16
TEST IndentationDeterminesScope() { TEST IndentationDeterminesScope() {
YAML::Node doc = YAML::Parse(ex2_16); YAML::Node doc = YAML::Load(ex2_16);
YAML_ASSERT(doc.size() == 3); YAML_ASSERT(doc.size() == 3);
YAML_ASSERT(doc["name"].as<std::string>() == "Mark McGwire"); YAML_ASSERT(doc["name"].as<std::string>() == "Mark McGwire");
YAML_ASSERT(doc["accomplishment"].as<std::string>() == "Mark set a major league home run record in 1998.\n"); YAML_ASSERT(doc["accomplishment"].as<std::string>() == "Mark set a major league home run record in 1998.\n");
@@ -207,7 +207,7 @@ namespace Test
// 2.17 // 2.17
TEST QuotedScalars() { TEST QuotedScalars() {
YAML::Node doc = YAML::Parse(ex2_17); YAML::Node doc = YAML::Load(ex2_17);
YAML_ASSERT(doc.size() == 6); YAML_ASSERT(doc.size() == 6);
YAML_ASSERT(doc["unicode"].as<std::string>() == "Sosa did fine.\xe2\x98\xba"); YAML_ASSERT(doc["unicode"].as<std::string>() == "Sosa did fine.\xe2\x98\xba");
YAML_ASSERT(doc["control"].as<std::string>() == "\b1998\t1999\t2000\n"); YAML_ASSERT(doc["control"].as<std::string>() == "\b1998\t1999\t2000\n");
@@ -220,7 +220,7 @@ namespace Test
// 2.18 // 2.18
TEST MultiLineFlowScalars() { TEST MultiLineFlowScalars() {
YAML::Node doc = YAML::Parse(ex2_18); YAML::Node doc = YAML::Load(ex2_18);
YAML_ASSERT(doc.size() == 2); YAML_ASSERT(doc.size() == 2);
YAML_ASSERT(doc["plain"].as<std::string>() == "This unquoted scalar spans many lines."); YAML_ASSERT(doc["plain"].as<std::string>() == "This unquoted scalar spans many lines.");
YAML_ASSERT(doc["quoted"].as<std::string>() == "So does this quoted scalar.\n"); YAML_ASSERT(doc["quoted"].as<std::string>() == "So does this quoted scalar.\n");
@@ -231,7 +231,7 @@ namespace Test
// 2.23 // 2.23
TEST VariousExplicitTags() { TEST VariousExplicitTags() {
YAML::Node doc = YAML::Parse(ex2_23); YAML::Node doc = YAML::Load(ex2_23);
YAML_ASSERT(doc.size() == 3); YAML_ASSERT(doc.size() == 3);
YAML_ASSERT(doc["not-date"].Tag() == "tag:yaml.org,2002:str"); YAML_ASSERT(doc["not-date"].Tag() == "tag:yaml.org,2002:str");
YAML_ASSERT(doc["not-date"].as<std::string>() == "2002-04-28"); YAML_ASSERT(doc["not-date"].as<std::string>() == "2002-04-28");
@@ -253,7 +253,7 @@ namespace Test
// 2.24 // 2.24
TEST GlobalTags() { TEST GlobalTags() {
YAML::Node doc = YAML::Parse(ex2_24); YAML::Node doc = YAML::Load(ex2_24);
YAML_ASSERT(doc.Tag() == "tag:clarkevans.com,2002:shape"); YAML_ASSERT(doc.Tag() == "tag:clarkevans.com,2002:shape");
YAML_ASSERT(doc.size() == 3); YAML_ASSERT(doc.size() == 3);
YAML_ASSERT(doc[0].Tag() == "tag:clarkevans.com,2002:circle"); YAML_ASSERT(doc[0].Tag() == "tag:clarkevans.com,2002:circle");
@@ -282,7 +282,7 @@ namespace Test
// 2.25 // 2.25
TEST UnorderedSets() { TEST UnorderedSets() {
YAML::Node doc = YAML::Parse(ex2_25); YAML::Node doc = YAML::Load(ex2_25);
YAML_ASSERT(doc.Tag() == "tag:yaml.org,2002:set"); YAML_ASSERT(doc.Tag() == "tag:yaml.org,2002:set");
YAML_ASSERT(doc.size() == 3); YAML_ASSERT(doc.size() == 3);
YAML_ASSERT(doc["Mark McGwire"].IsNull()); YAML_ASSERT(doc["Mark McGwire"].IsNull());
@@ -293,7 +293,7 @@ namespace Test
// 2.26 // 2.26
TEST OrderedMappings() { TEST OrderedMappings() {
YAML::Node doc = YAML::Parse(ex2_26); YAML::Node doc = YAML::Load(ex2_26);
YAML_ASSERT(doc.Tag() == "tag:yaml.org,2002:omap"); YAML_ASSERT(doc.Tag() == "tag:yaml.org,2002:omap");
YAML_ASSERT(doc.size() == 3); YAML_ASSERT(doc.size() == 3);
YAML_ASSERT(doc[0].size() == 1); YAML_ASSERT(doc[0].size() == 1);
@@ -307,7 +307,7 @@ namespace Test
// 2.27 // 2.27
TEST Invoice() { TEST Invoice() {
YAML::Node doc = YAML::Parse(ex2_27); YAML::Node doc = YAML::Load(ex2_27);
YAML_ASSERT(doc.Tag() == "tag:clarkevans.com,2002:invoice"); YAML_ASSERT(doc.Tag() == "tag:clarkevans.com,2002:invoice");
YAML_ASSERT(doc.size() == 8); YAML_ASSERT(doc.size() == 8);
YAML_ASSERT(doc["invoice"].as<int>() == 34843); YAML_ASSERT(doc["invoice"].as<int>() == 34843);
@@ -352,7 +352,7 @@ namespace Test
// 5.3 // 5.3
TEST BlockStructureIndicators() { TEST BlockStructureIndicators() {
YAML::Node doc = YAML::Parse(ex5_3); YAML::Node doc = YAML::Load(ex5_3);
YAML_ASSERT(doc.size() == 2); YAML_ASSERT(doc.size() == 2);
YAML_ASSERT(doc["sequence"].size() == 2); YAML_ASSERT(doc["sequence"].size() == 2);
YAML_ASSERT(doc["sequence"][0].as<std::string>() == "one"); YAML_ASSERT(doc["sequence"][0].as<std::string>() == "one");
@@ -365,7 +365,7 @@ namespace Test
// 5.4 // 5.4
TEST FlowStructureIndicators() { TEST FlowStructureIndicators() {
YAML::Node doc = YAML::Parse(ex5_4); YAML::Node doc = YAML::Load(ex5_4);
YAML_ASSERT(doc.size() == 2); YAML_ASSERT(doc.size() == 2);
YAML_ASSERT(doc["sequence"].size() == 2); YAML_ASSERT(doc["sequence"].size() == 2);
YAML_ASSERT(doc["sequence"][0].as<std::string>() == "one"); YAML_ASSERT(doc["sequence"][0].as<std::string>() == "one");
@@ -378,14 +378,14 @@ namespace Test
// 5.5 // 5.5
TEST CommentIndicator() { TEST CommentIndicator() {
YAML::Node doc = YAML::Parse(ex5_5); YAML::Node doc = YAML::Load(ex5_5);
YAML_ASSERT(doc.IsNull()); YAML_ASSERT(doc.IsNull());
return true; return true;
} }
// 5.6 // 5.6
TEST NodePropertyIndicators() { TEST NodePropertyIndicators() {
YAML::Node doc = YAML::Parse(ex5_6); YAML::Node doc = YAML::Load(ex5_6);
YAML_ASSERT(doc.size() == 2); YAML_ASSERT(doc.size() == 2);
YAML_ASSERT(doc["anchored"].as<std::string>() == "value"); // TODO: assert tag YAML_ASSERT(doc["anchored"].as<std::string>() == "value"); // TODO: assert tag
YAML_ASSERT(doc["alias"].as<std::string>() == "value"); YAML_ASSERT(doc["alias"].as<std::string>() == "value");
@@ -394,7 +394,7 @@ namespace Test
// 5.7 // 5.7
TEST BlockScalarIndicators() { TEST BlockScalarIndicators() {
YAML::Node doc = YAML::Parse(ex5_7); YAML::Node doc = YAML::Load(ex5_7);
YAML_ASSERT(doc.size() == 2); YAML_ASSERT(doc.size() == 2);
YAML_ASSERT(doc["literal"].as<std::string>() == "some\ntext\n"); YAML_ASSERT(doc["literal"].as<std::string>() == "some\ntext\n");
YAML_ASSERT(doc["folded"].as<std::string>() == "some text\n"); YAML_ASSERT(doc["folded"].as<std::string>() == "some text\n");
@@ -403,7 +403,7 @@ namespace Test
// 5.8 // 5.8
TEST QuotedScalarIndicators() { TEST QuotedScalarIndicators() {
YAML::Node doc = YAML::Parse(ex5_8); YAML::Node doc = YAML::Load(ex5_8);
YAML_ASSERT(doc.size() == 2); YAML_ASSERT(doc.size() == 2);
YAML_ASSERT(doc["single"].as<std::string>() == "text"); YAML_ASSERT(doc["single"].as<std::string>() == "text");
YAML_ASSERT(doc["double"].as<std::string>() == "text"); YAML_ASSERT(doc["double"].as<std::string>() == "text");
@@ -415,14 +415,14 @@ namespace Test
// 5.11 // 5.11
TEST LineBreakCharacters() { TEST LineBreakCharacters() {
YAML::Node doc = YAML::Parse(ex5_11); YAML::Node doc = YAML::Load(ex5_11);
YAML_ASSERT(doc.as<std::string>() == "Line break (no glyph)\nLine break (glyphed)\n"); YAML_ASSERT(doc.as<std::string>() == "Line break (no glyph)\nLine break (glyphed)\n");
return true; return true;
} }
// 5.12 // 5.12
TEST TabsAndSpaces() { TEST TabsAndSpaces() {
YAML::Node doc = YAML::Parse(ex5_12); YAML::Node doc = YAML::Load(ex5_12);
YAML_ASSERT(doc.size() == 2); YAML_ASSERT(doc.size() == 2);
YAML_ASSERT(doc["quoted"].as<std::string>() == "Quoted\t"); YAML_ASSERT(doc["quoted"].as<std::string>() == "Quoted\t");
YAML_ASSERT(doc["block"].as<std::string>() == YAML_ASSERT(doc["block"].as<std::string>() ==
@@ -434,7 +434,7 @@ namespace Test
// 5.13 // 5.13
TEST EscapedCharacters() { TEST EscapedCharacters() {
YAML::Node doc = YAML::Parse(ex5_13); YAML::Node doc = YAML::Load(ex5_13);
YAML_ASSERT(doc.as<std::string>() == "Fun with \x5C \x22 \x07 \x08 \x1B \x0C \x0A \x0D \x09 \x0B " + std::string("\x00", 1) + " \x20 \xA0 \x85 \xe2\x80\xa8 \xe2\x80\xa9 A A A"); YAML_ASSERT(doc.as<std::string>() == "Fun with \x5C \x22 \x07 \x08 \x1B \x0C \x0A \x0D \x09 \x0B " + std::string("\x00", 1) + " \x20 \xA0 \x85 \xe2\x80\xa8 \xe2\x80\xa9 A A A");
return true; return true;
} }
@@ -442,7 +442,7 @@ namespace Test
// 5.14 // 5.14
TEST InvalidEscapedCharacters() { TEST InvalidEscapedCharacters() {
try { try {
YAML::Parse(ex5_14); YAML::Load(ex5_14);
} catch(const YAML::ParserException& e) { } catch(const YAML::ParserException& e) {
YAML_ASSERT(e.msg == std::string(YAML::ErrorMsg::INVALID_ESCAPE) + "c"); YAML_ASSERT(e.msg == std::string(YAML::ErrorMsg::INVALID_ESCAPE) + "c");
return true; return true;
@@ -453,7 +453,7 @@ namespace Test
// 6.1 // 6.1
TEST IndentationSpaces() { TEST IndentationSpaces() {
YAML::Node doc = YAML::Parse(ex6_1); YAML::Node doc = YAML::Load(ex6_1);
YAML_ASSERT(doc.size() == 1); YAML_ASSERT(doc.size() == 1);
YAML_ASSERT(doc["Not indented"].size() == 2); YAML_ASSERT(doc["Not indented"].size() == 2);
YAML_ASSERT(doc["Not indented"]["By one space"].as<std::string>() == "By four\n spaces\n"); YAML_ASSERT(doc["Not indented"]["By one space"].as<std::string>() == "By four\n spaces\n");
@@ -466,7 +466,7 @@ namespace Test
// 6.2 // 6.2
TEST IndentationIndicators() { TEST IndentationIndicators() {
YAML::Node doc = YAML::Parse(ex6_2); YAML::Node doc = YAML::Load(ex6_2);
YAML_ASSERT(doc.size() == 1); YAML_ASSERT(doc.size() == 1);
YAML_ASSERT(doc["a"].size() == 2); YAML_ASSERT(doc["a"].size() == 2);
YAML_ASSERT(doc["a"][0].as<std::string>() == "b"); YAML_ASSERT(doc["a"][0].as<std::string>() == "b");
@@ -478,7 +478,7 @@ namespace Test
// 6.3 // 6.3
TEST SeparationSpaces() { TEST SeparationSpaces() {
YAML::Node doc = YAML::Parse(ex6_3); YAML::Node doc = YAML::Load(ex6_3);
YAML_ASSERT(doc.size() == 2); YAML_ASSERT(doc.size() == 2);
YAML_ASSERT(doc[0].size() == 1); YAML_ASSERT(doc[0].size() == 1);
YAML_ASSERT(doc[0]["foo"].as<std::string>() == "bar"); YAML_ASSERT(doc[0]["foo"].as<std::string>() == "bar");
@@ -490,7 +490,7 @@ namespace Test
// 6.4 // 6.4
TEST LinePrefixes() { TEST LinePrefixes() {
YAML::Node doc = YAML::Parse(ex6_4); YAML::Node doc = YAML::Load(ex6_4);
YAML_ASSERT(doc.size() == 3); YAML_ASSERT(doc.size() == 3);
YAML_ASSERT(doc["plain"].as<std::string>() == "text lines"); YAML_ASSERT(doc["plain"].as<std::string>() == "text lines");
YAML_ASSERT(doc["quoted"].as<std::string>() == "text lines"); YAML_ASSERT(doc["quoted"].as<std::string>() == "text lines");
@@ -500,7 +500,7 @@ namespace Test
// 6.5 // 6.5
TEST EmptyLines() { TEST EmptyLines() {
YAML::Node doc = YAML::Parse(ex6_5); YAML::Node doc = YAML::Load(ex6_5);
YAML_ASSERT(doc.size() == 2); YAML_ASSERT(doc.size() == 2);
YAML_ASSERT(doc["Folding"].as<std::string>() == "Empty line\nas a line feed"); YAML_ASSERT(doc["Folding"].as<std::string>() == "Empty line\nas a line feed");
YAML_ASSERT(doc["Chomping"].as<std::string>() == "Clipped empty lines\n"); YAML_ASSERT(doc["Chomping"].as<std::string>() == "Clipped empty lines\n");
@@ -509,28 +509,28 @@ namespace Test
// 6.6 // 6.6
TEST LineFolding() { TEST LineFolding() {
YAML::Node doc = YAML::Parse(ex6_6); YAML::Node doc = YAML::Load(ex6_6);
YAML_ASSERT(doc.as<std::string>() == "trimmed\n\n\nas space"); YAML_ASSERT(doc.as<std::string>() == "trimmed\n\n\nas space");
return true; return true;
} }
// 6.7 // 6.7
TEST BlockFolding() { TEST BlockFolding() {
YAML::Node doc = YAML::Parse(ex6_7); YAML::Node doc = YAML::Load(ex6_7);
YAML_ASSERT(doc.as<std::string>() == "foo \n\n\t bar\n\nbaz\n"); YAML_ASSERT(doc.as<std::string>() == "foo \n\n\t bar\n\nbaz\n");
return true; return true;
} }
// 6.8 // 6.8
TEST FlowFolding() { TEST FlowFolding() {
YAML::Node doc = YAML::Parse(ex6_8); YAML::Node doc = YAML::Load(ex6_8);
YAML_ASSERT(doc.as<std::string>() == " foo\nbar\nbaz "); YAML_ASSERT(doc.as<std::string>() == " foo\nbar\nbaz ");
return true; return true;
} }
// 6.9 // 6.9
TEST SeparatedComment() { TEST SeparatedComment() {
YAML::Node doc = YAML::Parse(ex6_9); YAML::Node doc = YAML::Load(ex6_9);
YAML_ASSERT(doc.size() == 1); YAML_ASSERT(doc.size() == 1);
YAML_ASSERT(doc["key"].as<std::string>() == "value"); YAML_ASSERT(doc["key"].as<std::string>() == "value");
return true; return true;
@@ -538,14 +538,14 @@ namespace Test
// 6.10 // 6.10
TEST CommentLines() { TEST CommentLines() {
YAML::Node doc = YAML::Parse(ex6_10); YAML::Node doc = YAML::Load(ex6_10);
YAML_ASSERT(doc.IsNull()); YAML_ASSERT(doc.IsNull());
return true; return true;
} }
// 6.11 // 6.11
TEST MultiLineComments() { TEST MultiLineComments() {
YAML::Node doc = YAML::Parse(ex6_11); YAML::Node doc = YAML::Load(ex6_11);
YAML_ASSERT(doc.size() == 1); YAML_ASSERT(doc.size() == 1);
YAML_ASSERT(doc["key"].as<std::string>() == "value"); YAML_ASSERT(doc["key"].as<std::string>() == "value");
return true; return true;
@@ -553,7 +553,7 @@ namespace Test
// 6.12 // 6.12
TEST SeparationSpacesII() { TEST SeparationSpacesII() {
YAML::Node doc = YAML::Parse(ex6_12); YAML::Node doc = YAML::Load(ex6_12);
std::map<std::string, std::string> sammy; std::map<std::string, std::string> sammy;
sammy["first"] = "Sammy"; sammy["first"] = "Sammy";
@@ -568,14 +568,14 @@ namespace Test
// 6.13 // 6.13
TEST ReservedDirectives() { TEST ReservedDirectives() {
YAML::Node doc = YAML::Parse(ex6_13); YAML::Node doc = YAML::Load(ex6_13);
YAML_ASSERT(doc.as<std::string>() == "foo"); YAML_ASSERT(doc.as<std::string>() == "foo");
return true; return true;
} }
// 6.14 // 6.14
TEST YAMLDirective() { TEST YAMLDirective() {
YAML::Node doc = YAML::Parse(ex6_14); YAML::Node doc = YAML::Load(ex6_14);
YAML_ASSERT(doc.as<std::string>() == "foo"); YAML_ASSERT(doc.as<std::string>() == "foo");
return true; return true;
} }
@@ -583,7 +583,7 @@ namespace Test
// 6.15 // 6.15
TEST InvalidRepeatedYAMLDirective() { TEST InvalidRepeatedYAMLDirective() {
try { try {
YAML::Parse(ex6_15); YAML::Load(ex6_15);
} catch(const YAML::ParserException& e) { } catch(const YAML::ParserException& e) {
YAML_ASSERT(e.msg == YAML::ErrorMsg::REPEATED_YAML_DIRECTIVE); YAML_ASSERT(e.msg == YAML::ErrorMsg::REPEATED_YAML_DIRECTIVE);
return true; return true;
@@ -594,7 +594,7 @@ namespace Test
// 6.16 // 6.16
TEST TagDirective() { TEST TagDirective() {
YAML::Node doc = YAML::Parse(ex6_16); YAML::Node doc = YAML::Load(ex6_16);
YAML_ASSERT(doc.Tag() == "tag:yaml.org,2002:str"); YAML_ASSERT(doc.Tag() == "tag:yaml.org,2002:str");
YAML_ASSERT(doc.as<std::string>() == "foo"); YAML_ASSERT(doc.as<std::string>() == "foo");
return true; return true;
@@ -603,7 +603,7 @@ namespace Test
// 6.17 // 6.17
TEST InvalidRepeatedTagDirective() { TEST InvalidRepeatedTagDirective() {
try { try {
YAML::Parse(ex6_17); YAML::Load(ex6_17);
} catch(const YAML::ParserException& e) { } catch(const YAML::ParserException& e) {
if(e.msg == YAML::ErrorMsg::REPEATED_TAG_DIRECTIVE) if(e.msg == YAML::ErrorMsg::REPEATED_TAG_DIRECTIVE)
return true; return true;
@@ -619,7 +619,7 @@ namespace Test
// 6.19 // 6.19
TEST SecondaryTagHandle() { TEST SecondaryTagHandle() {
YAML::Node doc = YAML::Parse(ex6_19); YAML::Node doc = YAML::Load(ex6_19);
YAML_ASSERT(doc.Tag() == "tag:example.com,2000:app/int"); YAML_ASSERT(doc.Tag() == "tag:example.com,2000:app/int");
YAML_ASSERT(doc.as<std::string>() == "1 - 3"); YAML_ASSERT(doc.as<std::string>() == "1 - 3");
return true; return true;
@@ -627,7 +627,7 @@ namespace Test
// 6.20 // 6.20
TEST TagHandles() { TEST TagHandles() {
YAML::Node doc = YAML::Parse(ex6_20); YAML::Node doc = YAML::Load(ex6_20);
YAML_ASSERT(doc.Tag() == "tag:example.com,2000:app/foo"); YAML_ASSERT(doc.Tag() == "tag:example.com,2000:app/foo");
YAML_ASSERT(doc.as<std::string>() == "bar"); YAML_ASSERT(doc.as<std::string>() == "bar");
return true; return true;
@@ -638,7 +638,7 @@ namespace Test
// 6.22 // 6.22
TEST GlobalTagPrefix() { TEST GlobalTagPrefix() {
YAML::Node doc = YAML::Parse(ex6_22); YAML::Node doc = YAML::Load(ex6_22);
YAML_ASSERT(doc.size() == 1); YAML_ASSERT(doc.size() == 1);
YAML_ASSERT(doc[0].Tag() == "tag:example.com,2000:app/foo"); YAML_ASSERT(doc[0].Tag() == "tag:example.com,2000:app/foo");
YAML_ASSERT(doc[0].as<std::string>() == "bar"); YAML_ASSERT(doc[0].as<std::string>() == "bar");
@@ -647,7 +647,7 @@ namespace Test
// 6.23 // 6.23
TEST NodeProperties() { TEST NodeProperties() {
YAML::Node doc = YAML::Parse(ex6_23); YAML::Node doc = YAML::Load(ex6_23);
YAML_ASSERT(doc.size() == 2); YAML_ASSERT(doc.size() == 2);
for(YAML::const_iterator it=doc.begin();it!=doc.end();++it) { for(YAML::const_iterator it=doc.begin();it!=doc.end();++it) {
if(it->first.as<std::string>() == "foo") { if(it->first.as<std::string>() == "foo") {
@@ -665,7 +665,7 @@ namespace Test
// 6.24 // 6.24
TEST VerbatimTags() { TEST VerbatimTags() {
YAML::Node doc = YAML::Parse(ex6_24); YAML::Node doc = YAML::Load(ex6_24);
YAML_ASSERT(doc.size() == 1); YAML_ASSERT(doc.size() == 1);
for(YAML::const_iterator it=doc.begin();it!=doc.end();++it) { for(YAML::const_iterator it=doc.begin();it!=doc.end();++it) {
YAML_ASSERT(it->first.Tag() == "tag:yaml.org,2002:str"); YAML_ASSERT(it->first.Tag() == "tag:yaml.org,2002:str");
@@ -678,13 +678,13 @@ namespace Test
// 6.25 // 6.25
TEST InvalidVerbatimTags() { TEST InvalidVerbatimTags() {
YAML::Node doc = YAML::Parse(ex6_25); YAML::Node doc = YAML::Load(ex6_25);
return " not implemented yet"; // TODO: check tags (but we probably will say these are valid, I think) return " not implemented yet"; // TODO: check tags (but we probably will say these are valid, I think)
} }
// 6.26 // 6.26
TEST TagShorthands() { TEST TagShorthands() {
YAML::Node doc = YAML::Parse(ex6_26); YAML::Node doc = YAML::Load(ex6_26);
YAML_ASSERT(doc.size() == 3); YAML_ASSERT(doc.size() == 3);
YAML_ASSERT(doc[0].Tag() == "!local"); YAML_ASSERT(doc[0].Tag() == "!local");
YAML_ASSERT(doc[0].as<std::string>() == "foo"); YAML_ASSERT(doc[0].as<std::string>() == "foo");
@@ -699,7 +699,7 @@ namespace Test
TEST InvalidTagShorthands() { TEST InvalidTagShorthands() {
bool threw = false; bool threw = false;
try { try {
YAML::Parse(ex6_27a); YAML::Load(ex6_27a);
} catch(const YAML::ParserException& e) { } catch(const YAML::ParserException& e) {
threw = true; threw = true;
if(e.msg != YAML::ErrorMsg::TAG_WITH_NO_SUFFIX) if(e.msg != YAML::ErrorMsg::TAG_WITH_NO_SUFFIX)
@@ -709,13 +709,13 @@ namespace Test
if(!threw) if(!threw)
return " No exception was thrown for a tag with no suffix"; return " No exception was thrown for a tag with no suffix";
YAML::Parse(ex6_27b); // TODO: should we reject this one (since !h! is not declared)? YAML::Load(ex6_27b); // TODO: should we reject this one (since !h! is not declared)?
return " not implemented yet"; return " not implemented yet";
} }
// 6.28 // 6.28
TEST NonSpecificTags() { TEST NonSpecificTags() {
YAML::Node doc = YAML::Parse(ex6_28); YAML::Node doc = YAML::Load(ex6_28);
YAML_ASSERT(doc.size() == 3); YAML_ASSERT(doc.size() == 3);
YAML_ASSERT(doc[0].as<std::string>() == "12"); // TODO: check tags. How? YAML_ASSERT(doc[0].as<std::string>() == "12"); // TODO: check tags. How?
YAML_ASSERT(doc[1].as<int>() == 12); YAML_ASSERT(doc[1].as<int>() == 12);
@@ -725,7 +725,7 @@ namespace Test
// 6.29 // 6.29
TEST NodeAnchors() { TEST NodeAnchors() {
YAML::Node doc = YAML::Parse(ex6_29); YAML::Node doc = YAML::Load(ex6_29);
YAML_ASSERT(doc.size() == 2); YAML_ASSERT(doc.size() == 2);
YAML_ASSERT(doc["First occurrence"].as<std::string>() == "Value"); YAML_ASSERT(doc["First occurrence"].as<std::string>() == "Value");
YAML_ASSERT(doc["Second occurrence"].as<std::string>() == "Value"); YAML_ASSERT(doc["Second occurrence"].as<std::string>() == "Value");
@@ -734,7 +734,7 @@ namespace Test
// 7.1 // 7.1
TEST AliasNodes() { TEST AliasNodes() {
YAML::Node doc = YAML::Parse(ex7_1); YAML::Node doc = YAML::Load(ex7_1);
YAML_ASSERT(doc.size() == 4); YAML_ASSERT(doc.size() == 4);
YAML_ASSERT(doc["First occurrence"].as<std::string>() == "Foo"); YAML_ASSERT(doc["First occurrence"].as<std::string>() == "Foo");
YAML_ASSERT(doc["Second occurrence"].as<std::string>() == "Foo"); YAML_ASSERT(doc["Second occurrence"].as<std::string>() == "Foo");
@@ -745,7 +745,7 @@ namespace Test
// 7.2 // 7.2
TEST EmptyNodes() { TEST EmptyNodes() {
YAML::Node doc = YAML::Parse(ex7_2); YAML::Node doc = YAML::Load(ex7_2);
YAML_ASSERT(doc.size() == 2); YAML_ASSERT(doc.size() == 2);
for(YAML::const_iterator it=doc.begin();it!=doc.end();++it) { for(YAML::const_iterator it=doc.begin();it!=doc.end();++it) {
if(it->first.as<std::string>() == "foo") { if(it->first.as<std::string>() == "foo") {
@@ -762,7 +762,7 @@ namespace Test
// 7.3 // 7.3
TEST CompletelyEmptyNodes() { TEST CompletelyEmptyNodes() {
YAML::Node doc = YAML::Parse(ex7_3); YAML::Node doc = YAML::Load(ex7_3);
YAML_ASSERT(doc.size() == 2); YAML_ASSERT(doc.size() == 2);
YAML_ASSERT(doc["foo"].IsNull()); YAML_ASSERT(doc["foo"].IsNull());
YAML_ASSERT(doc[YAML::Null].as<std::string>() == "bar"); YAML_ASSERT(doc[YAML::Null].as<std::string>() == "bar");
@@ -771,7 +771,7 @@ namespace Test
// 7.4 // 7.4
TEST DoubleQuotedImplicitKeys() { TEST DoubleQuotedImplicitKeys() {
YAML::Node doc = YAML::Parse(ex7_4); YAML::Node doc = YAML::Load(ex7_4);
YAML_ASSERT(doc.size() == 1); YAML_ASSERT(doc.size() == 1);
YAML_ASSERT(doc["implicit block key"].size() == 1); YAML_ASSERT(doc["implicit block key"].size() == 1);
YAML_ASSERT(doc["implicit block key"][0].size() == 1); YAML_ASSERT(doc["implicit block key"][0].size() == 1);
@@ -781,28 +781,28 @@ namespace Test
// 7.5 // 7.5
TEST DoubleQuotedLineBreaks() { TEST DoubleQuotedLineBreaks() {
YAML::Node doc = YAML::Parse(ex7_5); YAML::Node doc = YAML::Load(ex7_5);
YAML_ASSERT(doc.as<std::string>() == "folded to a space,\nto a line feed, or \t \tnon-content"); YAML_ASSERT(doc.as<std::string>() == "folded to a space,\nto a line feed, or \t \tnon-content");
return true; return true;
} }
// 7.6 // 7.6
TEST DoubleQuotedLines() { TEST DoubleQuotedLines() {
YAML::Node doc = YAML::Parse(ex7_6); YAML::Node doc = YAML::Load(ex7_6);
YAML_ASSERT(doc.as<std::string>() == " 1st non-empty\n2nd non-empty 3rd non-empty "); YAML_ASSERT(doc.as<std::string>() == " 1st non-empty\n2nd non-empty 3rd non-empty ");
return true; return true;
} }
// 7.7 // 7.7
TEST SingleQuotedCharacters() { TEST SingleQuotedCharacters() {
YAML::Node doc = YAML::Parse(ex7_7); YAML::Node doc = YAML::Load(ex7_7);
YAML_ASSERT(doc.as<std::string>() == "here's to \"quotes\""); YAML_ASSERT(doc.as<std::string>() == "here's to \"quotes\"");
return true; return true;
} }
// 7.8 // 7.8
TEST SingleQuotedImplicitKeys() { TEST SingleQuotedImplicitKeys() {
YAML::Node doc = YAML::Parse(ex7_8); YAML::Node doc = YAML::Load(ex7_8);
YAML_ASSERT(doc.size() == 1); YAML_ASSERT(doc.size() == 1);
YAML_ASSERT(doc["implicit block key"].size() == 1); YAML_ASSERT(doc["implicit block key"].size() == 1);
YAML_ASSERT(doc["implicit block key"][0].size() == 1); YAML_ASSERT(doc["implicit block key"][0].size() == 1);
@@ -812,14 +812,14 @@ namespace Test
// 7.9 // 7.9
TEST SingleQuotedLines() { TEST SingleQuotedLines() {
YAML::Node doc = YAML::Parse(ex7_9); YAML::Node doc = YAML::Load(ex7_9);
YAML_ASSERT(doc.as<std::string>() == " 1st non-empty\n2nd non-empty 3rd non-empty "); YAML_ASSERT(doc.as<std::string>() == " 1st non-empty\n2nd non-empty 3rd non-empty ");
return true; return true;
} }
// 7.10 // 7.10
TEST PlainCharacters() { TEST PlainCharacters() {
YAML::Node doc = YAML::Parse(ex7_10); YAML::Node doc = YAML::Load(ex7_10);
YAML_ASSERT(doc.size() == 6); YAML_ASSERT(doc.size() == 6);
YAML_ASSERT(doc[0].as<std::string>() == "::vector"); YAML_ASSERT(doc[0].as<std::string>() == "::vector");
YAML_ASSERT(doc[1].as<std::string>() == ": - ()"); YAML_ASSERT(doc[1].as<std::string>() == ": - ()");
@@ -837,7 +837,7 @@ namespace Test
// 7.11 // 7.11
TEST PlainImplicitKeys() { TEST PlainImplicitKeys() {
YAML::Node doc = YAML::Parse(ex7_11); YAML::Node doc = YAML::Load(ex7_11);
YAML_ASSERT(doc.size() == 1); YAML_ASSERT(doc.size() == 1);
YAML_ASSERT(doc["implicit block key"].size() == 1); YAML_ASSERT(doc["implicit block key"].size() == 1);
YAML_ASSERT(doc["implicit block key"][0].size() == 1); YAML_ASSERT(doc["implicit block key"][0].size() == 1);
@@ -847,14 +847,14 @@ namespace Test
// 7.12 // 7.12
TEST PlainLines() { TEST PlainLines() {
YAML::Node doc = YAML::Parse(ex7_12); YAML::Node doc = YAML::Load(ex7_12);
YAML_ASSERT(doc.as<std::string>() == "1st non-empty\n2nd non-empty 3rd non-empty"); YAML_ASSERT(doc.as<std::string>() == "1st non-empty\n2nd non-empty 3rd non-empty");
return true; return true;
} }
// 7.13 // 7.13
TEST FlowSequence() { TEST FlowSequence() {
YAML::Node doc = YAML::Parse(ex7_13); YAML::Node doc = YAML::Load(ex7_13);
YAML_ASSERT(doc.size() == 2); YAML_ASSERT(doc.size() == 2);
YAML_ASSERT(doc[0].size() == 2); YAML_ASSERT(doc[0].size() == 2);
YAML_ASSERT(doc[0][0].as<std::string>() == "one"); YAML_ASSERT(doc[0][0].as<std::string>() == "one");
@@ -867,7 +867,7 @@ namespace Test
// 7.14 // 7.14
TEST FlowSequenceEntries() { TEST FlowSequenceEntries() {
YAML::Node doc = YAML::Parse(ex7_14); YAML::Node doc = YAML::Load(ex7_14);
YAML_ASSERT(doc.size() == 5); YAML_ASSERT(doc.size() == 5);
YAML_ASSERT(doc[0].as<std::string>() == "double quoted"); YAML_ASSERT(doc[0].as<std::string>() == "double quoted");
YAML_ASSERT(doc[1].as<std::string>() == "single quoted"); YAML_ASSERT(doc[1].as<std::string>() == "single quoted");
@@ -881,7 +881,7 @@ namespace Test
// 7.15 // 7.15
TEST FlowMappings() { TEST FlowMappings() {
YAML::Node doc = YAML::Parse(ex7_15); YAML::Node doc = YAML::Load(ex7_15);
YAML_ASSERT(doc.size() == 2); YAML_ASSERT(doc.size() == 2);
YAML_ASSERT(doc[0].size() == 2); YAML_ASSERT(doc[0].size() == 2);
YAML_ASSERT(doc[0]["one"].as<std::string>() == "two"); YAML_ASSERT(doc[0]["one"].as<std::string>() == "two");
@@ -894,7 +894,7 @@ namespace Test
// 7.16 // 7.16
TEST FlowMappingEntries() { TEST FlowMappingEntries() {
YAML::Node doc = YAML::Parse(ex7_16); YAML::Node doc = YAML::Load(ex7_16);
YAML_ASSERT(doc.size() == 3); YAML_ASSERT(doc.size() == 3);
YAML_ASSERT(doc["explicit"].as<std::string>() == "entry"); YAML_ASSERT(doc["explicit"].as<std::string>() == "entry");
YAML_ASSERT(doc["implicit"].as<std::string>() == "entry"); YAML_ASSERT(doc["implicit"].as<std::string>() == "entry");
@@ -904,7 +904,7 @@ namespace Test
// 7.17 // 7.17
TEST FlowMappingSeparateValues() { TEST FlowMappingSeparateValues() {
YAML::Node doc = YAML::Parse(ex7_17); YAML::Node doc = YAML::Load(ex7_17);
YAML_ASSERT(doc.size() == 4); YAML_ASSERT(doc.size() == 4);
YAML_ASSERT(doc["unquoted"].as<std::string>() == "separate"); YAML_ASSERT(doc["unquoted"].as<std::string>() == "separate");
YAML_ASSERT(doc["http://foo.com"].IsNull()); YAML_ASSERT(doc["http://foo.com"].IsNull());
@@ -915,7 +915,7 @@ namespace Test
// 7.18 // 7.18
TEST FlowMappingAdjacentValues() { TEST FlowMappingAdjacentValues() {
YAML::Node doc = YAML::Parse(ex7_18); YAML::Node doc = YAML::Load(ex7_18);
YAML_ASSERT(doc.size() == 3); YAML_ASSERT(doc.size() == 3);
YAML_ASSERT(doc["adjacent"].as<std::string>() == "value"); YAML_ASSERT(doc["adjacent"].as<std::string>() == "value");
YAML_ASSERT(doc["readable"].as<std::string>() == "value"); YAML_ASSERT(doc["readable"].as<std::string>() == "value");
@@ -925,7 +925,7 @@ namespace Test
// 7.19 // 7.19
TEST SinglePairFlowMappings() { TEST SinglePairFlowMappings() {
YAML::Node doc = YAML::Parse(ex7_19); YAML::Node doc = YAML::Load(ex7_19);
YAML_ASSERT(doc.size() == 1); YAML_ASSERT(doc.size() == 1);
YAML_ASSERT(doc[0].size() == 1); YAML_ASSERT(doc[0].size() == 1);
YAML_ASSERT(doc[0]["foo"].as<std::string>() == "bar"); YAML_ASSERT(doc[0]["foo"].as<std::string>() == "bar");
@@ -934,7 +934,7 @@ namespace Test
// 7.20 // 7.20
TEST SinglePairExplicitEntry() { TEST SinglePairExplicitEntry() {
YAML::Node doc = YAML::Parse(ex7_20); YAML::Node doc = YAML::Load(ex7_20);
YAML_ASSERT(doc.size() == 1); YAML_ASSERT(doc.size() == 1);
YAML_ASSERT(doc[0].size() == 1); YAML_ASSERT(doc[0].size() == 1);
YAML_ASSERT(doc[0]["foo bar"].as<std::string>() == "baz"); YAML_ASSERT(doc[0]["foo bar"].as<std::string>() == "baz");
@@ -943,7 +943,7 @@ namespace Test
// 7.21 // 7.21
TEST SinglePairImplicitEntries() { TEST SinglePairImplicitEntries() {
YAML::Node doc = YAML::Parse(ex7_21); YAML::Node doc = YAML::Load(ex7_21);
YAML_ASSERT(doc.size() == 3); YAML_ASSERT(doc.size() == 3);
YAML_ASSERT(doc[0].size() == 1); YAML_ASSERT(doc[0].size() == 1);
YAML_ASSERT(doc[0][0].size() == 1); YAML_ASSERT(doc[0][0].size() == 1);
@@ -963,7 +963,7 @@ namespace Test
// 7.22 // 7.22
TEST InvalidImplicitKeys() { TEST InvalidImplicitKeys() {
try { try {
YAML::Parse(ex7_22); YAML::Load(ex7_22);
} catch(const YAML::Exception& e) { } catch(const YAML::Exception& e) {
if(e.msg == YAML::ErrorMsg::END_OF_SEQ_FLOW) if(e.msg == YAML::ErrorMsg::END_OF_SEQ_FLOW)
return true; return true;
@@ -975,7 +975,7 @@ namespace Test
// 7.23 // 7.23
TEST FlowContent() { TEST FlowContent() {
YAML::Node doc = YAML::Parse(ex7_23); YAML::Node doc = YAML::Load(ex7_23);
YAML_ASSERT(doc.size() == 5); YAML_ASSERT(doc.size() == 5);
YAML_ASSERT(doc[0].size() == 2); YAML_ASSERT(doc[0].size() == 2);
YAML_ASSERT(doc[0][0].as<std::string>() == "a"); YAML_ASSERT(doc[0][0].as<std::string>() == "a");
@@ -990,7 +990,7 @@ namespace Test
// 7.24 // 7.24
TEST FlowNodes() { TEST FlowNodes() {
YAML::Node doc = YAML::Parse(ex7_24); YAML::Node doc = YAML::Load(ex7_24);
YAML_ASSERT(doc.size() == 5); YAML_ASSERT(doc.size() == 5);
YAML_ASSERT(doc[0].Tag() == "tag:yaml.org,2002:str"); YAML_ASSERT(doc[0].Tag() == "tag:yaml.org,2002:str");
YAML_ASSERT(doc[0].as<std::string>() == "a"); YAML_ASSERT(doc[0].as<std::string>() == "a");
@@ -1004,7 +1004,7 @@ namespace Test
// 8.1 // 8.1
TEST BlockScalarHeader() { TEST BlockScalarHeader() {
YAML::Node doc = YAML::Parse(ex8_1); YAML::Node doc = YAML::Load(ex8_1);
YAML_ASSERT(doc.size() == 4); YAML_ASSERT(doc.size() == 4);
YAML_ASSERT(doc[0].as<std::string>() == "literal\n"); YAML_ASSERT(doc[0].as<std::string>() == "literal\n");
YAML_ASSERT(doc[1].as<std::string>() == " folded\n"); YAML_ASSERT(doc[1].as<std::string>() == " folded\n");
@@ -1015,7 +1015,7 @@ namespace Test
// 8.2 // 8.2
TEST BlockIndentationHeader() { TEST BlockIndentationHeader() {
YAML::Node doc = YAML::Parse(ex8_2); YAML::Node doc = YAML::Load(ex8_2);
YAML_ASSERT(doc.size() == 4); YAML_ASSERT(doc.size() == 4);
YAML_ASSERT(doc[0].as<std::string>() == "detected\n"); YAML_ASSERT(doc[0].as<std::string>() == "detected\n");
YAML_ASSERT(doc[1].as<std::string>() == "\n\n# detected\n"); YAML_ASSERT(doc[1].as<std::string>() == "\n\n# detected\n");
@@ -1029,7 +1029,7 @@ namespace Test
{ {
bool threw = false; bool threw = false;
try { try {
YAML::Parse(ex8_3a); YAML::Load(ex8_3a);
} catch(const YAML::Exception& e) { } catch(const YAML::Exception& e) {
if(e.msg != YAML::ErrorMsg::END_OF_SEQ) if(e.msg != YAML::ErrorMsg::END_OF_SEQ)
throw; throw;
@@ -1044,7 +1044,7 @@ namespace Test
{ {
bool threw = false; bool threw = false;
try { try {
YAML::Parse(ex8_3b); YAML::Load(ex8_3b);
} catch(const YAML::Exception& e) { } catch(const YAML::Exception& e) {
if(e.msg != YAML::ErrorMsg::END_OF_SEQ) if(e.msg != YAML::ErrorMsg::END_OF_SEQ)
throw; throw;
@@ -1059,7 +1059,7 @@ namespace Test
{ {
bool threw = false; bool threw = false;
try { try {
YAML::Parse(ex8_3c); YAML::Load(ex8_3c);
} catch(const YAML::Exception& e) { } catch(const YAML::Exception& e) {
if(e.msg != YAML::ErrorMsg::END_OF_SEQ) if(e.msg != YAML::ErrorMsg::END_OF_SEQ)
throw; throw;
@@ -1076,7 +1076,7 @@ namespace Test
// 8.4 // 8.4
TEST ChompingFinalLineBreak() { TEST ChompingFinalLineBreak() {
YAML::Node doc = YAML::Parse(ex8_4); YAML::Node doc = YAML::Load(ex8_4);
YAML_ASSERT(doc.size() == 3); YAML_ASSERT(doc.size() == 3);
YAML_ASSERT(doc["strip"].as<std::string>() == "text"); YAML_ASSERT(doc["strip"].as<std::string>() == "text");
YAML_ASSERT(doc["clip"].as<std::string>() == "text\n"); YAML_ASSERT(doc["clip"].as<std::string>() == "text\n");
@@ -1086,7 +1086,7 @@ namespace Test
// 8.5 // 8.5
TEST ChompingTrailingLines() { TEST ChompingTrailingLines() {
YAML::Node doc = YAML::Parse(ex8_5); YAML::Node doc = YAML::Load(ex8_5);
YAML_ASSERT(doc.size() == 3); YAML_ASSERT(doc.size() == 3);
YAML_ASSERT(doc["strip"].as<std::string>() == "# text"); YAML_ASSERT(doc["strip"].as<std::string>() == "# text");
YAML_ASSERT(doc["clip"].as<std::string>() == "# text\n"); YAML_ASSERT(doc["clip"].as<std::string>() == "# text\n");
@@ -1096,7 +1096,7 @@ namespace Test
// 8.6 // 8.6
TEST EmptyScalarChomping() { TEST EmptyScalarChomping() {
YAML::Node doc = YAML::Parse(ex8_6); YAML::Node doc = YAML::Load(ex8_6);
YAML_ASSERT(doc.size() == 3); YAML_ASSERT(doc.size() == 3);
YAML_ASSERT(doc["strip"].as<std::string>() == ""); YAML_ASSERT(doc["strip"].as<std::string>() == "");
YAML_ASSERT(doc["clip"].as<std::string>() == ""); YAML_ASSERT(doc["clip"].as<std::string>() == "");
@@ -1106,56 +1106,56 @@ namespace Test
// 8.7 // 8.7
TEST LiteralScalar() { TEST LiteralScalar() {
YAML::Node doc = YAML::Parse(ex8_7); YAML::Node doc = YAML::Load(ex8_7);
YAML_ASSERT(doc.as<std::string>() == "literal\n\ttext\n"); YAML_ASSERT(doc.as<std::string>() == "literal\n\ttext\n");
return true; return true;
} }
// 8.8 // 8.8
TEST LiteralContent() { TEST LiteralContent() {
YAML::Node doc = YAML::Parse(ex8_8); YAML::Node doc = YAML::Load(ex8_8);
YAML_ASSERT(doc.as<std::string>() == "\n\nliteral\n \n\ntext\n"); YAML_ASSERT(doc.as<std::string>() == "\n\nliteral\n \n\ntext\n");
return true; return true;
} }
// 8.9 // 8.9
TEST FoldedScalar() { TEST FoldedScalar() {
YAML::Node doc = YAML::Parse(ex8_9); YAML::Node doc = YAML::Load(ex8_9);
YAML_ASSERT(doc.as<std::string>() == "folded text\n"); YAML_ASSERT(doc.as<std::string>() == "folded text\n");
return true; return true;
} }
// 8.10 // 8.10
TEST FoldedLines() { TEST FoldedLines() {
YAML::Node doc = YAML::Parse(ex8_10); YAML::Node doc = YAML::Load(ex8_10);
YAML_ASSERT(doc.as<std::string>() == "\nfolded line\nnext line\n * bullet\n\n * list\n * lines\n\nlast line\n"); YAML_ASSERT(doc.as<std::string>() == "\nfolded line\nnext line\n * bullet\n\n * list\n * lines\n\nlast line\n");
return true; return true;
} }
// 8.11 // 8.11
TEST MoreIndentedLines() { TEST MoreIndentedLines() {
YAML::Node doc = YAML::Parse(ex8_11); YAML::Node doc = YAML::Load(ex8_11);
YAML_ASSERT(doc.as<std::string>() == "\nfolded line\nnext line\n * bullet\n\n * list\n * lines\n\nlast line\n"); YAML_ASSERT(doc.as<std::string>() == "\nfolded line\nnext line\n * bullet\n\n * list\n * lines\n\nlast line\n");
return true; return true;
} }
// 8.12 // 8.12
TEST EmptySeparationLines() { TEST EmptySeparationLines() {
YAML::Node doc = YAML::Parse(ex8_12); YAML::Node doc = YAML::Load(ex8_12);
YAML_ASSERT(doc.as<std::string>() == "\nfolded line\nnext line\n * bullet\n\n * list\n * lines\n\nlast line\n"); YAML_ASSERT(doc.as<std::string>() == "\nfolded line\nnext line\n * bullet\n\n * list\n * lines\n\nlast line\n");
return true; return true;
} }
// 8.13 // 8.13
TEST FinalEmptyLines() { TEST FinalEmptyLines() {
YAML::Node doc = YAML::Parse(ex8_13); YAML::Node doc = YAML::Load(ex8_13);
YAML_ASSERT(doc.as<std::string>() == "\nfolded line\nnext line\n * bullet\n\n * list\n * lines\n\nlast line\n"); YAML_ASSERT(doc.as<std::string>() == "\nfolded line\nnext line\n * bullet\n\n * list\n * lines\n\nlast line\n");
return true; return true;
} }
// 8.14 // 8.14
TEST BlockSequence() { TEST BlockSequence() {
YAML::Node doc = YAML::Parse(ex8_14); YAML::Node doc = YAML::Load(ex8_14);
YAML_ASSERT(doc.size() == 1); YAML_ASSERT(doc.size() == 1);
YAML_ASSERT(doc["block sequence"].size() == 2); YAML_ASSERT(doc["block sequence"].size() == 2);
YAML_ASSERT(doc["block sequence"][0].as<std::string>() == "one"); YAML_ASSERT(doc["block sequence"][0].as<std::string>() == "one");
@@ -1166,7 +1166,7 @@ namespace Test
// 8.15 // 8.15
TEST BlockSequenceEntryTypes() { TEST BlockSequenceEntryTypes() {
YAML::Node doc = YAML::Parse(ex8_15); YAML::Node doc = YAML::Load(ex8_15);
YAML_ASSERT(doc.size() == 4); YAML_ASSERT(doc.size() == 4);
YAML_ASSERT(doc[0].IsNull()); YAML_ASSERT(doc[0].IsNull());
YAML_ASSERT(doc[1].as<std::string>() == "block node\n"); YAML_ASSERT(doc[1].as<std::string>() == "block node\n");
@@ -1180,7 +1180,7 @@ namespace Test
// 8.16 // 8.16
TEST BlockMappings() { TEST BlockMappings() {
YAML::Node doc = YAML::Parse(ex8_16); YAML::Node doc = YAML::Load(ex8_16);
YAML_ASSERT(doc.size() == 1); YAML_ASSERT(doc.size() == 1);
YAML_ASSERT(doc["block mapping"].size() == 1); YAML_ASSERT(doc["block mapping"].size() == 1);
YAML_ASSERT(doc["block mapping"]["key"].as<std::string>() == "value"); YAML_ASSERT(doc["block mapping"]["key"].as<std::string>() == "value");
@@ -1189,7 +1189,7 @@ namespace Test
// 8.17 // 8.17
TEST ExplicitBlockMappingEntries() { TEST ExplicitBlockMappingEntries() {
YAML::Node doc = YAML::Parse(ex8_17); YAML::Node doc = YAML::Load(ex8_17);
YAML_ASSERT(doc.size() == 2); YAML_ASSERT(doc.size() == 2);
YAML_ASSERT(doc["explicit key"].IsNull()); YAML_ASSERT(doc["explicit key"].IsNull());
YAML_ASSERT(doc["block key\n"].size() == 2); YAML_ASSERT(doc["block key\n"].size() == 2);
@@ -1200,7 +1200,7 @@ namespace Test
// 8.18 // 8.18
TEST ImplicitBlockMappingEntries() { TEST ImplicitBlockMappingEntries() {
YAML::Node doc = YAML::Parse(ex8_18); YAML::Node doc = YAML::Load(ex8_18);
YAML_ASSERT(doc.size() == 3); YAML_ASSERT(doc.size() == 3);
YAML_ASSERT(doc["plain key"].as<std::string>() == "in-line value"); YAML_ASSERT(doc["plain key"].as<std::string>() == "in-line value");
YAML_ASSERT(doc[YAML::Null].IsNull()); YAML_ASSERT(doc[YAML::Null].IsNull());
@@ -1211,7 +1211,7 @@ namespace Test
// 8.19 // 8.19
TEST CompactBlockMappings() { TEST CompactBlockMappings() {
YAML::Node doc = YAML::Parse(ex8_19); YAML::Node doc = YAML::Load(ex8_19);
YAML_ASSERT(doc.size() == 2); YAML_ASSERT(doc.size() == 2);
YAML_ASSERT(doc[0].size() == 1); YAML_ASSERT(doc[0].size() == 1);
YAML_ASSERT(doc[0]["sun"].as<std::string>() == "yellow"); YAML_ASSERT(doc[0]["sun"].as<std::string>() == "yellow");
@@ -1225,7 +1225,7 @@ namespace Test
// 8.20 // 8.20
TEST BlockNodeTypes() { TEST BlockNodeTypes() {
YAML::Node doc = YAML::Parse(ex8_20); YAML::Node doc = YAML::Load(ex8_20);
YAML_ASSERT(doc.size() == 3); YAML_ASSERT(doc.size() == 3);
YAML_ASSERT(doc[0].as<std::string>() == "flow in block"); YAML_ASSERT(doc[0].as<std::string>() == "flow in block");
YAML_ASSERT(doc[1].as<std::string>() == "Block scalar\n"); YAML_ASSERT(doc[1].as<std::string>() == "Block scalar\n");
@@ -1236,7 +1236,7 @@ namespace Test
// 8.21 // 8.21
TEST BlockScalarNodes() { TEST BlockScalarNodes() {
YAML::Node doc = YAML::Parse(ex8_21); YAML::Node doc = YAML::Load(ex8_21);
YAML_ASSERT(doc.size() == 2); YAML_ASSERT(doc.size() == 2);
YAML_ASSERT(doc["literal"].as<std::string>() == "value"); // Note: I believe this is a bug in the YAML spec - it should be "value\n" YAML_ASSERT(doc["literal"].as<std::string>() == "value"); // Note: I believe this is a bug in the YAML spec - it should be "value\n"
YAML_ASSERT(doc["folded"].as<std::string>() == "value"); YAML_ASSERT(doc["folded"].as<std::string>() == "value");
@@ -1246,7 +1246,7 @@ namespace Test
// 8.22 // 8.22
TEST BlockCollectionNodes() { TEST BlockCollectionNodes() {
YAML::Node doc = YAML::Parse(ex8_22); YAML::Node doc = YAML::Load(ex8_22);
YAML_ASSERT(doc.size() == 2); YAML_ASSERT(doc.size() == 2);
YAML_ASSERT(doc["sequence"].size() == 2); YAML_ASSERT(doc["sequence"].size() == 2);
YAML_ASSERT(doc["sequence"][0].as<std::string>() == "entry"); YAML_ASSERT(doc["sequence"][0].as<std::string>() == "entry");

View File

@@ -46,7 +46,7 @@ void parse(std::istream& input)
std::cout << emitter.c_str() << "\n"; std::cout << emitter.c_str() << "\n";
} }
#else #else
YAML::Node doc = YAML::Parse(input); YAML::Node doc = YAML::Load(input);
std::cout << doc << "\n"; std::cout << doc << "\n";
#endif #endif
} catch(const YAML::Exception& e) { } catch(const YAML::Exception& e) {