[Bf-blender-cvs] [af389e89f20] temp-sybren-anim-cleanup: Feedback from @Sergey: use `EXPECT_NEAR` instead of `EXPECT_FLOAT_EQ`.

Sybren A. Stüvel noreply at git.blender.org
Mon Feb 10 12:21:54 CET 2020


Commit: af389e89f204a658d7c5d86b752d7107c85f61e4
Author: Sybren A. Stüvel
Date:   Mon Feb 10 12:21:43 2020 +0100
Branches: temp-sybren-anim-cleanup
https://developer.blender.org/rBaf389e89f204a658d7c5d86b752d7107c85f61e4

Feedback from @Sergey: use `EXPECT_NEAR` instead of `EXPECT_FLOAT_EQ`.

===================================================================

M	tests/gtests/blenkernel/BKE_fcurve_test.cc

===================================================================

diff --git a/tests/gtests/blenkernel/BKE_fcurve_test.cc b/tests/gtests/blenkernel/BKE_fcurve_test.cc
index ac9ba5191dd..d5a78d5cfbc 100644
--- a/tests/gtests/blenkernel/BKE_fcurve_test.cc
+++ b/tests/gtests/blenkernel/BKE_fcurve_test.cc
@@ -26,6 +26,9 @@ extern "C" {
 #include "DNA_anim_types.h"
 }
 
+// Epsilon for floating point comparisons.
+static const float eps = 1e-7;
+
 TEST(evaluate_fcurve, EmptyFCurve)
 {
   FCurve *fcu = static_cast<FCurve *>(MEM_callocN(sizeof(FCurve), "FCurve"));
@@ -41,16 +44,16 @@ TEST(evaluate_fcurve, OnKeys)
   insert_vert_fcurve(fcu, 2.0f, 13.0f, BEZT_KEYTYPE_KEYFRAME, INSERTKEY_NO_USERPREF);
   insert_vert_fcurve(fcu, 3.0f, 19.0f, BEZT_KEYTYPE_KEYFRAME, INSERTKEY_NO_USERPREF);
 
-  EXPECT_FLOAT_EQ(evaluate_fcurve(fcu, 1.0f), 7.0f);   // hits 'on or before first' function
-  EXPECT_FLOAT_EQ(evaluate_fcurve(fcu, 2.0f), 13.0f);  // hits 'between' function
-  EXPECT_FLOAT_EQ(evaluate_fcurve(fcu, 3.0f), 19.0f);  // hits 'on or after last' function
+  EXPECT_NEAR(evaluate_fcurve(fcu, 1.0f), 7.0f, eps);   // hits 'on or before first' function
+  EXPECT_NEAR(evaluate_fcurve(fcu, 2.0f), 13.0f, eps);  // hits 'between' function
+  EXPECT_NEAR(evaluate_fcurve(fcu, 3.0f), 19.0f, eps);  // hits 'on or after last' function
 
   /* Also test within an epsilon of the keys, as this was an issue in T39207.
    * This epsilon is just slightly smaller than the epsilon given to binarysearch_bezt_index_ex()
    * in fcurve_eval_between_keyframes(), so it should hit the "exact" code path. */
   float epsilon = 0.00008f;
-  EXPECT_FLOAT_EQ(evaluate_fcurve(fcu, 2.0f - epsilon), 13.0f);
-  EXPECT_FLOAT_EQ(evaluate_fcurve(fcu, 2.0f + epsilon), 13.0f);
+  EXPECT_NEAR(evaluate_fcurve(fcu, 2.0f - epsilon), 13.0f, eps);
+  EXPECT_NEAR(evaluate_fcurve(fcu, 2.0f + epsilon), 13.0f, eps);
 
   free_fcurve(fcu);
 }
@@ -65,8 +68,8 @@ TEST(evaluate_fcurve, InterpolationConstant)
   fcu->bezt[0].ipo = BEZT_IPO_CONST;
   fcu->bezt[1].ipo = BEZT_IPO_CONST;
 
-  EXPECT_FLOAT_EQ(evaluate_fcurve(fcu, 1.25f), 7.0f);
-  EXPECT_FLOAT_EQ(evaluate_fcurve(fcu, 1.50f), 7.0f);
+  EXPECT_NEAR(evaluate_fcurve(fcu, 1.25f), 7.0f, eps);
+  EXPECT_NEAR(evaluate_fcurve(fcu, 1.50f), 7.0f, eps);
 
   free_fcurve(fcu);
 }
