From: dkurt Date: Tue, 25 Jul 2017 10:39:32 +0000 (+0300) Subject: Missed NAMED bit of JSON nodes tag X-Git-Tag: accepted/tizen/6.0/unified/20201030.111113~782^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=3515f6ec3329d35624b4e30b55ca55cf469b0cc0;p=platform%2Fupstream%2Fopencv.git Missed NAMED bit of JSON nodes tag --- diff --git a/modules/core/src/persistence.cpp b/modules/core/src/persistence.cpp index a675784..963c4a1 100644 --- a/modules/core/src/persistence.cpp +++ b/modules/core/src/persistence.cpp @@ -3781,6 +3781,7 @@ static char* icvJSONParseMap( CvFileStorage* fs, char* ptr, CvFileNode* node ) ptr = icvJSONParseMap( fs, ptr, child ); else ptr = icvJSONParseValue( fs, ptr, child ); + child->tag |= CV_NODE_NAMED; } } diff --git a/modules/core/test/test_io.cpp b/modules/core/test/test_io.cpp index 939e80d..c121386 100644 --- a/modules/core/test/test_io.cpp +++ b/modules/core/test/test_io.cpp @@ -1292,3 +1292,29 @@ TEST(Core_InputOutput, FileStorage_format_yml_gz) fs.open("opencv_storage.yml.gz", FileStorage::WRITE | FileStorage::MEMORY); EXPECT_EQ(FileStorage::FORMAT_YAML, fs.getFormat()); } + +TEST(Core_InputOutput, FileStorage_json_named_nodes) +{ + std::string test = + "{ " + "\"int_value\": -324," + "\"map_value\": {" + "\"str_value\": \"mystring\"" + "}," + "\"array\": [0.2, 0.1]" + "}"; + FileStorage fs(test, FileStorage::READ | FileStorage::MEMORY); + + ASSERT_TRUE(fs["int_value"].isNamed()); + ASSERT_TRUE(fs["map_value"].isNamed()); + ASSERT_TRUE(fs["map_value"]["str_value"].isNamed()); + ASSERT_TRUE(fs["array"].isNamed()); + ASSERT_FALSE(fs["array"][0].isNamed()); + ASSERT_FALSE(fs["array"][1].isNamed()); + + ASSERT_EQ(fs["int_value"].name(), "int_value"); + ASSERT_EQ(fs["map_value"].name(), "map_value"); + ASSERT_EQ(fs["map_value"]["str_value"].name(), "str_value"); + ASSERT_EQ(fs["array"].name(), "array"); + fs.release(); +}