diff --git a/Testing/Code/BasicFilters/otbContinuousMinimumMaximumImageCalculatorNew.cxx b/Testing/Code/BasicFilters/otbContinuousMinimumMaximumImageCalculatorNew.cxx
index d1dd9fdb390f161cc20b151ac2b0300e4cd2de2b..1ea4a91c2f385c887383712b5a00920743058097 100644
--- a/Testing/Code/BasicFilters/otbContinuousMinimumMaximumImageCalculatorNew.cxx
+++ b/Testing/Code/BasicFilters/otbContinuousMinimumMaximumImageCalculatorNew.cxx
@@ -17,18 +17,21 @@
 =========================================================================*/
 #include "itkExceptionObject.h"
 
-#include "otbContinuousMinimumMaximumImageCalculator.h"
+
 #include "otbImage.h"
+#include "otbContinuousMinimumMaximumImageCalculator.h"
 
-int otbContinuousMinimumMaximumImageCalculatorNew( int argc, char * argv[])
+int otbContinuousMinimumMaximumImageCalculatorNew(int argc, char * argv[])
 {
-        const unsigned int Dimension = 2;
-        typedef unsigned char PixelType;
-      
-        typedef otb::Image<PixelType,Dimension> ImageType;
-        typedef otb::ContinuousMinimumMaximumImageCalculator<ImageType> ContinuousMinimumMaximumImageCalculatorType;
-
-        // Instantiating object
-        ContinuousMinimumMaximumImageCalculatorType::Pointer object = ContinuousMinimumMaximumImageCalculatorType::New();
-        return EXIT_SUCCESS;
+  const unsigned int ImageDimension = 2;
+
+  typedef otb::Image<unsigned int, ImageDimension> InputImageType;
+
+  typedef otb::ContinuousMinimumMaximumImageCalculator<InputImageType>   FilterType;
+
+  FilterType::Pointer filter = FilterType::New();
+
+
+  return EXIT_SUCCESS;
+
 }
diff --git a/Testing/Code/BasicFilters/otbContinuousMinimumMaximumImageCalculatorTest.cxx b/Testing/Code/BasicFilters/otbContinuousMinimumMaximumImageCalculatorTest.cxx
index 903c48f2e89c45f29bc5fa9d47b21df1b2b5f09c..36460c4aaa89fa65142b4347c6e900189b1f3a5d 100644
--- a/Testing/Code/BasicFilters/otbContinuousMinimumMaximumImageCalculatorTest.cxx
+++ b/Testing/Code/BasicFilters/otbContinuousMinimumMaximumImageCalculatorTest.cxx
@@ -15,39 +15,109 @@
      PURPOSE.  See the above copyright notices for more information.
 
 =========================================================================*/
-#include "itkExceptionObject.h"
 
-#include "otbContinuousMinimumMaximumImageCalculator.h"
-#include "otbImageFileReader.h"
+
+#if defined(_MSC_VER)
+#pragma warning ( disable : 4786 )
+#endif
 #include "otbImage.h"
+#include "otbContinuousMinimumMaximumImageCalculator.h"
+#include "itkSize.h"
 
-int otbContinuousMinimumMaximumImageCalculatorTest( int argc, char * argv[])
+int 
+otbContinuousMinimumMaximumImageCalculatorTest(int ,char *[] )
 {
-        const char * infname = argv[1];
-        const unsigned int Dimension = 2;
-        typedef unsigned char PixelType;
-      
-        typedef otb::Image<PixelType,Dimension> ImageType;
-        typedef otb::ContinuousMinimumMaximumImageCalculator<ImageType> ContinuousMinimumMaximumImageCalculatorType;
-        typedef otb::ImageFileReader<ImageType> ReaderType;
-
-        ReaderType::Pointer reader = ReaderType::New();
-        reader->SetFileName(infname);
-        
-        //Tes with a small image
-        reader->Update();
-
-        ContinuousMinimumMaximumImageCalculatorType::Pointer continuous = ContinuousMinimumMaximumImageCalculatorType::New();
-        continuous->SetImage(reader->GetOutput());
-        //Compute values
-        continuous->ComputeMinimum();
-        continuous->ComputeMaximum();
-        continuous->Compute();
-// PB Timeout. Test provisoirement en FAILURE
-        
-//        std::cout << continuous->GetMinimum() <<std::endl;
-        
-        
-        
-        return EXIT_FAILURE;
+
+  typedef short int                          PixelType;
+  typedef itk::Size<2>                       SizeType;
+  typedef otb::Image<PixelType, 2>           ImageType;
+
+  typedef otb::ContinuousMinimumMaximumImageCalculator<ImageType>   MinMaxCalculatorType;
+
+  /* Define the image size and physical coordinates */
+  SizeType size = {{20, 20}};
+  double origin [2] = { 0.0, 0.0};
+  double spacing[2] = { 1, 1};
+
+  int flag = 0;           /* Did this test program work? */
+
+  std::cout << "Testing Minimum and Maximum Image Calculator:\n";
+
+    // Allocate a simple test image
+  ImageType::Pointer image = ImageType::New();
+  ImageType::RegionType region;
+  region.SetSize(size);
+  image->SetLargestPossibleRegion(region);
+  image->SetRequestedRegion(region);
+  image->SetBufferedRegion(region);
+  image->Allocate();
+
+    // Set origin and spacing of physical coordinates
+  image->SetOrigin(origin);
+  image->SetSpacing(spacing);
+
+  PixelType minimum = -52;
+  PixelType maximum = 103;
+
+
+    // Initialize the image contents with the minimum value
+  itk::Index<2> index;
+  for (int row = 0; row <20; row++) {
+    index[1] = row;
+    for (int col = 0; col < 20; col++) {
+      index[0] = col;
+      image->SetPixel(index, minimum);
+    }
+  }
+
+
+    // Set voxel (10,10) to maximum value
+  index[0] = 10;
+  index[1] = 10;
+  image->SetPixel(index, maximum);
+    
+  index[0] = 10;
+  index[1] = 11;
+  image->SetPixel(index, 41);
+    
+
+    // Create and initialize the calculator
+  MinMaxCalculatorType::Pointer calculator = MinMaxCalculatorType::New();
+  calculator->SetImage( image );
+  calculator->Compute();
+
+    // Return minimum of intensity
+  PixelType minimumResult = calculator->GetMinimum();
+  std::cout << "The Minimum intensity value is : " << minimumResult << std::endl;
+  std::cout << "Its index position is : " << calculator->GetContinuousIndexOfMinimum() << std::endl;
+
+  if(minimumResult != minimum)
+  {
+    std::cout << "Minimum Value is wrong : " << minimumResult ;
+    std::cout << " != " << minimum << std::endl;
+    flag = 1;
+  }
+  
+    // Return maximum of intensity
+  PixelType maximumResult = calculator->GetMaximum();
+  std::cout << "The Maximum intensity value is : " << maximumResult << std::endl;
+  std::cout << "Its index position is : " << calculator->GetContinuousIndexOfMaximum() << std::endl;
+
+  if(maximumResult != maximum)
+  {
+    std::cout << "Maximum Value is wrong : " << maximumResult ;
+    std::cout << " != " << maximum << std::endl;
+    flag = 2;
+  }
+
+
+    // Return results of test 
+  if (flag != 0) {
+    std::cout << "*** Some tests failed" << std::endl;
+    return flag; }
+    else {
+      std::cout << "All tests successfully passed" << std::endl;
+      return EXIT_SUCCESS; }
+
 }
+