[svn] commit: r950 - in /branches/each-ds/src/lib/dns/cpp: rrsetlist.cc rrsetlist_unittest.cc
BIND 10 source code commits
bind10-changes at lists.isc.org
Wed Feb 24 19:28:12 UTC 2010
Author: each
Date: Wed Feb 24 19:28:12 2010
New Revision: 950
Log:
- new tests and refactoring in rrsetlist_unittest.cc
- fixed a bug in rrsetlist.cc (failed to throw exception when adding
an rrsetlist with the same type/class as a prior one)
Modified:
branches/each-ds/src/lib/dns/cpp/rrsetlist.cc
branches/each-ds/src/lib/dns/cpp/rrsetlist_unittest.cc
Modified: branches/each-ds/src/lib/dns/cpp/rrsetlist.cc
==============================================================================
--- branches/each-ds/src/lib/dns/cpp/rrsetlist.cc (original)
+++ branches/each-ds/src/lib/dns/cpp/rrsetlist.cc Wed Feb 24 19:28:12 2010
@@ -30,13 +30,14 @@
namespace dns {
void
-RRsetList::addRRset(const RRsetPtr new_rrsetptr)
+RRsetList::addRRset(const RRsetPtr rrsetptr)
{
- const RRsetPtr found_rrset = findRRset(new_rrsetptr);
- if (found_rrset) {
+ const RRsetPtr rrset_found = findRRset(rrsetptr->getType(),
+ rrsetptr->getClass());
+ if (rrset_found) {
dns_throw(DuplicateRRset, "");
}
- rrsets_.push_back(new_rrsetptr);
+ rrsets_.push_back(rrsetptr);
}
const RRsetPtr
Modified: branches/each-ds/src/lib/dns/cpp/rrsetlist_unittest.cc
==============================================================================
--- branches/each-ds/src/lib/dns/cpp/rrsetlist_unittest.cc (original)
+++ branches/each-ds/src/lib/dns/cpp/rrsetlist_unittest.cc Wed Feb 24 19:28:12 2010
@@ -38,6 +38,7 @@
class RRsetListTest : public ::testing::Test {
protected:
RRsetListTest() {}
+ void setupList(RRsetList& list);
static const in::A rdata_in_a;
static const in::AAAA rdata_in_aaaa;
static const generic::NS rdata_ns;
@@ -54,6 +55,32 @@
3600000, 1200);
const generic::CNAME RRsetListTest::rdata_cname("target.example.com");
+void
+RRsetListTest::setupList(RRsetList& list) {
+ RRsetPtr a(new RRset(Name("example.com"), RRClass::IN(),
+ RRType::A(), RRTTL(3600)));
+ RRsetPtr aaaa(new RRset(Name("example.com"), RRClass::IN(),
+ RRType::AAAA(), RRTTL(3600)));
+ RRsetPtr ns(new RRset(Name("example.com"), RRClass::IN(),
+ RRType::NS(), RRTTL(3600)));
+ RRsetPtr soa(new RRset(Name("example.com"), RRClass::IN(),
+ RRType::SOA(), RRTTL(3600)));
+ RRsetPtr cname(new RRset(Name("example.com"), RRClass::IN(),
+ RRType::CNAME(), RRTTL(3600)));
+
+ a->addRdata(rdata_in_a);
+ aaaa->addRdata(rdata_in_aaaa);
+ ns->addRdata(rdata_ns);
+ soa->addRdata(rdata_soa);
+ cname->addRdata(rdata_cname);
+
+ list.addRRset(a);
+ list.addRRset(aaaa);
+ list.addRRset(ns);
+ list.addRRset(soa);
+ list.addRRset(cname);
+}
+
TEST_F(RRsetListTest, emptyOnInitialCreate) {
RRsetList list;
EXPECT_EQ(list.size(), 0);
@@ -61,59 +88,21 @@
TEST_F(RRsetListTest, addRRsets) {
RRsetList list;
- RRsetPtr a(new RRset(Name("example.com"), RRClass::IN(),
- RRType::A(), RRTTL(3600)));
- a->addRdata(rdata_in_a);
- list.addRRset(a);
+ setupList(list);
+ EXPECT_EQ(list.size(), 5);
+}
- RRsetPtr aaaa(new RRset(Name("example.com"), RRClass::IN(),
- RRType::AAAA(), RRTTL(3600)));
- aaaa->addRdata(rdata_in_aaaa);
- list.addRRset(aaaa);
-
- RRsetPtr ns(new RRset(Name("example.com"), RRClass::IN(),
- RRType::NS(), RRTTL(3600)));
- ns->addRdata(rdata_ns);
- list.addRRset(ns);
-
- RRsetPtr soa(new RRset(Name("example.com"), RRClass::IN(),
- RRType::SOA(), RRTTL(3600)));
- soa->addRdata(rdata_soa);
- list.addRRset(soa);
-
- RRsetPtr cname(new RRset(Name("example.com"), RRClass::IN(),
+TEST_F(RRsetListTest, extraRRset) {
+ RRsetList list;
+ setupList(list);
+ RRsetPtr cname(new RRset(Name("another.example.com"), RRClass::IN(),
RRType::CNAME(), RRTTL(3600)));
- cname->addRdata(rdata_cname);
- list.addRRset(cname);
- EXPECT_EQ(list.size(), 5);
+ EXPECT_THROW(list.addRRset(cname), DuplicateRRset);
}
TEST_F(RRsetListTest, randomAccess) {
RRsetList list;
- RRsetPtr a(new RRset(Name("example.com"), RRClass::IN(),
- RRType::A(), RRTTL(3600)));
- a->addRdata(rdata_in_a);
- list.addRRset(a);
-
- RRsetPtr aaaa(new RRset(Name("example.com"), RRClass::IN(),
- RRType::AAAA(), RRTTL(3600)));
- aaaa->addRdata(rdata_in_aaaa);
- list.addRRset(aaaa);
-
- RRsetPtr ns(new RRset(Name("example.com"), RRClass::IN(),
- RRType::NS(), RRTTL(3600)));
- ns->addRdata(rdata_ns);
- list.addRRset(ns);
-
- RRsetPtr soa(new RRset(Name("example.com"), RRClass::IN(),
- RRType::SOA(), RRTTL(3600)));
- soa->addRdata(rdata_soa);
- list.addRRset(soa);
-
- RRsetPtr cname(new RRset(Name("example.com"), RRClass::IN(),
- RRType::CNAME(), RRTTL(3600)));
- cname->addRdata(rdata_cname);
- list.addRRset(cname);
+ setupList(list);
RRsetPtr p;
@@ -133,6 +122,12 @@
EXPECT_TRUE(p->getType() == RRType::SOA());
}
+TEST_F(RRsetListTest, findRRset) {
+ RRsetList list;
+ setupList(list);
+ EXPECT_EQ(list[RRType::A()], list.findRRset(RRType::A(), RRClass::IN()));
+}
+
TEST_F(RRsetListTest, checkData) {
RRsetList list;
RRsetPtr a(new RRset(Name("example.com"), RRClass::IN(),
@@ -148,32 +143,10 @@
TEST_F(RRsetListTest, iterate) {
RRsetList list;
- RRsetPtr a(new RRset(Name("example.com"), RRClass::IN(),
- RRType::A(), RRTTL(3600)));
- a->addRdata(rdata_in_a);
- list.addRRset(a);
-
- RRsetPtr aaaa(new RRset(Name("example.com"), RRClass::IN(),
- RRType::AAAA(), RRTTL(3600)));
- aaaa->addRdata(rdata_in_aaaa);
- list.addRRset(aaaa);
-
- RRsetPtr ns(new RRset(Name("example.com"), RRClass::IN(),
- RRType::NS(), RRTTL(3600)));
- ns->addRdata(rdata_ns);
- list.addRRset(ns);
-
- RRsetPtr soa(new RRset(Name("example.com"), RRClass::IN(),
- RRType::SOA(), RRTTL(3600)));
- soa->addRdata(rdata_soa);
- list.addRRset(soa);
-
- RRsetPtr cname(new RRset(Name("example.com"), RRClass::IN(),
- RRType::CNAME(), RRTTL(3600)));
- cname->addRdata(rdata_cname);
- list.addRRset(cname);
+ setupList(list);
bool has_a, has_aaaa, has_ns, has_soa, has_cname;
+ int i = 0;
BOOST_FOREACH(RRsetPtr rrset, list) {
if (rrset->getType() == RRType::A()) {
has_a = true;
@@ -190,8 +163,14 @@
if (rrset->getType() == RRType::CNAME()) {
has_cname = true;
}
+ ++i;
}
- EXPECT_TRUE(has_a && has_aaaa && has_ns && has_soa && has_cname);
+ EXPECT_TRUE(has_a);
+ EXPECT_TRUE(has_aaaa);
+ EXPECT_TRUE(has_ns);
+ EXPECT_TRUE(has_soa);
+ EXPECT_TRUE(has_cname);
+ EXPECT_TRUE(i == 5);
}
}
More information about the bind10-changes
mailing list