Commit dcf72e49 authored by Alexander Alekhin's avatar Alexander Alekhin

core(persistence): fix processing of multiple documents

parent c4c4ac28
......@@ -1900,18 +1900,19 @@ int FileStorage::getFormat() const
FileNode FileStorage::operator [](const char* key) const
{
if( p->roots.empty() )
return FileNode();
return p->roots[0][key];
return this->operator[](std::string(key));
}
FileNode FileStorage::operator [](const std::string& key) const
{
if( p->roots.empty() )
return FileNode();
return p->roots[0][key];
FileNode res;
for (size_t i = 0; i < p->roots.size(); i++)
{
res = p->roots[i][key];
if (!res.empty())
break;
}
return res;
}
String FileStorage::releaseAndGetString()
......
......@@ -1654,9 +1654,19 @@ TEST(Core_InputOutput, FileStorage_YAML_parse_multiple_documents)
fs.release();
fs.open(filename, FileStorage::READ);
ASSERT_EQ(42, (int)fs["a"]);
ASSERT_EQ(1988, (int)fs["b"]);
EXPECT_EQ(42, (int)fs["a"]);
EXPECT_EQ(1988, (int)fs["b"]);
EXPECT_EQ(42, (int)fs.root(0)["a"]);
EXPECT_TRUE(fs.root(0)["b"].empty());
EXPECT_TRUE(fs.root(1)["a"].empty());
EXPECT_EQ(1988, (int)fs.root(1)["b"]);
fs.release();
ASSERT_EQ(0, std::remove(filename.c_str()));
}
}} // namespace
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment