diff --git a/tests/unit/test_range.cpp b/tests/unit/test_range.cpp
index 90df4067f743e4e1baa1a6bdefa0442f9bc34b4c..f486d2239c80f183a73f949ee624657902f14a75 100644
--- a/tests/unit/test_range.cpp
+++ b/tests/unit/test_range.cpp
@@ -205,6 +205,14 @@ TEST(range, max_element_by) {
     EXPECT_TRUE((std::is_same<const char *, decltype(i)>::value));
     EXPECT_EQ('d', *i);
     EXPECT_EQ(cstr+9, i);
+
+    // with mutable container
+    std::vector<int> v = { 1, 3, -5, 2 };
+    auto j  = util::max_element_by(v, [](int x) { return x*x; });
+    EXPECT_EQ(-5, *j);
+    *j = 1;
+    j  = util::max_element_by(v, [](int x) { return x*x; });
+    EXPECT_EQ(3, *j);
 }
 
 TEST(range, max_value) {
diff --git a/tests/validation/validation_data.hpp b/tests/validation/validation_data.hpp
index d9026da3df5ce1e53638c6b2a4ebf6987fa3cde6..70e99a52227b70f9772dd94370ec38fb7301e2d1 100644
--- a/tests/validation/validation_data.hpp
+++ b/tests/validation/validation_data.hpp
@@ -34,9 +34,9 @@ public:
     }
 
     void write_traces() {
-        if (f_) {
-            f_ << jtraces_;
-            f_.close();
+        if (out_) {
+            out_ << jtraces_;
+            out_.close();
         }
     }
 
@@ -55,8 +55,8 @@ public:
     void set_datadir(const util::path& dir) { datadir_ = dir; }
 
     void set_output(const util::path& file) {
-        f_.open(file);
-        if (!f_) {
+        out_.open(file);
+        if (!out_) {
             throw std::runtime_error("unable to open file for writing");
         }
     }
@@ -64,14 +64,14 @@ public:
     // write traces on exit
 
     ~trace_io() {
-        if (f_) {
+        if (out_) {
             write_traces();
         }
     }
 
 private:
     util::path datadir_ = DATADIR "/validation";
-    std::ofstream f_;
+    std::ofstream out_;
     nlohmann::json jtraces_ = nlohmann::json::array();
     bool verbose_flag_ = false;
     int max_ncomp_ = 1000;