From ff0ad63e916c56720f588d9d7205aabbdb395dd1 Mon Sep 17 00:00:00 2001
From: Rene Milk <rene.milk@wwu.de>
Date: Thu, 1 Sep 2016 10:41:13 +0200
Subject: [PATCH] [test] add flot_cmp tests for negative numbers

---
 dune/xt/common/test/float_cmp.cc | 23 ++++++++++++++++++++++-
 1 file changed, 22 insertions(+), 1 deletion(-)

diff --git a/dune/xt/common/test/float_cmp.cc b/dune/xt/common/test/float_cmp.cc
index fef1fe998..1792b556b 100644
--- a/dune/xt/common/test/float_cmp.cc
+++ b/dune/xt/common/test/float_cmp.cc
@@ -39,6 +39,7 @@ struct FloatCmpTest : public testing::Test
   FloatCmpTest()
     : zero(create<V>(s_size, create<S>(0, 0)))
     , one(create<V>(s_size, create<S>(0, 1)))
+    , neg_one(create<V>(s_size, create<S>(0, -1)))
     , epsilon(create<V>(s_size, XT::Common::FloatCmp::DEFAULT_EPSILON::value()))
     , eps_plus(create<V>(s_size, XT::Common::FloatCmp::DEFAULT_EPSILON::value() * 1.1))
     , eps_minus(create<V>(s_size, XT::Common::FloatCmp::DEFAULT_EPSILON::value() * 0.9))
@@ -49,6 +50,7 @@ struct FloatCmpTest : public testing::Test
 
   const V zero;
   const V one;
+  const V neg_one;
   const V epsilon;
   const V eps_plus;
   const V eps_minus;
@@ -85,7 +87,6 @@ struct FloatCmpTest : public testing::Test
     TEST_DXTC_EXPECT_FLOAT_NE(zero, one);
     EXPECT_FALSE(FLOATCMP_NE(one, one + eps_minus));
     TEST_DXTC_EXPECT_FLOAT_NE(one, two);
-
     if (test_config["cmpstyle_is_relative"] == "true" && fieldtype_is_float)
       TEST_DXTC_EXPECT_FLOAT_NE(zero, eps_minus);
     else
@@ -169,6 +170,20 @@ struct FloatCmpTest : public testing::Test
     TEST_DXTC_EXPECT_FLOAT_LE(one, one + eps_plus);
     TEST_DXTC_EXPECT_FLOAT_LE(one, two);
   }
+
+  void negative_numbers()
+  {
+    TEST_DXTC_EXPECT_FLOAT_LT(neg_one, one);
+    TEST_DXTC_EXPECT_FLOAT_LT(neg_one, zero);
+    EXPECT_FALSE(FLOATCMP_LT(neg_one, neg_one));
+    TEST_DXTC_EXPECT_FLOAT_GT(one, neg_one);
+    EXPECT_FALSE(FLOATCMP_GT(neg_one, neg_one));
+    EXPECT_FALSE(FLOATCMP_LT(neg_one, neg_one));
+    TEST_DXTC_EXPECT_FLOAT_NE(neg_one, two);
+    EXPECT_FALSE(FLOATCMP_NE(neg_one, neg_one));
+    EXPECT_FALSE(FLOATCMP_EQ(zero, neg_one));
+    TEST_DXTC_EXPECT_FLOAT_EQ(neg_one, neg_one);
+  }
 }; // struct FloatCmpBase
 
 
@@ -201,3 +216,9 @@ TEST_F(FloatCmpTest, le)
 {
   this->check_le();
 }
+
+TEST_F(FloatCmpTest, neg)
+{
+  if (std::is_signed<XT::Common::VectorAbstraction<TESTTYPE>::ScalarType>::value)
+    this->negative_numbers();
+}
-- 
GitLab