diff --git a/include/yaml-cpp/node/node.h b/include/yaml-cpp/node/node.h index 6420fa4..95df7cb 100644 --- a/include/yaml-cpp/node/node.h +++ b/include/yaml-cpp/node/node.h @@ -29,6 +29,10 @@ namespace YAML ~Node(); NodeType::value Type() const; + bool IsNull() const { return Type() == NodeType::Null; } + bool IsScalar() const { return Type() == NodeType::Scalar; } + bool IsSequence() const { return Type() == NodeType::Sequence; } + bool IsMap() const { return Type() == NodeType::Map; } // access template const T as() const; diff --git a/test/new-api/nodetests.cpp b/test/new-api/nodetests.cpp index b0f92fb..e39c473 100644 --- a/test/new-api/nodetests.cpp +++ b/test/new-api/nodetests.cpp @@ -21,7 +21,7 @@ namespace Test TEST SimpleScalar() { YAML::Node node = YAML::Node("Hello, World!"); - YAML_ASSERT(node.Type() == YAML::NodeType::Scalar); + YAML_ASSERT(node.IsScalar()); YAML_ASSERT(node.as() == "Hello, World!"); return true; } @@ -29,7 +29,7 @@ namespace Test TEST IntScalar() { YAML::Node node = YAML::Node(15); - YAML_ASSERT(node.Type() == YAML::NodeType::Scalar); + YAML_ASSERT(node.IsScalar()); YAML_ASSERT(node.as() == 15); return true; } @@ -40,12 +40,12 @@ namespace Test node.append(10); node.append("foo"); node.append("monkey"); - YAML_ASSERT(node.Type() == YAML::NodeType::Sequence); + YAML_ASSERT(node.IsSequence()); YAML_ASSERT(node.size() == 3); YAML_ASSERT(node[0].as() == 10); YAML_ASSERT(node[1].as() == "foo"); YAML_ASSERT(node[2].as() == "monkey"); - YAML_ASSERT(node.Type() == YAML::NodeType::Sequence); + YAML_ASSERT(node.IsSequence()); return true; } @@ -55,12 +55,12 @@ namespace Test node[0] = 10; node[1] = "foo"; node[2] = "monkey"; - YAML_ASSERT(node.Type() == YAML::NodeType::Sequence); + YAML_ASSERT(node.IsSequence()); YAML_ASSERT(node.size() == 3); YAML_ASSERT(node[0].as() == 10); YAML_ASSERT(node[1].as() == "foo"); YAML_ASSERT(node[2].as() == "monkey"); - YAML_ASSERT(node.Type() == YAML::NodeType::Sequence); + YAML_ASSERT(node.IsSequence()); return true; } @@ -68,7 +68,7 @@ namespace Test { YAML::Node node; node["key"] = "value"; - YAML_ASSERT(node.Type() == YAML::NodeType::Map); + YAML_ASSERT(node.IsMap()); YAML_ASSERT(node["key"].as() == "value"); YAML_ASSERT(node.size() == 1); return true; @@ -79,7 +79,7 @@ namespace Test YAML::Node node; node["key"] = "value"; node["undefined"]; - YAML_ASSERT(node.Type() == YAML::NodeType::Map); + YAML_ASSERT(node.IsMap()); YAML_ASSERT(node["key"].as() == "value"); YAML_ASSERT(node.size() == 1); @@ -193,7 +193,7 @@ namespace Test { YAML::Node node; node[0] = node; - YAML_ASSERT(node.Type() == YAML::NodeType::Sequence); + YAML_ASSERT(node.IsSequence()); YAML_ASSERT(node.size() == 1); YAML_ASSERT(node[0] == node); YAML_ASSERT(node[0][0] == node); @@ -205,7 +205,7 @@ namespace Test { YAML::Node node; node["key"] = node; - YAML_ASSERT(node.Type() == YAML::NodeType::Map); + YAML_ASSERT(node.IsMap()); YAML_ASSERT(node.size() == 1); YAML_ASSERT(node["key"] == node); YAML_ASSERT(node["key"]["key"] == node); @@ -217,7 +217,7 @@ namespace Test { YAML::Node node; node[node] = "value"; - YAML_ASSERT(node.Type() == YAML::NodeType::Map); + YAML_ASSERT(node.IsMap()); YAML_ASSERT(node.size() == 1); YAML_ASSERT(node[node].as() == "value"); return true; @@ -227,7 +227,7 @@ namespace Test { YAML::Node node; node[node] = node; - YAML_ASSERT(node.Type() == YAML::NodeType::Map); + YAML_ASSERT(node.IsMap()); YAML_ASSERT(node.size() == 1); YAML_ASSERT(node[node] == node); YAML_ASSERT(node[node][node] == node); @@ -240,7 +240,7 @@ namespace Test YAML::Node node; YAML::Node tmp = node["key"]; tmp = "value"; - YAML_ASSERT(node.Type() == YAML::NodeType::Map); + YAML_ASSERT(node.IsMap()); YAML_ASSERT(node.size() == 1); YAML_ASSERT(node["key"].as() == "value"); return true; @@ -252,7 +252,7 @@ namespace Test YAML::Node tmp = node["key"]; tmp = node["other"]; node["other"] = "value"; - YAML_ASSERT(node.Type() == YAML::NodeType::Map); + YAML_ASSERT(node.IsMap()); YAML_ASSERT(node.size() == 2); YAML_ASSERT(node["key"].as() == "value"); YAML_ASSERT(node["other"].as() == "value"); diff --git a/test/new-api/spectests.cpp b/test/new-api/spectests.cpp index 68f7809..843a803 100644 --- a/test/new-api/spectests.cpp +++ b/test/new-api/spectests.cpp @@ -11,7 +11,7 @@ namespace Test // 2.1 TEST SeqScalars() { YAML::Node doc = YAML::Parse(ex2_1); - YAML_ASSERT(doc.Type() == YAML::NodeType::Sequence); + YAML_ASSERT(doc.IsSequence()); YAML_ASSERT(doc.size() == 3); YAML_ASSERT(doc[0].as() == "Mark McGwire"); YAML_ASSERT(doc[1].as() == "Sammy Sosa"); @@ -22,7 +22,7 @@ namespace Test // 2.2 TEST MappingScalarsToScalars() { YAML::Node doc = YAML::Parse(ex2_2); - YAML_ASSERT(doc.Type() == YAML::NodeType::Map); + YAML_ASSERT(doc.IsMap()); YAML_ASSERT(doc.size() == 3); YAML_ASSERT(doc["hr"].as() == "65"); YAML_ASSERT(doc["avg"].as() == "0.278"); @@ -33,7 +33,7 @@ namespace Test // 2.3 TEST MappingScalarsToSequences() { YAML::Node doc = YAML::Parse(ex2_3); - YAML_ASSERT(doc.Type() == YAML::NodeType::Map); + YAML_ASSERT(doc.IsMap()); YAML_ASSERT(doc.size() == 2); YAML_ASSERT(doc["american"].size() == 3); YAML_ASSERT(doc["american"][0].as() == "Boston Red Sox"); @@ -285,9 +285,9 @@ namespace Test YAML::Node doc = YAML::Parse(ex2_25); YAML_ASSERT(doc.Tag() == "tag:yaml.org,2002:set"); YAML_ASSERT(doc.size() == 3); - YAML_ASSERT(doc["Mark McGwire"].Type() == YAML::NodeType::Null); - YAML_ASSERT(doc["Sammy Sosa"].Type() == YAML::NodeType::Null); - YAML_ASSERT(doc["Ken Griffey"].Type() == YAML::NodeType::Null); + YAML_ASSERT(doc["Mark McGwire"].IsNull()); + YAML_ASSERT(doc["Sammy Sosa"].IsNull()); + YAML_ASSERT(doc["Ken Griffey"].IsNull()); return true; } @@ -379,7 +379,7 @@ namespace Test // 5.5 TEST CommentIndicator() { YAML::Node doc = YAML::Parse(ex5_5); - YAML_ASSERT(doc.Type() == YAML::NodeType::Null); + YAML_ASSERT(doc.IsNull()); return true; } @@ -539,7 +539,7 @@ namespace Test // 6.10 TEST CommentLines() { YAML::Node doc = YAML::Parse(ex6_10); - YAML_ASSERT(doc.Type() == YAML::NodeType::Null); + YAML_ASSERT(doc.IsNull()); return true; } @@ -658,7 +658,7 @@ namespace Test TEST CompletelyEmptyNodes() { YAML::Node doc = YAML::Parse(ex7_3); YAML_ASSERT(doc.size() == 2); - YAML_ASSERT(doc["foo"].Type() == YAML::NodeType::Null); + YAML_ASSERT(doc["foo"].IsNull()); YAML_ASSERT(doc[YAML::Null].as() == "bar"); return true; } @@ -792,7 +792,7 @@ namespace Test YAML_ASSERT(doc.size() == 3); YAML_ASSERT(doc["explicit"].as() == "entry"); YAML_ASSERT(doc["implicit"].as() == "entry"); - YAML_ASSERT(doc[YAML::Null].Type() == YAML::NodeType::Null); + YAML_ASSERT(doc[YAML::Null].IsNull()); return true; } @@ -801,8 +801,8 @@ namespace Test YAML::Node doc = YAML::Parse(ex7_17); YAML_ASSERT(doc.size() == 4); YAML_ASSERT(doc["unquoted"].as() == "separate"); - YAML_ASSERT(doc["http://foo.com"].Type() == YAML::NodeType::Null); - YAML_ASSERT(doc["omitted value"].Type() == YAML::NodeType::Null); + YAML_ASSERT(doc["http://foo.com"].IsNull()); + YAML_ASSERT(doc["omitted value"].IsNull()); YAML_ASSERT(doc[YAML::Null].as() == "omitted key"); return true; } @@ -813,7 +813,7 @@ namespace Test YAML_ASSERT(doc.size() == 3); YAML_ASSERT(doc["adjacent"].as() == "value"); YAML_ASSERT(doc["readable"].as() == "value"); - YAML_ASSERT(doc["empty"].Type() == YAML::NodeType::Null); + YAML_ASSERT(doc["empty"].IsNull()); return true; } @@ -1051,7 +1051,7 @@ namespace Test TEST BlockSequenceEntryTypes() { YAML::Node doc = YAML::Parse(ex8_15); YAML_ASSERT(doc.size() == 4); - YAML_ASSERT(doc[0].Type() == YAML::NodeType::Null); + YAML_ASSERT(doc[0].IsNull()); YAML_ASSERT(doc[1].as() == "block node\n"); YAML_ASSERT(doc[2].size() == 2); YAML_ASSERT(doc[2][0].as() == "one"); @@ -1074,7 +1074,7 @@ namespace Test TEST ExplicitBlockMappingEntries() { YAML::Node doc = YAML::Parse(ex8_17); YAML_ASSERT(doc.size() == 2); - YAML_ASSERT(doc["explicit key"].Type() == YAML::NodeType::Null); + YAML_ASSERT(doc["explicit key"].IsNull()); YAML_ASSERT(doc["block key\n"].size() == 2); YAML_ASSERT(doc["block key\n"][0].as() == "one"); YAML_ASSERT(doc["block key\n"][1].as() == "two"); @@ -1086,7 +1086,7 @@ namespace Test YAML::Node doc = YAML::Parse(ex8_18); YAML_ASSERT(doc.size() == 3); YAML_ASSERT(doc["plain key"].as() == "in-line value"); - YAML_ASSERT(doc[YAML::Null].Type() == YAML::NodeType::Null); + YAML_ASSERT(doc[YAML::Null].IsNull()); YAML_ASSERT(doc["quoted key"].size() == 1); YAML_ASSERT(doc["quoted key"][0].as() == "entry"); return true;