[svn] commit: r945 - in /branches/each-ds/src/lib/dns/cpp: rrsetlist.h rrsetlist_unittest.cc

BIND 10 source code commits bind10-changes at lists.isc.org
Wed Feb 24 03:25:57 UTC 2010


Author: each
Date: Wed Feb 24 03:25:57 2010
New Revision: 945

Log:
- added some more rrsetlist unit tests

Modified:
    branches/each-ds/src/lib/dns/cpp/rrsetlist.h
    branches/each-ds/src/lib/dns/cpp/rrsetlist_unittest.cc

Modified: branches/each-ds/src/lib/dns/cpp/rrsetlist.h
==============================================================================
--- branches/each-ds/src/lib/dns/cpp/rrsetlist.h (original)
+++ branches/each-ds/src/lib/dns/cpp/rrsetlist.h Wed Feb 24 03:25:57 2010
@@ -43,7 +43,7 @@
                              const RRClass& rrclass = RRClass::IN());
     const RRsetPtr findRRset(const RRsetPtr);
 
-    const RRsetPtr operator[](RRType t) { return this->findRRset(t); }
+    const RRsetPtr operator[](RRType t) { return (this->findRRset(t)); }
 
     typedef std::vector<RRsetPtr>::const_iterator const_iterator;
     const_iterator begin() const { return (rrsets_.begin()); }

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 03:25:57 2010
@@ -15,10 +15,15 @@
 // $Id: rrtype_unittest.cc 476 2010-01-19 00:29:28Z jinmei $
 
 #include <vector>
+#include <boost/foreach.hpp>
 
+#include "rdata.h"
+#include "rdataclass.h"
+#include "rrclass.h"
+#include "rrtype.h"
 #include "rrsetlist.h"
 #include "rrset.h"
-#include "rdata.h"
+#include "rrttl.h"
 
 #include <gtest/gtest.h>
 
@@ -33,12 +38,161 @@
 class RRsetListTest : public ::testing::Test {
 protected:
     RRsetListTest() {}
+    static const in::A rdata_in_a;
+    static const in::AAAA rdata_in_aaaa;
+    static const generic::NS rdata_ns;
+    static const generic::SOA rdata_soa;
+    static const generic::CNAME rdata_cname;
 };
+
+const in::A RRsetListTest::rdata_in_a("192.0.2.1");
+const in::AAAA RRsetListTest::rdata_in_aaaa("2001:db8::1234");
+const generic::NS RRsetListTest::rdata_ns("ns.example.com");
+const generic::SOA RRsetListTest::rdata_soa(Name("ns.example.com"),
+                                            Name("root.example.com"),
+                                            2010012601, 3600, 300,
+                                            3600000, 1200);
+const generic::CNAME RRsetListTest::rdata_cname("target.example.com");
 
 TEST_F(RRsetListTest, emptyOnInitialCreate) {
     RRsetList list;
     EXPECT_EQ(list.size(), 0);
 }
 
+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);
+
+    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);
+    EXPECT_EQ(list.size(), 5);
 }
 
+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);
+
+    RRsetPtr p;
+
+    p = list[RRType::CNAME()];
+    EXPECT_TRUE(p->getType() == RRType::CNAME());
+
+    p = list[RRType::AAAA()];
+    EXPECT_TRUE(p->getType() == RRType::AAAA());
+
+    p = list[RRType::NS()];
+    EXPECT_TRUE(p->getType() == RRType::NS());
+
+    p = list[RRType::A()];
+    EXPECT_TRUE(p->getType() == RRType::A());
+
+    p = list[RRType::SOA()];
+    EXPECT_TRUE(p->getType() == RRType::SOA());
+}
+
+TEST_F(RRsetListTest, checkData) {
+    RRsetList list;
+    RRsetPtr a(new RRset(Name("example.com"), RRClass::IN(),
+                         RRType::A(), RRTTL(3600)));
+    a->addRdata(rdata_in_a);
+    list.addRRset(a);
+
+    RdataIteratorPtr it = list[RRType::A()]->getRdataIterator();
+    it->first();
+    EXPECT_FALSE(it->isLast());
+    EXPECT_EQ("192.0.2.1", it->getCurrent().toText());
+}
+
+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);
+
+    bool has_a, has_aaaa, has_ns, has_soa, has_cname;
+    BOOST_FOREACH(RRsetPtr rrset, list) {
+        if (rrset->getType() == RRType::A()) {
+            has_a = true;
+        }
+        if (rrset->getType() == RRType::AAAA()) {
+            has_aaaa = true;
+        }
+        if (rrset->getType() == RRType::NS()) {
+            has_ns = true;
+        }
+        if (rrset->getType() == RRType::SOA()) {
+            has_soa = true;
+        }
+        if (rrset->getType() == RRType::CNAME()) {
+            has_cname = true;
+        }
+    }
+    EXPECT_TRUE(has_a && has_aaaa && has_ns && has_soa && has_cname);
+}
+
+}
+




More information about the bind10-changes mailing list