From 7053a947cbad2e1c2cc20a740feaad262dedbe38 Mon Sep 17 00:00:00 2001
From: Dmitri Naumov <dmitri.naumov@ufz.de>
Date: Wed, 13 Aug 2014 16:22:49 +0200
Subject: [PATCH] [T] Replace static var in tests with an outer def.

Running this test multiple times using
--gtest_repeat caused an error because of the
static modifier.

I would suggest not to use static in tests,
because the state of the test depends on execution
order.
---
 Tests/NumLib/TestTimeSteppingIterationNumber.cpp | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/Tests/NumLib/TestTimeSteppingIterationNumber.cpp b/Tests/NumLib/TestTimeSteppingIterationNumber.cpp
index 7b2927c0f60..c998526e374 100644
--- a/Tests/NumLib/TestTimeSteppingIterationNumber.cpp
+++ b/Tests/NumLib/TestTimeSteppingIterationNumber.cpp
@@ -100,18 +100,22 @@ TEST(NumLib, TimeSteppingIterationNumberBased2)
 
     struct IterationNumberUpdate
     {
-        IterationNumberUpdate(const std::vector<std::size_t> &vec) : _nr_iterations(vec) {}
+        IterationNumberUpdate(const std::vector<std::size_t> &vec, std::size_t& counter)
+            : _nr_iterations(vec), i(counter) {}
+
         std::vector<std::size_t> _nr_iterations;
+        std::size_t& i;
+
         void operator()(NumLib::IterationNumberBasedAdaptiveTimeStepping &obj)
         {
-            static std::size_t i = 0;
             std::size_t n = (i<_nr_iterations.size()) ? _nr_iterations[i++] : 0;
             //INFO("-> NR-iterations=%d", n);
             obj.setNIterations(n);
         }
     };
 
-    IterationNumberUpdate update(nr_iterations);
+    std::size_t counter = 0;
+    IterationNumberUpdate update(nr_iterations, counter);
 
     std::vector<double> vec_t = timeStepping(alg, &update);
     //std::cout << vec_t;
-- 
GitLab