diff --git a/tests/core/algorithm.t.cpp b/tests/core/algorithm.t.cpp
index fb23238..89a60ba 100644
--- a/tests/core/algorithm.t.cpp
+++ b/tests/core/algorithm.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,
@@ -34,24 +34,22 @@
 
 BOOST_AUTO_TEST_CASE(FindLastIf)
 {
-  std::vector<int> vec{1, 2, 3, 4, 5, 6, 7, 8, 9};
+  const std::vector<int> vec{1, 2, 3, 4, 5, 6, 7, 8, 9};
 
   int hit1 = 0;
-  std::vector<int>::const_iterator found1 = find_last_if(vec.begin(), vec.end(),
-      [&hit1] (int n) -> bool {
-        ++hit1;
-        return n % 2 == 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;
-  std::vector<int>::const_iterator found2 = find_last_if(vec.begin(), vec.end(),
-      [&hit2] (int n) -> bool {
-        ++hit2;
-        return n < 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());
 }
diff --git a/tests/core/version.t.cpp b/tests/core/version.t.cpp
index 6024f8c..349dfff 100644
--- a/tests/core/version.t.cpp
+++ b/tests/core/version.t.cpp
@@ -43,9 +43,9 @@
                             NFD_VERSION_MINOR * 1000 +
                             NFD_VERSION_PATCH);
 
-  static_assert(NFD_VERSION_MAJOR >= 22 && NFD_VERSION_MAJOR <= 100, "");
-  static_assert(NFD_VERSION_MINOR >= 1 && NFD_VERSION_MINOR <= 12, "");
-  static_assert(NFD_VERSION_PATCH < 1000, "");
+  static_assert(NFD_VERSION_MAJOR >= 22 && NFD_VERSION_MAJOR <= 100);
+  static_assert(NFD_VERSION_MINOR >= 1 && NFD_VERSION_MINOR <= 12);
+  static_assert(NFD_VERSION_PATCH < 1000);
 }
 
 BOOST_AUTO_TEST_CASE(VersionString)
