From 39dde69dec939bc1a6d17d8dbe6e66f91b58a16c Mon Sep 17 00:00:00 2001
From: Thomas Feuvrier <thomas.feuvrier@c-s.fr>
Date: Fri, 28 Aug 2009 09:08:43 +0200
Subject: [PATCH] BUG: Improve FlexibleDistanceWithMissingValue testing with
 epsilon value in testing parameters

---
 Testing/Code/BasicFilters/CMakeLists.txt               |  4 +++-
 .../otbFlexibleDistanceWithMissingValue.cxx            | 10 ++++++++--
 2 files changed, 11 insertions(+), 3 deletions(-)

diff --git a/Testing/Code/BasicFilters/CMakeLists.txt b/Testing/Code/BasicFilters/CMakeLists.txt
index 830d474ffe..ce2431ae98 100644
--- a/Testing/Code/BasicFilters/CMakeLists.txt
+++ b/Testing/Code/BasicFilters/CMakeLists.txt
@@ -831,7 +831,9 @@ ${TEMP}/bfTvVectorImageToAmplitudeImageFilterOutput.tif
          otbFlexibleDistanceWithMissingValueNew)
 
   ADD_TEST(bfTuFlexibleDistanceWithMissingValue ${BASICFILTERS_TESTS8}
-         otbFlexibleDistanceWithMissingValue)
+          otbFlexibleDistanceWithMissingValue
+          0.00000001
+)
 
 # -------            otb::LabelizeNeighborhoodConnectedImageFilter   ----------------------------
 
diff --git a/Testing/Code/BasicFilters/otbFlexibleDistanceWithMissingValue.cxx b/Testing/Code/BasicFilters/otbFlexibleDistanceWithMissingValue.cxx
index 512c4ebe0b..36d6a5a0ac 100644
--- a/Testing/Code/BasicFilters/otbFlexibleDistanceWithMissingValue.cxx
+++ b/Testing/Code/BasicFilters/otbFlexibleDistanceWithMissingValue.cxx
@@ -21,6 +21,7 @@ PURPOSE.  See the above copyright notices for more information.
 
 #include <iostream>
 #include <cstdlib>
+#include <iomanip>
 #include "itkVariableLengthVector.h"
 #include "otbFlexibleDistanceWithMissingValue.h"
 
@@ -30,7 +31,7 @@ int otbFlexibleDistanceWithMissingValue( int argc, char * argv[] )
   typedef itk::VariableLengthVector< double > VectorType;
   typedef otb::Statistics::FlexibleDistanceWithMissingValue< VectorType > DistanceType;
 
-  const double epsilon = 0.00000001;
+  const double epsilon(atof(argv[1]));
 
   float a = 2.0;
   float b = 0.5;
@@ -45,7 +46,12 @@ int otbFlexibleDistanceWithMissingValue( int argc, char * argv[] )
 
   DistanceType::Pointer dist = DistanceType::New();
   double distanceValue = dist->Evaluate( x, y );
-  std::cout << "Distance: " << distanceValue << std::endl;
+  std::cout << std::setprecision(20)<< std::endl;
+  std::cout << "dim,a,b          : " << dim<<","<<a<<","<<b<< std::endl;
+  std::cout << "dim*vcl_pow(3,b) : " << dim*vcl_pow(3,b) << std::endl;
+  std::cout << "Distance         : " << distanceValue << std::endl;
+  std::cout << "Epsilon          : " << epsilon << std::endl;
+  std::cout << "-> Tests diff    : " << vcl_abs(distanceValue - dim*vcl_pow(3,b)) << std::endl;
 
   if ( vcl_abs(distanceValue - dim*vcl_pow(3,b)) < epsilon )
     return EXIT_SUCCESS;
-- 
GitLab