From 89ce2dc405075e710e09636e76ef71dc8b6d57e2 Mon Sep 17 00:00:00 2001 From: Alexander Alekhin Date: Tue, 28 Feb 2017 19:34:26 +0300 Subject: [PATCH] core: DMatch I/O tests --- modules/core/test/test_io.cpp | 128 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 128 insertions(+) diff --git a/modules/core/test/test_io.cpp b/modules/core/test/test_io.cpp index 910d6d4..59d260d 100644 --- a/modules/core/test/test_io.cpp +++ b/modules/core/test/test_io.cpp @@ -1084,3 +1084,131 @@ TEST(Core_InputOutput, filestorage_dmatch_io) } } } + +#if 0 +TEST(Core_InputOutput, FileStorage_DMatch) +{ + cv::FileStorage fs("dmatch.yml", cv::FileStorage::WRITE | cv::FileStorage::MEMORY); + + cv::DMatch d(1, 2, 3, -1.5f); + + EXPECT_NO_THROW(fs << "d" << d); + cv::String fs_result = fs.releaseAndGetString(); + EXPECT_STREQ(fs_result.c_str(), "%YAML:1.0\n---\nd: [ 1, 2, 3, -1.5000000000000000e+00 ]\n"); + + cv::FileStorage fs_read(fs_result, cv::FileStorage::READ | cv::FileStorage::MEMORY); + + cv::DMatch d_read; + ASSERT_NO_THROW(fs_read["d"] >> d_read); + + EXPECT_EQ(d.queryIdx, d_read.queryIdx); + EXPECT_EQ(d.trainIdx, d_read.trainIdx); + EXPECT_EQ(d.imgIdx, d_read.imgIdx); + EXPECT_EQ(d.distance, d_read.distance); +} +#endif + +TEST(Core_InputOutput, FileStorage_DMatch_vector) +{ + cv::FileStorage fs("dmatch.yml", cv::FileStorage::WRITE | cv::FileStorage::MEMORY); + + cv::DMatch d1(1, 2, 3, -1.5f); + cv::DMatch d2(2, 3, 4, 1.5f); + cv::DMatch d3(3, 2, 1, 0.5f); + std::vector dv; + dv.push_back(d1); + dv.push_back(d2); + dv.push_back(d3); + + EXPECT_NO_THROW(fs << "dv" << dv); + cv::String fs_result = fs.releaseAndGetString(); + EXPECT_STREQ(fs_result.c_str(), +"%YAML:1.0\n" +"---\n" +#if 0 +"dv:\n" +" - [ 1, 2, 3, -1.5000000000000000e+00 ]\n" +" - [ 2, 3, 4, 1.5000000000000000e+00 ]\n" +" - [ 3, 2, 1, 5.0000000000000000e-01 ]\n" +#else +"dv: [ 1, 2, 3, -1.5000000000000000e+00, 2, 3, 4, 1.5000000000000000e+00,\n" +" 3, 2, 1, 5.0000000000000000e-01 ]\n" +#endif +); + + cv::FileStorage fs_read(fs_result, cv::FileStorage::READ | cv::FileStorage::MEMORY); + + std::vector dv_read; + ASSERT_NO_THROW(fs_read["dv"] >> dv_read); + + ASSERT_EQ(dv.size(), dv_read.size()); + for (size_t i = 0; i < dv.size(); i++) + { + EXPECT_EQ(dv[i].queryIdx, dv_read[i].queryIdx); + EXPECT_EQ(dv[i].trainIdx, dv_read[i].trainIdx); + EXPECT_EQ(dv[i].imgIdx, dv_read[i].imgIdx); + EXPECT_EQ(dv[i].distance, dv_read[i].distance); + } +} + +TEST(Core_InputOutput, FileStorage_DMatch_vector_vector) +{ + cv::FileStorage fs("dmatch.yml", cv::FileStorage::WRITE | cv::FileStorage::MEMORY); + + cv::DMatch d1(1, 2, 3, -1.5f); + cv::DMatch d2(2, 3, 4, 1.5f); + cv::DMatch d3(3, 2, 1, 0.5f); + std::vector dv1; + dv1.push_back(d1); + dv1.push_back(d2); + dv1.push_back(d3); + + std::vector dv2; + dv2.push_back(d3); + dv2.push_back(d1); + + std::vector< std::vector > dvv; + dvv.push_back(dv1); + dvv.push_back(dv2); + + EXPECT_NO_THROW(fs << "dvv" << dvv); + cv::String fs_result = fs.releaseAndGetString(); + EXPECT_STREQ(fs_result.c_str(), +"%YAML:1.0\n" +"---\n" +"dvv:\n" +#if 0 +" -\n" +" - [ 1, 2, 3, -1.5000000000000000e+00 ]\n" +" - [ 2, 3, 4, 1.5000000000000000e+00 ]\n" +" - [ 3, 2, 1, 5.0000000000000000e-01 ]\n" +" -\n" +" - [ 3, 2, 1, 5.0000000000000000e-01 ]\n" +" - [ 1, 2, 3, -1.5000000000000000e+00 ]\n" +#else +" - [ 1, 2, 3, -1.5000000000000000e+00, 2, 3, 4, 1.5000000000000000e+00,\n" +" 3, 2, 1, 5.0000000000000000e-01 ]\n" +" - [ 3, 2, 1, 5.0000000000000000e-01, 1, 2, 3, -1.5000000000000000e+00 ]\n" +#endif +); + + cv::FileStorage fs_read(fs_result, cv::FileStorage::READ | cv::FileStorage::MEMORY); + + std::vector< std::vector > dvv_read; + ASSERT_NO_THROW(fs_read["dvv"] >> dvv_read); + + ASSERT_EQ(dvv.size(), dvv_read.size()); + for (size_t j = 0; j < dvv.size(); j++) + { + const std::vector& dv = dvv[j]; + const std::vector& dv_read = dvv_read[j]; + ASSERT_EQ(dvv.size(), dvv_read.size()); + for (size_t i = 0; i < dv.size(); i++) + { + EXPECT_EQ(dv[i].queryIdx, dv_read[i].queryIdx); + EXPECT_EQ(dv[i].trainIdx, dv_read[i].trainIdx); + EXPECT_EQ(dv[i].imgIdx, dv_read[i].imgIdx); + EXPECT_EQ(dv[i].distance, dv_read[i].distance); + } + } +} -- 2.7.4