]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
Add test for parseRFC1035CharString
authorPieter Lexis <pieter.lexis@powerdns.com>
Tue, 9 Feb 2021 10:56:46 +0000 (11:56 +0100)
committerPieter Lexis <pieter.lexis@powerdns.com>
Mon, 29 Mar 2021 17:10:31 +0000 (19:10 +0200)
pdns/test-misc_hh.cc

index d53c0770fdfbdcba2fb22fce50c0853a35710c10..213d6a34d4545ada9da0a080c0890c92f92934da 100644 (file)
@@ -227,6 +227,68 @@ BOOST_AUTO_TEST_CASE(test_getCarbonHostName)
   BOOST_CHECK_EQUAL(my_hostname.size(), hostname.size());
 }
 
+BOOST_AUTO_TEST_CASE(test_parseRFC1035CharString)
+{
+  string in;
+  string out;
+  string expected;
+  size_t amount;
+
+  in = "foobar123";
+  amount = parseRFC1035CharString(in, out);
+  BOOST_CHECK_EQUAL(amount, in.size());
+  BOOST_CHECK_EQUAL(out, "foobar123");
+
+  in = "foobar123\\,bazquux456";
+  amount = parseRFC1035CharString(in, out);
+  BOOST_CHECK_EQUAL(amount, in.size());
+  BOOST_CHECK_EQUAL(out, "foobar123,bazquux456");
+
+  in = string("\"")+string(16262, 'A')+string("\"");
+  expected = string(16262, 'A');
+  amount = parseRFC1035CharString(in, out);
+  BOOST_CHECK_EQUAL(amount, in.size());
+  BOOST_CHECK_EQUAL(out, expected);
+
+  in = "hello\\044world\\002";
+  expected = "hello,world\x02";
+  amount = parseRFC1035CharString(in, out);
+  BOOST_CHECK_EQUAL(amount, in.size());
+  BOOST_CHECK_EQUAL(out, expected);
+
+  in = "\"hello\\044world\"";
+  expected = "hello,world";
+  amount = parseRFC1035CharString(in, out);
+  BOOST_CHECK_EQUAL(amount, in.size());
+  BOOST_CHECK_EQUAL(out, expected);
+
+  // Here we'll only read until the space
+  in = "hello world";
+  expected = "hello";
+  amount = parseRFC1035CharString(in, out);
+  BOOST_CHECK_EQUAL(amount, 5);
+  BOOST_CHECK_EQUAL(out, expected);
+
+  // \032 is a space, but it is read because it is escaped
+  in = "hello\\032world";
+  expected = "hello world";
+  amount = parseRFC1035CharString(in, out);
+  BOOST_CHECK_EQUAL(amount, in.size());
+  BOOST_CHECK_EQUAL(out, expected);
+
+  in = "\"hello\\032world\"";
+  expected = "hello world";
+  amount = parseRFC1035CharString(in, out);
+  BOOST_CHECK_EQUAL(amount, in.size());
+  BOOST_CHECK_EQUAL(out, expected);
+
+  in = "\"hello\\032world XXXX\"";
+  expected = "hello world XXXX";
+  amount = parseRFC1035CharString(in, out);
+  BOOST_CHECK_EQUAL(amount, in.size());
+  BOOST_CHECK_EQUAL(out, expected);
+}
+
 BOOST_AUTO_TEST_CASE(test_parseSVCBValueList)
 {
   vector<string> out;