[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