Use std::string_view in several APIs

Change-Id: I2c13b229162b247738cbf46d6bf71fc69d45816f
diff --git a/tests/test-home-fixture.hpp b/tests/test-home-fixture.hpp
index 3e3673f..5778a6e 100644
--- a/tests/test-home-fixture.hpp
+++ b/tests/test-home-fixture.hpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2013-2022 Regents of the University of California.
+ * Copyright (c) 2013-2023 Regents of the University of California.
  *
  * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
  *
@@ -46,7 +46,6 @@
 {
 public:
   PibDirFixture()
-    : m_pibDir(Path().PATH)
   {
     if (std::getenv("NDN_CLIENT_PIB") != nullptr) {
       m_oldPib = std::getenv("NDN_CLIENT_PIB");
@@ -81,7 +80,7 @@
   }
 
 protected:
-  const std::string m_pibDir;
+  const std::string m_pibDir{Path::PATH};
 
 private:
   std::string m_oldPib;
@@ -119,7 +118,7 @@
 
 struct DefaultPibDir
 {
-  const std::string PATH = "build/keys";
+  static constexpr std::string_view PATH{"build/keys"};
 };
 
 } // namespace tests
diff --git a/tests/unit/encoding/block-helpers.t.cpp b/tests/unit/encoding/block-helpers.t.cpp
index 9325851..ed8641e 100644
--- a/tests/unit/encoding/block-helpers.t.cpp
+++ b/tests/unit/encoding/block-helpers.t.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2013-2022 Regents of the University of California.
+ * Copyright (c) 2013-2023 Regents of the University of California.
  *
  * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
  *
@@ -31,6 +31,13 @@
 BOOST_AUTO_TEST_SUITE(Encoding)
 BOOST_AUTO_TEST_SUITE(TestBlockHelpers)
 
+BOOST_AUTO_TEST_CASE(Empty)
+{
+  Block b = makeEmptyBlock(200);
+  BOOST_CHECK_EQUAL(b.type(), 200);
+  BOOST_CHECK_EQUAL(b.value_size(), 0);
+}
+
 enum E8 : uint8_t
 {
   E8_NONE
@@ -69,21 +76,6 @@
   BOOST_CHECK_EQUAL(static_cast<uint16_t>(readNonNegativeIntegerAs<EC16>(b)), 1000);
 }
 
-BOOST_AUTO_TEST_CASE(Empty)
-{
-  Block b = makeEmptyBlock(200);
-  BOOST_CHECK_EQUAL(b.type(), 200);
-  BOOST_CHECK_EQUAL(b.value_size(), 0);
-}
-
-BOOST_AUTO_TEST_CASE(String)
-{
-  Block b = makeStringBlock(100, "Hello, world!");
-  BOOST_CHECK_EQUAL(b.type(), 100);
-  BOOST_CHECK_GT(b.value_size(), 0);
-  BOOST_CHECK_EQUAL(readString(b), "Hello, world!");
-}
-
 BOOST_AUTO_TEST_CASE(Double)
 {
   const double f = 0.25;
@@ -103,29 +95,41 @@
 
 BOOST_AUTO_TEST_CASE(Binary)
 {
-  std::string buf1{1, 1, 1, 1};
+  const std::string buf1{1, 1, 1, 1};
   const uint8_t buf2[]{1, 1, 1, 1};
-  std::list<uint8_t> buf3{1, 1, 1, 1};
+  const std::list<uint8_t> buf3{1, 1, 1, 1};
 
-  Block b1 = makeBinaryBlock(100, buf1.data(), buf1.size()); // char* overload
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
+  Block b1 = makeBinaryBlock(100, buf1.data(), buf1.size()); // char* overload (deprecated)
+#pragma GCC diagnostic pop
   Block b2 = makeBinaryBlock(100, buf2);                     // span overload
   Block b3 = makeBinaryBlock(100, buf1.begin(), buf1.end()); // fast encoding (random access iterator)
   Block b4 = makeBinaryBlock(100, buf3.begin(), buf3.end()); // slow encoding (general iterator)
 
-  BOOST_CHECK_EQUAL(b1, b2);
-  BOOST_CHECK_EQUAL(b1, b3);
-  BOOST_CHECK_EQUAL(b1, b4);
-  BOOST_CHECK_EQUAL(b1.type(), 100);
-  BOOST_CHECK_EQUAL(b1.value_size(), buf1.size());
-  BOOST_CHECK_EQUAL_COLLECTIONS(b1.value_begin(), b1.value_end(), buf2, buf2 + sizeof(buf2));
+  BOOST_TEST(b1 == b2);
+  BOOST_TEST(b1 == b3);
+  BOOST_TEST(b1 == b4);
+  BOOST_TEST(b1.type() == 100);
+  BOOST_TEST(b1.value_size() == sizeof(buf2));
+  BOOST_TEST(b1.value_bytes() == buf2, boost::test_tools::per_element());
 
   EncodingEstimator estimator;
   size_t length = prependBinaryBlock(estimator, 100, buf2);
-  BOOST_CHECK_EQUAL(length, 6);
+  BOOST_TEST(length == 6);
 
   EncodingBuffer encoder(length, 0);
-  BOOST_CHECK_EQUAL(prependBinaryBlock(encoder, 100, buf2), 6);
-  BOOST_CHECK_EQUAL(encoder.block(), b1);
+  BOOST_TEST(prependBinaryBlock(encoder, 100, buf2) == 6);
+  BOOST_TEST(encoder.block() == b1);
+}
+
+BOOST_AUTO_TEST_CASE(String)
+{
+  constexpr std::string_view sv{"Hello, world!"sv};
+  Block b = makeStringBlock(100, sv);
+  BOOST_TEST(b.type() == 100);
+  BOOST_TEST(b.value_size() == sv.size());
+  BOOST_TEST(readString(b) == sv);
 }
 
 BOOST_AUTO_TEST_CASE(PrependBlock)
diff --git a/tests/unit/face.t.cpp b/tests/unit/face.t.cpp
index 2372e24..94a2649 100644
--- a/tests/unit/face.t.cpp
+++ b/tests/unit/face.t.cpp
@@ -854,11 +854,6 @@
 
 using ndn::Transport;
 
-struct PibDirWithDefaultTpm
-{
-  const std::string PATH = "build/keys-with-default-tpm";
-};
-
 BOOST_FIXTURE_TEST_CASE(FaceTransport, IoKeyChainFixture)
 {
   BOOST_CHECK(Face().getTransport() != nullptr);
diff --git a/tests/unit/name.t.cpp b/tests/unit/name.t.cpp
index bfddb4f..cfe13e0 100644
--- a/tests/unit/name.t.cpp
+++ b/tests/unit/name.t.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2013-2022 Regents of the University of California.
+ * Copyright (c) 2013-2023 Regents of the University of California.
  *
  * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
  *
@@ -68,13 +68,19 @@
 
   // URI with correct scheme
   BOOST_CHECK_EQUAL(Name("ndn:/hello/world").toUri(), "/hello/world");
+  BOOST_CHECK_EQUAL(Name("ndn:/").toUri(), "/");
+  BOOST_CHECK_EQUAL(Name("ndn:").toUri(), "/");
 
   // URI with incorrect scheme: auto-corrected
   BOOST_CHECK_EQUAL(Name("ncc:/hello/world").toUri(), "/hello/world");
+  BOOST_CHECK_EQUAL(Name(":/").toUri(), "/");
+  BOOST_CHECK_EQUAL(Name(":").toUri(), "/");
 
   // URI with authority: authority ignored
   BOOST_CHECK_EQUAL(Name("//authority/hello/world").toUri(), "/hello/world");
   BOOST_CHECK_EQUAL(Name("ndn://authority/hello/world").toUri(), "/hello/world");
+  BOOST_CHECK_EQUAL(Name("//authority").toUri(), "/");
+  BOOST_CHECK_EQUAL(Name("ndn://").toUri(), "/");
 
   // URI containing unescaped characters: auto-corrected
   BOOST_CHECK_EQUAL(Name("/ hello\t/\tworld \r\n").toUri(), "/%20hello%09/%09world%20%0D%0A");
@@ -84,8 +90,12 @@
   // URI not starting with '/': accepted as PartialName
   BOOST_CHECK_EQUAL(Name("").toUri(), "/");
   BOOST_CHECK_EQUAL(Name(" ").toUri(), "/%20");
+  BOOST_CHECK_EQUAL(Name("ndn: ").toUri(), "/%20");
+  BOOST_CHECK_EQUAL(Name("ndn: /").toUri(), "/%20");
   BOOST_CHECK_EQUAL(Name("  /hello/world").toUri(), "/%20%20/hello/world");
   BOOST_CHECK_EQUAL(Name("hello/world").toUri(), "/hello/world");
+  BOOST_CHECK_EQUAL(Name("hello").toUri(), "/hello");
+  BOOST_CHECK_EQUAL(Name("ndn:hello").toUri(), "/hello");
 
   // URI ending with '/': auto-corrected
   BOOST_CHECK_EQUAL(Name("/hello/world/").toUri(), "/hello/world");
diff --git a/tests/unit/security/key-chain.t.cpp b/tests/unit/security/key-chain.t.cpp
index 9bd97af..be544a4 100644
--- a/tests/unit/security/key-chain.t.cpp
+++ b/tests/unit/security/key-chain.t.cpp
@@ -59,7 +59,7 @@
 
 struct PibPathConfigFileHome
 {
-  const std::string PATH = "build/config-file-home/";
+  static constexpr std::string_view PATH = "build/config-file-home/";
 };
 
 BOOST_FIXTURE_TEST_CASE(ConstructorNormalConfig, TestHomeAndPibFixture<PibPathConfigFileHome>)
@@ -74,7 +74,7 @@
 
 struct PibPathConfigFileEmptyHome
 {
-  const std::string PATH = "build/config-file-empty-home/";
+  static constexpr std::string_view PATH = "build/config-file-empty-home/";
 };
 
 BOOST_FIXTURE_TEST_CASE(ConstructorEmptyConfig, TestHomeAndPibFixture<PibPathConfigFileEmptyHome>)
@@ -122,7 +122,7 @@
 
 struct PibPathConfigFileEmpty2Home
 {
-  const std::string PATH = "build/config-file-empty2-home/";
+  static constexpr std::string_view PATH = "build/config-file-empty2-home/";
 };
 
 BOOST_FIXTURE_TEST_CASE(ConstructorEmptyConfig2, TestHomeAndPibFixture<PibPathConfigFileEmpty2Home>)
@@ -137,7 +137,7 @@
 
 struct PibPathConfigFileMalformedHome
 {
-  const std::string PATH = "build/config-file-malformed-home/";
+  static constexpr std::string_view PATH = "build/config-file-malformed-home/";
 };
 
 BOOST_FIXTURE_TEST_CASE(ConstructorBadConfig, TestHomeAndPibFixture<PibPathConfigFileMalformedHome>)
@@ -148,7 +148,7 @@
 
 struct PibPathConfigFileMalformed2Home
 {
-  const std::string PATH = "build/config-file-malformed2-home/";
+  static constexpr std::string_view PATH = "build/config-file-malformed2-home/";
 };
 
 BOOST_FIXTURE_TEST_CASE(ConstructorBadConfig2, TestHomeAndPibFixture<PibPathConfigFileMalformed2Home>)
@@ -159,7 +159,7 @@
 
 struct PibPathConfigFileNonCanonicalTpm
 {
-  const std::string PATH = "build/config-file-non-canonical-tpm/";
+  static constexpr std::string_view PATH = "build/config-file-non-canonical-tpm/";
 };
 
 BOOST_FIXTURE_TEST_CASE(ConstructorNonCanonicalTpm, TestHomeAndPibFixture<PibPathConfigFileNonCanonicalTpm>) // Bug 4297
diff --git a/tests/unit/util/logging.t.cpp b/tests/unit/util/logging.t.cpp
index 821e11e..02da03a 100644
--- a/tests/unit/util/logging.t.cpp
+++ b/tests/unit/util/logging.t.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2013-2022 Regents of the University of California.
+ * Copyright (c) 2013-2023 Regents of the University of California.
  *
  * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
  *
@@ -162,7 +162,7 @@
 NDN_LOG_MEMBER_INIT_SPECIALIZED((ClassTemplateWithLogger<int, double>), ndn.util.tests.Specialized1);
 NDN_LOG_MEMBER_INIT_SPECIALIZED((ClassTemplateWithLogger<int, std::string>), ndn.util.tests.Specialized2);
 
-const time::microseconds LOG_SYSTIME(1468108800311239LL);
+constexpr time::microseconds LOG_SYSTIME{1468108800311239LL};
 const std::string LOG_SYSTIME_STR("1468108800.311239");
 
 class LoggingFixture : public ndn::tests::ClockFixture
@@ -177,7 +177,7 @@
     Logging::setDestination(os, true);
   }
 
-  ~LoggingFixture()
+  ~LoggingFixture() override
   {
     Logging::get().setLevelImpl(m_oldEnabledLevel);
     Logging::setDestination(m_oldDestination);
diff --git a/tests/unit/util/string-helper.t.cpp b/tests/unit/util/string-helper.t.cpp
index e3229e5..3816fab 100644
--- a/tests/unit/util/string-helper.t.cpp
+++ b/tests/unit/util/string-helper.t.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2013-2022 Regents of the University of California.
+ * Copyright (c) 2013-2023 Regents of the University of California.
  *
  * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
  *
@@ -182,8 +182,7 @@
   BOOST_CHECK_EQUAL(escape(":/?#[]@"), "%3A%2F%3F%23%5B%5D%40");
 
   output_test_stream os;
-  const char str[] = "\x01\x2a\x3b\xc4\xde\xfa\xb5\xcd\xef";
-  escape(os, str, std::strlen(str));
+  escape(os, "\x01\x2a\x3b\xc4\xde\xfa\xb5\xcd\xef");
   BOOST_CHECK(os.is_equal("%01%2A%3B%C4%DE%FA%B5%CD%EF"));
 }
 
@@ -196,8 +195,7 @@
   BOOST_CHECK_EQUAL(unescape("Bad %a"), "Bad %a");
 
   output_test_stream os;
-  const char str[] = "%01%2a%3B%c4%de%fA%B5%Cd%EF";
-  unescape(os, str, std::strlen(str));
+  unescape(os, "%01%2a%3B%c4%de%fA%B5%Cd%EF");
   BOOST_CHECK(os.is_equal("\x01\x2a\x3b\xc4\xde\xfa\xb5\xcd\xef"));
 }