mirror of
https://github.com/jbeder/yaml-cpp.git
synced 2025-09-09 20:51:16 +00:00
Added failing self-reference tests
This commit is contained in:
@@ -188,6 +188,52 @@ namespace Test
|
||||
YAML_ASSERT(node.size() == 2);
|
||||
return true;
|
||||
}
|
||||
|
||||
TEST SelfReferenceSequence()
|
||||
{
|
||||
YAML::Node node;
|
||||
node[0] = node;
|
||||
YAML_ASSERT(node.Type() == YAML::NodeType::Sequence);
|
||||
YAML_ASSERT(node.size() == 1);
|
||||
YAML_ASSERT(node[0] == node);
|
||||
YAML_ASSERT(node[0][0] == node);
|
||||
YAML_ASSERT(node[0][0] == node[0]);
|
||||
return true;
|
||||
}
|
||||
|
||||
TEST ValueSelfReferenceMap()
|
||||
{
|
||||
YAML::Node node;
|
||||
node["key"] = node;
|
||||
YAML_ASSERT(node.Type() == YAML::NodeType::Map);
|
||||
YAML_ASSERT(node.size() == 1);
|
||||
YAML_ASSERT(node["key"] == node);
|
||||
YAML_ASSERT(node["key"]["key"] == node);
|
||||
YAML_ASSERT(node["key"]["key"] == node["key"]);
|
||||
return true;
|
||||
}
|
||||
|
||||
TEST KeySelfReferenceMap()
|
||||
{
|
||||
YAML::Node node;
|
||||
node[node] = "value";
|
||||
YAML_ASSERT(node.Type() == YAML::NodeType::Map);
|
||||
YAML_ASSERT(node.size() == 1);
|
||||
YAML_ASSERT(node[node].as<std::string>() == "value");
|
||||
return true;
|
||||
}
|
||||
|
||||
TEST SelfReferenceMap()
|
||||
{
|
||||
YAML::Node node;
|
||||
node[node] = node;
|
||||
YAML_ASSERT(node.Type() == YAML::NodeType::Map);
|
||||
YAML_ASSERT(node.size() == 1);
|
||||
YAML_ASSERT(node[node] == node);
|
||||
YAML_ASSERT(node[node][node] == node);
|
||||
YAML_ASSERT(node[node][node] == node[node]);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
void RunNodeTest(TEST (*test)(), const std::string& name, int& passed, int& total) {
|
||||
@@ -225,6 +271,10 @@ namespace Test
|
||||
RunNodeTest(&Node::StdMap, "std::map", passed, total);
|
||||
RunNodeTest(&Node::SimpleAlias, "simple alias", passed, total);
|
||||
RunNodeTest(&Node::AliasAsKey, "alias as key", passed, total);
|
||||
RunNodeTest(&Node::SelfReferenceSequence, "self reference sequence", passed, total);
|
||||
RunNodeTest(&Node::ValueSelfReferenceMap, "value self reference map", passed, total);
|
||||
RunNodeTest(&Node::KeySelfReferenceMap, "key self reference map", passed, total);
|
||||
RunNodeTest(&Node::SelfReferenceMap, "self reference map", passed, total);
|
||||
|
||||
std::cout << "Node tests: " << passed << "/" << total << " passed\n";
|
||||
return passed == total;
|
||||
|
Reference in New Issue
Block a user