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