@@ -81,9 +84,9 @@ TEST(evaluate_fcurve, InterpolationLinear)
   fcu->bezt[0].ipo = BEZT_IPO_LIN;
   fcu->bezt[1].ipo = BEZT_IPO_LIN;
 
-  EXPECT_FLOAT_EQ(evaluate_fcurve(fcu, 1.25f), 8.5f);
-  EXPECT_FLOAT_EQ(evaluate_fcurve(fcu, 1.50f), 10.0f);
-  EXPECT_FLOAT_EQ(evaluate_fcurve(fcu, 1.75f), 11.5f);
+  EXPECT_NEAR(evaluate_fcurve(fcu, 1.25f), 8.5f, eps);
+  EXPECT_NEAR(evaluate_fcurve(fcu, 1.50f), 10.0f, eps);
+  EXPECT_NEAR(evaluate_fcurve(fcu, 1.75f), 11.5f, eps);
 
   free_fcurve(fcu);
 }
@@ -99,9 +102,9 @@ TEST(evaluate_fcurve, InterpolationBezier)
   EXPECT_EQ(fcu->bezt[1].ipo, BEZT_IPO_BEZ);
 
   // Test with default handles.
-  EXPECT_FLOAT_EQ(evaluate_fcurve(fcu, 1.25f), 7.8297067f);
-  EXPECT_FLOAT_EQ(evaluate_fcurve(fcu, 1.50f), 10.0f);
-  EXPECT_FLOAT_EQ(evaluate_fcurve(fcu, 1.75f), 12.170294f);
+  EXPECT_NEAR(evaluate_fcurve(fcu, 1.25f), 7.8297067f, eps);
+  EXPECT_NEAR(evaluate_fcurve(fcu, 1.50f), 10.0f, eps);
+  EXPECT_NEAR(evaluate_fcurve(fcu, 1.75f), 12.170294f, eps);
 
   // Test with modified handles.
   fcu->bezt[0].vec[0][0] = 0.71855f;  // left handle X
@@ -114,9 +117,9 @@ TEST(evaluate_fcurve, InterpolationBezier)
   fcu->bezt[1].vec[2][0] = 2.33333f;  // right handle X
   fcu->bezt[1].vec[2][1] = 15.5864f;  // right handle Y
 
-  EXPECT_FLOAT_EQ(evaluate_fcurve(fcu, 1.25f), 7.945497f);
-  EXPECT_FLOAT_EQ(evaluate_fcurve(fcu, 1.50f), 9.3495407f);
-  EXPECT_FLOAT_EQ(evaluate_fcurve(fcu, 1.75f), 11.088551f);
+  EXPECT_NEAR(evaluate_fcurve(fcu, 1.25f), 7.945497f, eps);
+  EXPECT_NEAR(evaluate_fcurve(fcu, 1.50f), 9.3495407f, eps);
+  EXPECT_NEAR(evaluate_fcurve(fcu, 1.75f), 11.088551f, eps);
 
   free_fcurve(fcu);
 }
@@ -134,9 +137,9 @@ TEST(evaluate_fcurve, InterpolationBounce)
   fcu->bezt[0].easing = BEZT_IPO_EASE_IN;
   fcu->bezt[1].easing = BEZT_IPO_EASE_AUTO;
 
-  EXPECT_FLOAT_EQ(evaluate_fcurve(fcu, 1.4f), 8.3649998f);
-  EXPECT_FLOAT_EQ(evaluate_fcurve(fcu, 1.5f), 8.4062500f);
-  EXPECT_FLOAT_EQ(evaluate_fcurve(fcu, 1.8f), 11.184999f);
+  EXPECT_NEAR(evaluate_fcurve(fcu, 1.4f), 8.3649998f, eps);
+  EXPECT_NEAR(evaluate_fcurve(fcu, 1.5f), 8.4062500f, eps);
+  EXPECT_NEAR(evaluate_fcurve(fcu, 1.8f), 11.184999f, eps);
 
   free_fcurve(fcu);
 }
@@ -152,20 +155,20 @@ TEST(evaluate_fcurve, ExtrapolationLinearKeys)
 
   fcu->extend = FCURVE_EXTRAPOLATE_LINEAR;
   // Before first keyframe.
