From: Mukund Sivaraman Date: Fri, 7 Feb 2014 13:24:48 +0000 (+0530) Subject: [2185] Add tests for RdataPimplHolder X-Git-Tag: bind10-1.2.0beta1-release~41^2~4 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=5813a6de50708cb1d0a738afa56d0adbd6ba23da;p=thirdparty%2Fkea.git [2185] Add tests for RdataPimplHolder --- diff --git a/src/lib/dns/Makefile.am b/src/lib/dns/Makefile.am index b16c40c47f..057a7b60e0 100644 --- a/src/lib/dns/Makefile.am +++ b/src/lib/dns/Makefile.am @@ -137,6 +137,7 @@ libb10_dns___la_SOURCES += master_loader.h libb10_dns___la_SOURCES += rrset_collection_base.h libb10_dns___la_SOURCES += rrset_collection.h rrset_collection.cc libb10_dns___la_SOURCES += zone_checker.h zone_checker.cc +libb10_dns___la_SOURCES += rdata_pimpl_holder.h libb10_dns___la_SOURCES += rdata/generic/detail/char_string.h libb10_dns___la_SOURCES += rdata/generic/detail/char_string.cc libb10_dns___la_SOURCES += rdata/generic/detail/nsec_bitmap.h diff --git a/src/lib/dns/tests/Makefile.am b/src/lib/dns/tests/Makefile.am index 2557228b65..3f1a756470 100644 --- a/src/lib/dns/tests/Makefile.am +++ b/src/lib/dns/tests/Makefile.am @@ -38,6 +38,7 @@ run_unittests_SOURCES += opcode_unittest.cc run_unittests_SOURCES += rcode_unittest.cc run_unittests_SOURCES += rdata_unittest.h rdata_unittest.cc run_unittests_SOURCES += rdatafields_unittest.cc +run_unittests_SOURCES += rdata_pimpl_holder_unittest.cc run_unittests_SOURCES += rdata_char_string_unittest.cc run_unittests_SOURCES += rdata_in_a_unittest.cc rdata_in_aaaa_unittest.cc run_unittests_SOURCES += rdata_ns_unittest.cc rdata_soa_unittest.cc diff --git a/src/lib/dns/tests/rdata_pimpl_holder_unittest.cc b/src/lib/dns/tests/rdata_pimpl_holder_unittest.cc new file mode 100644 index 0000000000..96a03ba5ea --- /dev/null +++ b/src/lib/dns/tests/rdata_pimpl_holder_unittest.cc @@ -0,0 +1,62 @@ +// Copyright (C) 2014 Internet Systems Consortium, Inc. ("ISC") +// +// Permission to use, copy, modify, and/or distribute this software for any +// purpose with or without fee is hereby granted, provided that the above +// copyright notice and this permission notice appear in all copies. +// +// THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH +// REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +// AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, +// INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +// LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +// OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +// PERFORMANCE OF THIS SOFTWARE. + +#include + +#include + +using namespace isc::dns::rdata; + +namespace { + +TEST(RdataPimplHolderTest, all) { + // Let's check with an integer + int* i1 = new int(42); + RdataPimplHolder holder1(i1); + // The same pointer must be returned. + EXPECT_EQ(i1, holder1.get()); + // Obviously the value should match too. + EXPECT_EQ(42, *holder1.get()); + // We don't explictly delete i or holder1, so it should not leak + // anything when the test is done (checked by Valgrind). + + // The following cases are similar: + + // Test no-argument reset() + int* i2 = new int(43); + RdataPimplHolder holder2(i2); + holder2.reset(); + EXPECT_EQ(NULL, holder2.get()); + + // Test reset() with argument + int* i3 = new int(44); + int* i4 = new int(45); + RdataPimplHolder holder3(i3); + EXPECT_EQ(i3, holder3.get()); + holder3.reset(i4); + EXPECT_EQ(i4, holder3.get()); + EXPECT_EQ(45, *holder3.get()); + + // Test release() + RdataPimplHolder holder4(new int(46)); + EXPECT_NE(static_cast(NULL), holder4.get()); + EXPECT_EQ(46, *holder4.get()); + int* i5 = holder4.release(); + EXPECT_EQ(NULL, holder4.get()); + EXPECT_NE(static_cast(NULL), i5); + EXPECT_EQ(46, *i5); + delete i5; +} + +}