Fix sequence sometimes not turning into a map (#450)

Previously, just referencing the next element in the sequence (and so constructing it, as an undefined element) would allow you to skip defining an element without turning the sequence into a map. E.g:

node[0] = "foo"; // sequence of size 1
node[1]; // sequence of size 1, with an undefined element at 1
node[2] = "bar"; // FIX: should be map of size 2 (since there's no element at index 1)
This commit is contained in:
butataatawa
2017-01-02 22:44:22 +01:00
committed by Jesse Beder
parent 3757b2023b
commit f82861001a
2 changed files with 13 additions and 2 deletions

View File

@@ -88,11 +88,22 @@ TEST(NodeTest, MapWithUndefinedValues) {
EXPECT_EQ(2, node.size());
}
TEST(NodeTest, SeqIntoMap) {
Node node;
node[0] = "test";
node[1];
node[2] = "value";
EXPECT_TRUE(node.IsMap());
EXPECT_EQ("test", node[0].as<std::string>());
EXPECT_EQ("value", node[2].as<std::string>());
EXPECT_EQ(2, node.size());
}
TEST(NodeTest, RemoveUnassignedNode) {
Node node(NodeType::Map);
node["key"];
node.remove("key");
EXPECT_EQ(node.size(), 0);
EXPECT_EQ(0, node.size());
}
TEST(NodeTest, MapForceInsert) {