Added IsNull, IsScalar, IsSequence, IsMap functions, so you don't have to query Type()
This commit is contained in:
parent
69af9b420a
commit
3a88c4b4a1
@ -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<typename T> const T as() const;
|
||||
|
@ -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<std::string>() == "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<int>() == 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<int>() == 10);
|
||||
YAML_ASSERT(node[1].as<std::string>() == "foo");
|
||||
YAML_ASSERT(node[2].as<std::string>() == "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<int>() == 10);
|
||||
YAML_ASSERT(node[1].as<std::string>() == "foo");
|
||||
YAML_ASSERT(node[2].as<std::string>() == "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<std::string>() == "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<std::string>() == "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<std::string>() == "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<std::string>() == "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<std::string>() == "value");
|
||||
YAML_ASSERT(node["other"].as<std::string>() == "value");
|
||||
|
@ -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<std::string>() == "Mark McGwire");
|
||||
YAML_ASSERT(doc[1].as<std::string>() == "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<std::string>() == "65");
|
||||
YAML_ASSERT(doc["avg"].as<std::string>() == "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<std::string>() == "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<std::string>() == "bar");
|
||||
return true;
|
||||
}
|
||||
@ -792,7 +792,7 @@ namespace Test
|
||||
YAML_ASSERT(doc.size() == 3);
|
||||
YAML_ASSERT(doc["explicit"].as<std::string>() == "entry");
|
||||
YAML_ASSERT(doc["implicit"].as<std::string>() == "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<std::string>() == "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<std::string>() == "omitted key");
|
||||
return true;
|
||||
}
|
||||
@ -813,7 +813,7 @@ namespace Test
|
||||
YAML_ASSERT(doc.size() == 3);
|
||||
YAML_ASSERT(doc["adjacent"].as<std::string>() == "value");
|
||||
YAML_ASSERT(doc["readable"].as<std::string>() == "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<std::string>() == "block node\n");
|
||||
YAML_ASSERT(doc[2].size() == 2);
|
||||
YAML_ASSERT(doc[2][0].as<std::string>() == "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<std::string>() == "one");
|
||||
YAML_ASSERT(doc["block key\n"][1].as<std::string>() == "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<std::string>() == "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<std::string>() == "entry");
|
||||
return true;
|
||||
|
Loading…
Reference in New Issue
Block a user