]> git.mxchange.org Git - simgear.git/commitdiff
Fix animation tests for low precision floating point
authorThomas Geymayer <tomgey@gmail.com>
Thu, 25 Apr 2013 22:19:00 +0000 (00:19 +0200)
committerThomas Geymayer <tomgey@gmail.com>
Thu, 25 Apr 2013 22:19:00 +0000 (00:19 +0200)
simgear/scene/model/animation_test.cxx

index a072004ffe698d1809866184f5b6a91dd72e4cc0..19327a7d5584f39866d9cff08ffbdd0812966dea 100644 (file)
@@ -3,8 +3,8 @@
 #include <cstring>
 #include <iostream>
 
-#define COMPARE(a, b) \
-  if( (a) != (b) ) \
+#define VERIFY_CLOSE(a, b) \
+  if( norm((a) - (b)) > 1e-5 ) \
   { \
     std::cerr << "line " << __LINE__ << ": failed: "\
               << #a << " != " << #b\
@@ -50,8 +50,8 @@ int main(int argc, char* argv[])
   config->setDoubleValue("axis/z2-m", v2.z());
   anim.readConfig();
 
-  COMPARE(anim.center, (v1 + v2) * 0.5)
-  COMPARE(anim.axis, normalize(v2 - v1))
+  VERIFY_CLOSE(anim.center, (v1 + v2) * 0.5)
+  VERIFY_CLOSE(anim.axis, normalize(v2 - v1))
 
   config->removeChild("axis", 0, false);
   config->setDoubleValue("center/x-m", v1.x());
@@ -62,8 +62,8 @@ int main(int argc, char* argv[])
   config->setDoubleValue("axis/z", v2.z());
   anim.readConfig();
 
-  COMPARE(anim.center, v1)
-  COMPARE(anim.axis, normalize(v2))
+  VERIFY_CLOSE(anim.center, v1)
+  VERIFY_CLOSE(anim.axis, normalize(v2))
 
   return 0;
 }