From: JINMEI Tatuya Date: Fri, 2 Mar 2012 04:58:43 +0000 (-0800) Subject: [1607] show expected/actual RRsets values in rrset(s)Check() on failure. X-Git-Tag: trac2351_base~226^2~116^2~41^2~46^2~13 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=118f1f9d41fed38bb12d46f41d50dd2fd7367a80;p=thirdparty%2Fkea.git [1607] show expected/actual RRsets values in rrset(s)Check() on failure. (unrelated extension to testutil) --- diff --git a/src/lib/testutils/dnsmessage_test.cc b/src/lib/testutils/dnsmessage_test.cc index af354d555a..2e94158482 100644 --- a/src/lib/testutils/dnsmessage_test.cc +++ b/src/lib/testutils/dnsmessage_test.cc @@ -86,6 +86,9 @@ void rrsetCheck(isc::dns::ConstRRsetPtr expected_rrset, isc::dns::ConstRRsetPtr actual_rrset) { + SCOPED_TRACE("Comparing RRsets\n" + " Actual" + actual_rrset->toText() + + " Expected" + expected_rrset->toText()); EXPECT_EQ(expected_rrset->getName(), actual_rrset->getName()); EXPECT_EQ(expected_rrset->getClass(), actual_rrset->getClass()); EXPECT_EQ(expected_rrset->getType(), actual_rrset->getType()); diff --git a/src/lib/testutils/dnsmessage_test.h b/src/lib/testutils/dnsmessage_test.h index 1aba526350..8a46e0e23e 100644 --- a/src/lib/testutils/dnsmessage_test.h +++ b/src/lib/testutils/dnsmessage_test.h @@ -157,6 +157,18 @@ public: private: std::vector& rrsets_; }; + +class RRsetDumper { +public: + RRsetDumper(std::string& output) : + output_(output) + {} + void operator()(isc::dns::ConstRRsetPtr rrset) { + output_ += " " + rrset->toText(); + } +private: + std::string& output_; +}; } /// Set of unit tests to check if two sets of RRsets are identical. @@ -195,6 +207,10 @@ rrsetsCheck(EXPECTED_ITERATOR expected_begin, EXPECTED_ITERATOR expected_end, ACTUAL_ITERATOR actual_begin, ACTUAL_ITERATOR actual_end) { std::vector checked_rrsets; // for duplicate check + std::string expected_text, actual_text; + std::for_each(expected_begin, expected_end, + detail::RRsetDumper(expected_text)); + std::for_each(actual_begin, actual_end, detail::RRsetDumper(actual_text)); unsigned int rrset_matched = 0; ACTUAL_ITERATOR it; for (it = actual_begin; it != actual_end; ++it) { @@ -217,11 +233,16 @@ rrsetsCheck(EXPECTED_ITERATOR expected_begin, EXPECTED_ITERATOR expected_end, } } - // make sure all expected RRsets are in actual sets - EXPECT_EQ(std::distance(expected_begin, expected_end), rrset_matched); - // make sure rrsets only contains expected RRsets - EXPECT_EQ(std::distance(expected_begin, expected_end), - std::distance(actual_begin, actual_end)); + { + SCOPED_TRACE(std::string("Comparing two RRsets:\n") + + "Actual:\n" + actual_text + + "Expected:\n" + expected_text); + // make sure all expected RRsets are in actual sets + EXPECT_EQ(std::distance(expected_begin, expected_end), rrset_matched); + // make sure rrsets only contains expected RRsets + EXPECT_EQ(std::distance(expected_begin, expected_end), + std::distance(actual_begin, actual_end)); + } } /// Set of unit tests to check if two sets of RRsets are identical using