-  EXPECT_FLOAT_EQ(evaluate_fcurve(fcu, 0.75f), 5.5f);
-  EXPECT_FLOAT_EQ(evaluate_fcurve(fcu, 0.50f), 4.0f);
-  EXPECT_FLOAT_EQ(evaluate_fcurve(fcu, -1.50f), -8.0f);
+  EXPECT_NEAR(evaluate_fcurve(fcu, 0.75f), 5.5f, eps);
+  EXPECT_NEAR(evaluate_fcurve(fcu, 0.50f), 4.0f, eps);
+  EXPECT_NEAR(evaluate_fcurve(fcu, -1.50f), -8.0f, eps);
   // After last keyframe.
-  EXPECT_FLOAT_EQ(evaluate_fcurve(fcu, 2.75f), 17.5f);
-  EXPECT_FLOAT_EQ(evaluate_fcurve(fcu, 3.50f), 22.0f);
+  EXPECT_NEAR(evaluate_fcurve(fcu, 2.75f), 17.5f, eps);
+  EXPECT_NEAR(evaluate_fcurve(fcu, 3.50f), 22.0f, eps);
 
   fcu->extend = FCURVE_EXTRAPOLATE_CONSTANT;
   // Before first keyframe.
-  EXPECT_FLOAT_EQ(evaluate_fcurve(fcu, 0.75f), 7.0f);
-  EXPECT_FLOAT_EQ(evaluate_fcurve(fcu, -1.50f), 7.0f);
+  EXPECT_NEAR(evaluate_fcurve(fcu, 0.75f), 7.0f, eps);
+  EXPECT_NEAR(evaluate_fcurve(fcu, -1.50f), 7.0f, eps);
   // After last keyframe.
-  EXPECT_FLOAT_EQ(evaluate_fcurve(fcu, 2.75f), 13.0f);
-  EXPECT_FLOAT_EQ(evaluate_fcurve(fcu, 3.50f), 13.0f);
+  EXPECT_NEAR(evaluate_fcurve(fcu, 2.75f), 13.0f, eps);
+  EXPECT_NEAR(evaluate_fcurve(fcu, 3.50f), 13.0f, eps);
 
   free_fcurve(fcu);
 }
@@ -189,19 +192,19 @@ TEST(evaluate_fcurve, ExtrapolationBezierKeys)
 
   fcu->extend = FCURVE_EXTRAPOLATE_LINEAR;
   // Before first keyframe.
-  EXPECT_FLOAT_EQ(evaluate_fcurve(fcu, 0.75f), 6.3114409f);
-  EXPECT_FLOAT_EQ(evaluate_fcurve(fcu, -0.50f), 2.8686447f);
+  EXPECT_NEAR(evaluate_fcurve(fcu, 0.75f), 6.3114409f, eps);
+  EXPECT_NEAR(evaluate_fcurve(fcu, -0.50f), 2.8686447f, eps);
   // After last keyframe.
-  EXPECT_FLOAT_EQ(evaluate_fcurve(fcu, 2.75f), 18.81946f);
-  EXPECT_FLOAT_EQ(evaluate_fcurve(fcu, 3.50f), 24.63892f);
+  EXPECT_NEAR(evaluate_fcurve(fcu, 2.75f), 18.81946f, eps);
+  EXPECT_NEAR(evaluate_fcurve(fcu, 3.50f), 24.63892f, eps);
 
   fcu->extend = FCURVE_EXTRAPOLATE_CONSTANT;
   // Before first keyframe.
-  EXPECT_FLOAT_EQ(evaluate_fcurve(fcu, 0.75f), 7.0f);
-  EXPECT_FLOAT_EQ(evaluate_fcurve(fcu, -1.50f), 7.0f);
+  EXPECT_NEAR(evaluate_fcurve(fcu, 0.75f), 7.0f, eps);
+  EXPECT_NEAR(evaluate_fcurve(fcu, -1.50f), 7.0f, eps);
   // After last keyframe.
-  EXPECT_FLOAT_EQ(evaluate_fcurve(fcu, 2.75f), 13.0f);
-  EXPECT_FLOAT_EQ(evaluate_fcurve(fcu, 3.50f), 13.0f);
+  EXPECT_NEAR(evaluate_fcurve(fcu, 2.75f), 13.0f, eps);
+  EXPECT_NEAR(evaluate_fcurve(fcu, 3.50f), 13.0f, eps);
 
   free_fcurve(fcu);
 }



More information about the Bf-blender-cvs mailing list