add Rrset
Change-Id: Ic8a37ee63fb5b0266966d3888fba5d3d0a479b44
diff --git a/tests/unit/rrset.cpp b/tests/unit/rrset.cpp
new file mode 100644
index 0000000..735ff81
--- /dev/null
+++ b/tests/unit/rrset.cpp
@@ -0,0 +1,108 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/**
+ * Copyright (c) 2014, Regents of the University of California.
+ *
+ * This file is part of NDNS (Named Data Networking Domain Name Service).
+ * See AUTHORS.md for complete list of NDNS authors and contributors.
+ *
+ * NDNS is free software: you can redistribute it and/or modify it under the terms
+ * of the GNU General Public License as published by the Free Software Foundation,
+ * either version 3 of the License, or (at your option) any later version.
+ *
+ * NDNS is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
+ * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * NDNS, e.g., in COPYING.md file. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "rrset.hpp"
+#include "../boost-test.hpp"
+
+#include <ndn-cxx/name.hpp>
+
+namespace ndn {
+namespace ndns {
+namespace tests {
+
+BOOST_AUTO_TEST_SUITE(Rrset)
+
+BOOST_AUTO_TEST_CASE(Basic)
+{
+ ndns::Rrset rrset1;
+ rrset1.setId(1);
+ rrset1.setZone(0);
+ rrset1.setLabel("/www/1");
+ rrset1.setType(name::Component("NS"));
+ rrset1.setVersion(name::Component::fromVersion(1));
+ rrset1.setTtl(time::seconds(10));
+ rrset1.setData(Name("/test/1").wireEncode());
+
+ BOOST_CHECK_EQUAL(rrset1.getId(), 1);
+ BOOST_CHECK_EQUAL(rrset1.getZone(), static_cast<Zone*>(0));
+ BOOST_CHECK_EQUAL(rrset1.getLabel(), Name("/www/1"));
+ BOOST_CHECK_EQUAL(rrset1.getType(), name::Component("NS"));
+ BOOST_CHECK_EQUAL(rrset1.getVersion(), name::Component::fromVersion(1));
+ BOOST_CHECK_EQUAL(rrset1.getTtl(), time::seconds(10));
+ BOOST_CHECK(rrset1.getData() == Name("/test/1").wireEncode());
+
+ Name zoneName("/net/ndnsim");
+
+ ndns::Rrset rrset2(rrset1);
+ BOOST_CHECK_EQUAL(rrset1, rrset2);
+
+ rrset2.setId(2);
+ BOOST_CHECK_EQUAL(rrset1, rrset2);
+ rrset2 = rrset1;
+
+ Zone zone;
+ rrset2.setZone(&zone);
+ BOOST_CHECK_NE(rrset1, rrset2);
+
+ rrset2 = rrset1;
+ BOOST_CHECK_EQUAL(rrset1, rrset2);
+
+ rrset2.setLabel(Name("/www/2"));
+ BOOST_CHECK_NE(rrset1, rrset2);
+ rrset2 = rrset1;
+
+ rrset2.setType(name::Component("TXT"));
+ BOOST_CHECK_NE(rrset1, rrset2);
+ rrset2 = rrset1;
+
+ rrset2.setVersion(name::Component::fromVersion(2));
+ BOOST_CHECK_NE(rrset1, rrset2);
+ rrset2 = rrset1;
+
+ rrset2.setTtl(time::seconds(1));
+ BOOST_CHECK_EQUAL(rrset1, rrset2);
+ rrset2 = rrset1;
+
+ rrset2.setData(Name("/test/2").wireEncode());
+ BOOST_CHECK_EQUAL(rrset1, rrset2);
+ rrset2 = rrset1;
+}
+
+BOOST_AUTO_TEST_CASE(Ostream)
+{
+ ndns::Zone zone("/test");
+ ndns::Rrset rrset(&zone);
+
+ rrset.setId(1);
+ rrset.setLabel("/www/1");
+ rrset.setType(name::Component("NS"));
+ rrset.setVersion(name::Component::fromVersion(1));
+ rrset.setTtl(time::seconds(10));
+
+ boost::test_tools::output_test_stream os;
+ os << rrset;
+ BOOST_CHECK(os.is_equal("Rrset: Id=1 Zone=(Zone: Id=0 Name=/test)"
+ " Label=/www/1 Type=NS Version=%FD%01"));
+}
+
+BOOST_AUTO_TEST_SUITE_END()
+
+} // namespace tests
+} // namespace ndns
+} // namespace ndn