diff options
Diffstat (limited to 'geom_matching/wasserstein/tests/test_hera_wasserstein.cpp')
-rw-r--r-- | geom_matching/wasserstein/tests/test_hera_wasserstein.cpp | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/geom_matching/wasserstein/tests/test_hera_wasserstein.cpp b/geom_matching/wasserstein/tests/test_hera_wasserstein.cpp index a1a257b..3d5db5f 100644 --- a/geom_matching/wasserstein/tests/test_hera_wasserstein.cpp +++ b/geom_matching/wasserstein/tests/test_hera_wasserstein.cpp @@ -200,6 +200,29 @@ TEST_CASE("file cases", "wasserstein_dist") std::cout << ts << " PASSED " << std::endl; } } + + SECTION("from DIPHA file:") { + const char* file_name = "../tests/data/test_list.txt"; + std::ifstream f; + f.open(file_name); + std::vector<TestFromFileCase> test_params; + std::string s; + while (std::getline(f, s)) { + test_params.emplace_back(s); + } + + for(const auto& ts : test_params) { + params.wasserstein_power = ts.q; + params.internal_p = ts.internal_p; + bool read_file_A = hera::read_diagram_dipha<double, PairVector>(ts.file_1 + std::string(".pd.dipha"), 1, diagram_A); + bool read_file_B = hera::read_diagram_dipha<double, PairVector>(ts.file_2 + std::string(".pd.dipha"), 1, diagram_B); + REQUIRE( read_file_A ); + REQUIRE( read_file_B ); + double hera_answer = hera::wasserstein_dist(diagram_A, diagram_B, params); + REQUIRE( fabs(hera_answer - ts.answer) <= 0.01 * hera_answer ); + std::cout << ts << " PASSED " << std::endl; + } + } } |