From c8158e3e596868ec0510a84be339e1a301d9401f Mon Sep 17 00:00:00 2001
From: Rene Milk <rene.milk@uni-muenster.de>
Date: Tue, 28 Jul 2015 14:49:01 +0200
Subject: [PATCH] [test] adds a couple of new ones

---
 dune/stuff/test/common_algorithm.cc | 46 +++++++++++++++++++++++++++++
 dune/stuff/test/common_fixed_map.cc |  3 +-
 dune/stuff/test/common_parallel.cc  |  5 +++-
 3 files changed, 51 insertions(+), 3 deletions(-)
 create mode 100644 dune/stuff/test/common_algorithm.cc

diff --git a/dune/stuff/test/common_algorithm.cc b/dune/stuff/test/common_algorithm.cc
new file mode 100644
index 000000000..6c1d708dd
--- /dev/null
+++ b/dune/stuff/test/common_algorithm.cc
@@ -0,0 +1,46 @@
+// This file is part of the dune-stuff project:
+//   https://github.com/wwu-numerik/dune-stuff
+// Copyright holders: Rene Milk, Felix Schindler
+// License: BSD 2-Clause License (http://opensource.org/licenses/BSD-2-Clause)
+
+#include "main.hxx"
+
+#include <vector>
+#include <dune/stuff/common/algorithm.hh>
+
+using namespace Dune::Stuff::Common;
+
+struct Moveable
+{
+  Moveable(int i)
+    : v(i)
+  {
+  }
+  int v;
+};
+
+TEST(MoveIfTest, All)
+{
+  using namespace std;
+  typedef vector<unique_ptr<Moveable>> Vec;
+  typedef Vec::value_type Ptr;
+  const auto size = 6;
+  Vec values;
+  for (int i : valueRange(size)) {
+    values.emplace_back(new Moveable(i * 2));
+  }
+  Vec out;
+  const auto half_size = size / 2;
+  move_if(values.begin(), values.end(), std::back_inserter(out), [](Ptr& m) { return m->v < size; });
+  EXPECT_EQ(out.size(), half_size);
+  auto ctr = [](Ptr& ptr) { return ptr != nullptr; };
+  EXPECT_EQ(std::count_if(values.begin(), values.end(), ctr), half_size);
+  for (auto i : valueRange(half_size)) {
+    EXPECT_NE(out[i], nullptr);
+    EXPECT_EQ(i * 2, out[i]->v);
+  }
+  for (auto i : valueRange(half_size)) {
+    EXPECT_EQ(nullptr, values[i]);
+    EXPECT_EQ((i + half_size) * 2, values[i + half_size]->v);
+  }
+}
diff --git a/dune/stuff/test/common_fixed_map.cc b/dune/stuff/test/common_fixed_map.cc
index c93574c4c..291bd132f 100644
--- a/dune/stuff/test/common_fixed_map.cc
+++ b/dune/stuff/test/common_fixed_map.cc
@@ -48,6 +48,5 @@ TEST(FixedMapTest, All)
   }
 
   EXPECT_EQ(std::make_pair(std::string("0"), 0), *too_big.begin());
-  // death test segfaults inside gtest -> disabled
-  //  EXPECT_DEATH(*too_big.end(), ".*");
+  EXPECT_DEATH(*too_big.end(), ".*");
 }
diff --git a/dune/stuff/test/common_parallel.cc b/dune/stuff/test/common_parallel.cc
index de03bdd56..28b238fdf 100644
--- a/dune/stuff/test/common_parallel.cc
+++ b/dune/stuff/test/common_parallel.cc
@@ -85,6 +85,9 @@ TYPED_TEST(ThreadValueTest, All)
   check_eq(bar, new_value);
 }
 
-TEST(ThreadManagerTBB, All)
+TEST(ThreadManager, All)
 {
+  auto& tm = DS::threadManager();
+  EXPECT_LT(tm.current_threads(), tm.max_threads());
+  EXPECT_LT(tm.thread(), tm.current_threads());
 }
-- 
GitLab