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