From aa980318fd1d2c554bc1f2663f2f521037eea951 Mon Sep 17 00:00:00 2001 From: Christian Engwer <christi@dune-project.org> Date: Tue, 24 Feb 2015 18:04:45 +0100 Subject: [PATCH] [test] add a test for the report method of the parametertree --- dune/common/test/parametertreetest.cc | 32 +++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/dune/common/test/parametertreetest.cc b/dune/common/test/parametertreetest.cc index 48d248832..e3de860b5 100644 --- a/dune/common/test/parametertreetest.cc +++ b/dune/common/test/parametertreetest.cc @@ -245,6 +245,35 @@ void testFS1523() check_assert(ptree.get<int>("setting") == -1); } +void check_recursiveTreeCompare(const Dune::ParameterTree & p1, + const Dune::ParameterTree & p2) +{ + check_assert(p1.getValueKeys() == p2.getValueKeys()); + check_assert(p1.getSubKeys() == p2.getSubKeys()); + typedef Dune::ParameterTree::KeyVector::const_iterator Iterator; + for (Iterator it = p1.getValueKeys().begin(); + it != p1.getValueKeys().end(); ++it) + check_assert(p1[*it] == p2[*it]); + for (Iterator it = p1.getSubKeys().begin(); + it != p1.getSubKeys().end(); ++it) + check_recursiveTreeCompare(p1.sub(*it), p2.sub(*it)); +} + +// test report method and read back in +void testReport() +{ + std::stringstream s; + s << "foo.i = 1 \n foo.bar.peng = hurz"; + Dune::ParameterTree ptree; + Dune::ParameterTreeParser::readINITree(s, ptree); + + std::stringstream s2; + ptree.report(s2); + Dune::ParameterTree ptree2; + Dune::ParameterTreeParser::readINITree(s2, ptree2); + check_recursiveTreeCompare(ptree, ptree2); +} + int main() { try { @@ -275,6 +304,9 @@ int main() // check the command line parser testOptionsParser(); + // check report + testReport(); + // check for specific bugs testFS1527(); testFS1523(); -- GitLab