diff --git a/tests/core/algorithm.t.cpp b/tests/core/algorithm.t.cpp
deleted file mode 100644
index 89a60ba..0000000
--- a/tests/core/algorithm.t.cpp
+++ /dev/null
@@ -1,60 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/*
- * Copyright (c) 2014-2022,  Regents of the University of California,
- *                           Arizona Board of Regents,
- *                           Colorado State University,
- *                           University Pierre & Marie Curie, Sorbonne University,
- *                           Washington University in St. Louis,
- *                           Beijing Institute of Technology,
- *                           The University of Memphis.
- *
- * This file is part of NFD (Named Data Networking Forwarding Daemon).
- * See AUTHORS.md for complete list of NFD authors and contributors.
- *
- * NFD 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.
- *
- * NFD 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
- * NFD, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "core/algorithm.hpp"
-
-#include "tests/test-common.hpp"
-
-namespace nfd {
-namespace tests {
-
-BOOST_AUTO_TEST_SUITE(TestAlgorithm)
-
-BOOST_AUTO_TEST_CASE(FindLastIf)
-{
-  const std::vector<int> vec{1, 2, 3, 4, 5, 6, 7, 8, 9};
-
-  int hit1 = 0;
-  auto found1 = find_last_if(vec.begin(), vec.end(), [&hit1] (int n) -> bool {
-    ++hit1;
-    return n % 2 == 0;
-  });
-  BOOST_REQUIRE(found1 != vec.end());
-  BOOST_CHECK_EQUAL(*found1, 8);
-  BOOST_CHECK_LE(hit1, vec.size());
-
-  int hit2 = 0;
-  auto found2 = find_last_if(vec.begin(), vec.end(), [&hit2] (int n) -> bool {
-    ++hit2;
-    return n < 0;
-  });
-  BOOST_CHECK(found2 == vec.end());
-  BOOST_CHECK_LE(hit2, vec.size());
-}
-
-BOOST_AUTO_TEST_SUITE_END() // TestAlgorithm
-
-} // namespace tests
-} // namespace nfd
diff --git a/tests/core/ndebug.t.cpp b/tests/core/ndebug.t.cpp
index 8465b06..99e8938 100644
--- a/tests/core/ndebug.t.cpp
+++ b/tests/core/ndebug.t.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2014-2019,  Regents of the University of California,
+ * Copyright (c) 2014-2022,  Regents of the University of California,
  *                           Arizona Board of Regents,
  *                           Colorado State University,
  *                           University Pierre & Marie Curie, Sorbonne University,
@@ -27,8 +27,7 @@
 
 #include "tests/test-common.hpp"
 
-namespace nfd {
-namespace tests {
+namespace nfd::tests {
 
 BOOST_AUTO_TEST_SUITE(TestNdebug)
 
@@ -55,5 +54,4 @@
 
 BOOST_AUTO_TEST_SUITE_END() // TestNdebug
 
-} // namespace tests
-} // namespace nfd
+} // namespace nfd::tests
diff --git a/tests/core/network.t.cpp b/tests/core/network.t.cpp
index 4ab71b5..1dfd084 100644
--- a/tests/core/network.t.cpp
+++ b/tests/core/network.t.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2014-2019,  Regents of the University of California,
+ * Copyright (c) 2014-2022,  Regents of the University of California,
  *                           Arizona Board of Regents,
  *                           Colorado State University,
  *                           University Pierre & Marie Curie, Sorbonne University,
@@ -27,8 +27,7 @@
 
 #include "tests/test-common.hpp"
 
-namespace nfd {
-namespace tests {
+namespace nfd::tests {
 
 BOOST_AUTO_TEST_SUITE(TestNetwork)
 
@@ -181,5 +180,4 @@
 
 BOOST_AUTO_TEST_SUITE_END() // TestNetwork
 
-} // namespace tests
-} // namespace nfd
+} // namespace nfd::tests
diff --git a/tests/core/version.t.cpp b/tests/core/version.t.cpp
index 349dfff..2a0e09e 100644
--- a/tests/core/version.t.cpp
+++ b/tests/core/version.t.cpp
@@ -30,8 +30,7 @@
 #include <boost/algorithm/string/classification.hpp>
 #include <boost/algorithm/string/split.hpp>
 
-namespace nfd {
-namespace tests {
+namespace nfd::tests {
 
 BOOST_AUTO_TEST_SUITE(TestVersion)
 
@@ -67,5 +66,4 @@
 
 BOOST_AUTO_TEST_SUITE_END() // TestVersion
 
-} // namespace tests
-} // namespace nfd
+} // namespace nfd::tests
