Fix sequence sometimes not turning into a map
This commit is contained in:
parent
147d909fe6
commit
e96654e409
@ -32,7 +32,7 @@ struct get_idx<Key,
|
|||||||
|
|
||||||
static node* get(std::vector<node*>& sequence, const Key& key,
|
static node* get(std::vector<node*>& sequence, const Key& key,
|
||||||
shared_memory_holder pMemory) {
|
shared_memory_holder pMemory) {
|
||||||
if (key > sequence.size())
|
if (key > sequence.size() || (key > 0 && !sequence[key-1]->is_defined()))
|
||||||
return 0;
|
return 0;
|
||||||
if (key == sequence.size())
|
if (key == sequence.size())
|
||||||
sequence.push_back(&pMemory->create_node());
|
sequence.push_back(&pMemory->create_node());
|
||||||
|
|||||||
@ -88,11 +88,22 @@ TEST(NodeTest, MapWithUndefinedValues) {
|
|||||||
EXPECT_EQ(2, node.size());
|
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) {
|
TEST(NodeTest, RemoveUnassignedNode) {
|
||||||
Node node(NodeType::Map);
|
Node node(NodeType::Map);
|
||||||
node["key"];
|
node["key"];
|
||||||
node.remove("key");
|
node.remove("key");
|
||||||
EXPECT_EQ(node.size(), 0);
|
EXPECT_EQ(0, node.size());
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(NodeTest, MapForceInsert) {
|
TEST(NodeTest, MapForceInsert) {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user