]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[2000] Add appendPseudoRR() unittests
authorMukund Sivaraman <muks@isc.org>
Mon, 27 Jan 2014 08:06:53 +0000 (13:36 +0530)
committerMukund Sivaraman <muks@isc.org>
Mon, 27 Jan 2014 08:06:53 +0000 (13:36 +0530)
src/lib/dns/tests/rdata_opt_unittest.cc

index 6f703bf268e0029ab769a6f6237358b896d0bd7b..e5695ac328840445fd6ca2bf1a7c11c890903f66 100644 (file)
@@ -104,9 +104,23 @@ TEST_F(Rdata_OPT_Test, compare) {
                  isc::InvalidOperation);
 }
 
-TEST_F(Rdata_OPT_Test, append) {
-    EXPECT_THROW(rdata_opt.toText(),
-                 isc::InvalidOperation);
+TEST_F(Rdata_OPT_Test, appendPseudoRR) {
+    generic::OPT rdata_opt;
+
+    // Append empty option data
+    rdata_opt.appendPseudoRR(0x0042, NULL, 0);
+
+    // Append simple option data
+    const uint8_t option_data[] = {'H', 'e', 'l', 'l', 'o'};
+    rdata_opt.appendPseudoRR(0x0043, option_data, sizeof(option_data));
+
+    // Duplicate option codes are okay.
+    rdata_opt.appendPseudoRR(0x0042, option_data, sizeof(option_data));
+
+    // When option length may overflow RDLEN, append should throw.
+    const std::vector<uint8_t> buffer((1 << 16) - 1);
+    EXPECT_THROW(rdata_opt.appendPseudoRR(0x0044, &buffer[0], buffer.size()),
+                 isc::InvalidParameter);
 }
 
 TEST_F(Rdata_OPT_Test, getPseudoRRs) {