From 6c76c8f88120e5e73372b7645ff646cf4566609e Mon Sep 17 00:00:00 2001 From: Dmitry Kurtaev Date: Mon, 12 Nov 2018 13:38:18 +0300 Subject: [PATCH] Add a test for FileNode::keys() --- modules/core/src/persistence_cpp.cpp | 11 +++++------ modules/core/test/test_io.cpp | 6 ++++++ 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/modules/core/src/persistence_cpp.cpp b/modules/core/src/persistence_cpp.cpp index 334c787c98..4b2fbb52d0 100644 --- a/modules/core/src/persistence_cpp.cpp +++ b/modules/core/src/persistence_cpp.cpp @@ -271,14 +271,13 @@ FileNode FileNode::operator[](int i) const std::vector FileNode::keys() const { + CV_Assert(isMap()); + std::vector res; - if (isMap()) + res.reserve(size()); + for (FileNodeIterator it = begin(); it != end(); ++it) { - res.reserve(size()); - for (FileNodeIterator it = begin(); it != end(); ++it) - { - res.push_back((*it).name()); - } + res.push_back((*it).name()); } return res; } diff --git a/modules/core/test/test_io.cpp b/modules/core/test/test_io.cpp index c7473b9ded..0ee0534a7f 100644 --- a/modules/core/test/test_io.cpp +++ b/modules/core/test/test_io.cpp @@ -1597,6 +1597,12 @@ TEST(Core_InputOutput, FileStorage_json_bool) ASSERT_EQ((int)fs["map_value"]["bool_true"], 1); ASSERT_EQ((std::string)fs["map_value"]["str_false"], "false"); ASSERT_EQ((int)fs["bool_false"], 0); + + std::vector keys = fs["map_value"].keys(); + ASSERT_EQ((int)keys.size(), 3); + ASSERT_EQ(keys[0], "int_value"); + ASSERT_EQ(keys[1], "bool_true"); + ASSERT_EQ(keys[2], "str_false"); fs.release(); }