From 4982fc973e815714dc83a1093e627e6835588fdf Mon Sep 17 00:00:00 2001
From: Mickael Savinaud <mickael.savinaud@c-s.fr>
Date: Wed, 23 Feb 2011 16:47:39 +0100
Subject: [PATCH] ENH: create otbIOTest22  only for tests about hdf files

---
 CMake/ImportGdal.cmake           |   7 +-
 Testing/Code/IO/CMakeLists.txt   | 154 ++++++++++++++++++-------------
 Testing/Code/IO/otbIOTests22.cxx |  29 ++++++
 Testing/Code/IO/otbIOTests9.cxx  |   2 +-
 4 files changed, 123 insertions(+), 69 deletions(-)
 create mode 100644 Testing/Code/IO/otbIOTests22.cxx

diff --git a/CMake/ImportGdal.cmake b/CMake/ImportGdal.cmake
index 2dba86e20d..cf72e52e26 100644
--- a/CMake/ImportGdal.cmake
+++ b/CMake/ImportGdal.cmake
@@ -46,13 +46,12 @@ IF(OTB_USE_EXTERNAL_GDAL)
                      OUTPUT_VARIABLE GDAL_FORMATS
                      OUTPUT_STRIP_TRAILING_WHITESPACE
                     )
-      IF ( ${GDAL_FORMATS} MATCHES "hdf3" )
+      IF ( ${GDAL_FORMATS} MATCHES "hdf" )
          SET(CHECK_GDAL_BUILDED_WITH_HDF 1 CACHE INTERNAL "GDAL_BUILDED_WITH_HDF" FORCE)
-         MESSAGE(WARNING "ok" )
-      ELSE ( ${GDAL_FORMATS} MATCHES "hdf3")
+      ELSE ( ${GDAL_FORMATS} MATCHES "hdf")
          MESSAGE(WARNING "CHECK_GDAL_BUILDED_WITH_HDF test failed : your GDAL is not builded with a hdf library. So the HDF tests will be deactivated. Formats supported by your GDAL: " [ ${GDAL_FORMATS} ] )
          SET(CHECK_GDAL_BUILDED_WITH_HDF 0 CACHE INTERNAL "GDAL_BUILDED_WITH_HDF" FORCE)
-      ENDIF(${GDAL_FORMATS} MATCHES "hdf3")
+      ENDIF(${GDAL_FORMATS} MATCHES "hdf")
   ELSE (GDALCONFIG_EXECUTABLE)    
     MESSAGE(WARNING "gdal-config not found")
   ENDIF (GDALCONFIG_EXECUTABLE) 
diff --git a/Testing/Code/IO/CMakeLists.txt b/Testing/Code/IO/CMakeLists.txt
index 51148a11d9..057106b3a4 100644
--- a/Testing/Code/IO/CMakeLists.txt
+++ b/Testing/Code/IO/CMakeLists.txt
@@ -54,6 +54,10 @@ ENDIF(OTB_USE_CURL)
 
 SET(IO_TESTS20    ${CXX_TEST_PATH}/otbIOTests20)
 SET(IO_TESTS21    ${CXX_TEST_PATH}/otbIOTests21)
+
+IF(CHECK_GDAL_BUILDED_WITH_HDF)
+  SET(IO_TESTS22    ${CXX_TEST_PATH}/otbIOTests22)
+ENDIF(CHECK_GDAL_BUILDED_WITH_HDF)
 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ COMMON_TESTS3 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -1226,70 +1230,6 @@ ADD_TEST(ioTvStreamingImageFilterGDAL_TIFF ${IO_TESTS9}
          ${INPUTDATA}/poupeesTIF/IMAGERY.TIF
          ${TEMP}/ioStreamingImageFilterTestGDAL_PoupeesTif.png
          )
-
-# Test multidataset
-IF(CHECK_GDAL_BUILDED_WITH_HDF)
-ADD_TEST(ioTvMultiDatasetReading1 ${IO_TESTS9}
-  --compare-ascii ${NOTOL}  ${BASELINE_FILES}/ioTvMultiDatasetReading1.txt
-                             ${TEMP}/ioTvMultiDatasetReading1.txt
-      otbVectorImageTest
-      ${INPUTDATA}/MOD09Q1G_EVI.A2006233.h07v03.005.2008338190308.hdf
-      ${TEMP}/ioTvMultiDatasetReading1.txt
-      0
-      )
-ADD_TEST(ioTvMultiDatasetReading2 ${IO_TESTS9}
-  --compare-ascii ${NOTOL}  ${BASELINE_FILES}/ioTvMultiDatasetReading2.txt
-                             ${TEMP}/ioTvMultiDatasetReading2.txt
-      otbVectorImageTest
-      ${INPUTDATA}/MOD09Q1G_EVI.A2006233.h07v03.005.2008338190308.hdf
-      ${TEMP}/ioTvMultiDatasetReading2.txt
-      5
-      )
-ADD_TEST(ioTvMultiDatasetReadingInName1 ${IO_TESTS9}
-  --compare-ascii ${NOTOL}  ${BASELINE_FILES}/ioTvMultiDatasetReading1.txt
-                             ${TEMP}/ioTvMultiDatasetReadingInName1.txt
-      otbVectorImageTest
-      ${INPUTDATA}/MOD09Q1G_EVI.A2006233.h07v03.005.2008338190308.hdf:0
-      ${TEMP}/ioTvMultiDatasetReadingInName1.txt
-      )
-ADD_TEST(ioTvMultiDatasetReadingInName2 ${IO_TESTS9}
-  --compare-ascii ${NOTOL}  ${BASELINE_FILES}/ioTvMultiDatasetReading2.txt
-                             ${TEMP}/ioTvMultiDatasetReadingInName2.txt
-      otbVectorImageTest
-      ${INPUTDATA}/MOD09Q1G_EVI.A2006233.h07v03.005.2008338190308.hdf:5
-      ${TEMP}/ioTvMultiDatasetReadingInName2.txt
-      )
-
-ADD_TEST(ioTvMultiDatasetReadingInfo ${IO_TESTS9}
-  --compare-ascii ${NOTOL}  ${BASELINE_FILES}/ioTvMultiDatasetReadingInfo.txt
-                             ${TEMP}/ioTvMultiDatasetReadingInfoOut.txt
-      otbMultiDatasetReadingInfo
-      ${INPUTDATA}/MOD09Q1G_EVI.A2006233.h07v03.005.2008338190308.hdf
-      ${TEMP}/ioTvMultiDatasetReadingInfoOut.txt
-      )
-   
-# Test reading HDF files (hdf, hdf5, hdf4, h5, h4, he5, he4) 
-IF(CHECK_HDF4OPEN_SYMBOL)          
-ADD_TEST(ioTvMultiChannelROI_HDF4_2_TIF ${COMMON_TESTS2}
-   --compare-image ${EPSILON_9}   ${BASELINE}/ioExtractROI_HDF2TIF_MOD09Q1G_20_25_100_150_channel_1.tif
-                     ${TEMP}/ioExtractROI_HDF2TIF_MOD09Q1G_20_25_100_150_channel_1_OUT.tif
-         otbMultiChannelExtractROI
-         ${INPUTDATA}/MOD09Q1G_EVI.A2006233.h07v03.005.2008338190308.hdf:5
-         ${TEMP}/ioExtractROI_HDF2TIF_MOD09Q1G_20_25_100_150_channel_1_OUT.tif
-         -startX 1400 -startY 3700 -sizeX 100 -sizeY 150
-         -channels 1 )
-ENDIF(CHECK_HDF4OPEN_SYMBOL)
-         
-ADD_TEST(ioTvMultiChannelROI_HDF5_2_TIF ${COMMON_TESTS2}
-   --compare-image ${EPSILON_9}   ${BASELINE}/ioExtractROI_HDF2TIF_GSSTF_NCEP_100_20_200_100_channel_1.tif
-                     ${TEMP}/ioExtractROI_HDF2TIF_GSSTF_NCEP_100_20_200_100_channel_1_OUT.tif
-         otbMultiChannelExtractROI
-         ${INPUTDATA}/GSSTF_NCEP.2b.2008.12.31.he5:3
-         ${TEMP}/ioExtractROI_HDF2TIF_GSSTF_NCEP_100_20_200_100_channel_1_OUT.tif
-         -startX 100 -startY 20 -sizeX 200 -sizeY 100
-         -channels 1 )
-
-ENDIF(CHECK_GDAL_BUILDED_WITH_HDF)
       
 # ---  STREAMING  IMAGE   FILE    WRITER  ---
 ADD_TEST(ioTvStreamingIFWriterBSQWithoutStreaming ${IO_TESTS2}
@@ -2913,6 +2853,81 @@ ADD_TEST(ioTvGDALReadPxlComplex${INPUTFILE_PIXELTYPE} ${IO_TESTS21}
 
 ENDFOREACH(INPUTFILE_PIXELTYPE ${INPUTFILE_PIXELTYPES_LIST})
 
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ otbIOTESTS22 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+# Tests about multidataset file like hdf4 or hdf5 (hdf, hdf5, hdf4, h5, h4, he5, he4)
+
+IF(CHECK_GDAL_BUILDED_WITH_HDF)
+
+# Tests to check if we can open hdf files using a otb::VectorImage and IFReader->SetDatasetNumber() function.
+# no access to data only PrintSelf() method.
+ADD_TEST(ioTvMultiDatasetReading1 ${IO_TESTS22}
+  --compare-ascii ${NOTOL}  ${BASELINE_FILES}/ioTvMultiDatasetReading1.txt
+                             ${TEMP}/ioTvMultiDatasetReading1.txt
+      otbVectorImageTest
+      ${INPUTDATA}/MOD09Q1G_EVI.A2006233.h07v03.005.2008338190308.hdf
+      ${TEMP}/ioTvMultiDatasetReading1.txt
+      0
+      )
+ADD_TEST(ioTvMultiDatasetReading2 ${IO_TESTS22}
+  --compare-ascii ${NOTOL}  ${BASELINE_FILES}/ioTvMultiDatasetReading2.txt
+                             ${TEMP}/ioTvMultiDatasetReading2.txt
+      otbVectorImageTest
+      ${INPUTDATA}/MOD09Q1G_EVI.A2006233.h07v03.005.2008338190308.hdf
+      ${TEMP}/ioTvMultiDatasetReading2.txt
+      5
+      )
+      
+# Tests to check if we can open hdf files using a otb::VectorImage and filename:NumSubDataset syntax.
+# no access to data only PrintSelf() method.
+ADD_TEST(ioTvMultiDatasetReadingInName1 ${IO_TESTS22}
+  --compare-ascii ${NOTOL}  ${BASELINE_FILES}/ioTvMultiDatasetReading1.txt
+                             ${TEMP}/ioTvMultiDatasetReadingInName1.txt
+      otbVectorImageTest
+      ${INPUTDATA}/MOD09Q1G_EVI.A2006233.h07v03.005.2008338190308.hdf:0
+      ${TEMP}/ioTvMultiDatasetReadingInName1.txt
+      )
+ADD_TEST(ioTvMultiDatasetReadingInName2 ${IO_TESTS22}
+  --compare-ascii ${NOTOL}  ${BASELINE_FILES}/ioTvMultiDatasetReading2.txt
+                             ${TEMP}/ioTvMultiDatasetReadingInName2.txt
+      otbVectorImageTest
+      ${INPUTDATA}/MOD09Q1G_EVI.A2006233.h07v03.005.2008338190308.hdf:5
+      ${TEMP}/ioTvMultiDatasetReadingInName2.txt
+      )
+
+# Test to check behavior of function readerGDAL->GetSubDatasetInfo() which return info about subdataset. 
+ADD_TEST(ioTvMultiDatasetReadingInfo ${IO_TESTS22}
+  --compare-ascii ${NOTOL}  ${BASELINE_FILES}/ioTvMultiDatasetReadingInfo.txt
+                             ${TEMP}/ioTvMultiDatasetReadingInfoOut.txt
+      otbMultiDatasetReadingInfo
+      ${INPUTDATA}/MOD09Q1G_EVI.A2006233.h07v03.005.2008338190308.hdf
+      ${TEMP}/ioTvMultiDatasetReadingInfoOut.txt
+      )
+   
+# Tests which read data in HDF files.  
+IF(CHECK_HDF4OPEN_SYMBOL)          
+ADD_TEST(ioTvMultiChannelROI_HDF4_2_TIF ${COMMON_TESTS2}
+   --compare-image ${EPSILON_9}   ${BASELINE}/ioExtractROI_HDF2TIF_MOD09Q1G_20_25_100_150_channel_1.tif
+                     ${TEMP}/ioExtractROI_HDF2TIF_MOD09Q1G_20_25_100_150_channel_1_OUT.tif
+         otbMultiChannelExtractROI
+         ${INPUTDATA}/MOD09Q1G_EVI.A2006233.h07v03.005.2008338190308.hdf:5
+         ${TEMP}/ioExtractROI_HDF2TIF_MOD09Q1G_20_25_100_150_channel_1_OUT.tif
+         -startX 1400 -startY 3700 -sizeX 100 -sizeY 150
+         -channels 1 )
+ENDIF(CHECK_HDF4OPEN_SYMBOL)
+         
+ADD_TEST(ioTvMultiChannelROI_HDF5_2_TIF ${COMMON_TESTS2}
+   --compare-image ${EPSILON_9}   ${BASELINE}/ioExtractROI_HDF2TIF_GSSTF_NCEP_100_20_200_100_channel_1.tif
+                     ${TEMP}/ioExtractROI_HDF2TIF_GSSTF_NCEP_100_20_200_100_channel_1_OUT.tif
+         otbMultiChannelExtractROI
+         ${INPUTDATA}/GSSTF_NCEP.2b.2008.12.31.he5:3
+         ${TEMP}/ioExtractROI_HDF2TIF_GSSTF_NCEP_100_20_200_100_channel_1_OUT.tif
+         -startX 100 -startY 20 -sizeX 200 -sizeY 100
+         -channels 1 )
+
+ENDIF(CHECK_GDAL_BUILDED_WITH_HDF)
+
 #----------------------------------------------------------------------------------
 SET(BasicIO_SRCS1
 otbIOTests1.cxx
@@ -3125,6 +3140,13 @@ otbComplexImageManipulationTest.cxx
 otbGDALReadPxlComplex.cxx
 )
 
+IF(CHECK_GDAL_BUILDED_WITH_HDF)
+SET(BasicIO_SRCS22
+otbIOTests22.cxx
+otbVectorImageTest.cxx
+otbMultiDatasetReadingInfo.cxx
+)
+ENDIF(CHECK_GDAL_BUILDED_WITH_HDF)
 
 
 OTB_ADD_EXECUTABLE(otbIOTests1 "${BasicIO_SRCS1}" "OTBIO;OTBTesting")
@@ -3170,3 +3192,7 @@ OTB_ADD_EXECUTABLE(otbIOTests20 "${BasicIO_SRCS20}" "OTBIO;OTBTesting")
 ENDIF( NOT OTB_DISABLE_CXX_TESTING AND BUILD_TESTING )
 
 OTB_ADD_EXECUTABLE(otbIOTests21 "${BasicIO_SRCS21}" "OTBIO;OTBTesting")
+
+IF(CHECK_GDAL_BUILDED_WITH_HDF)
+  OTB_ADD_EXECUTABLE(otbIOTests22 "${BasicIO_SRCS22}" "OTBIO;OTBTesting")
+ENDIF(CHECK_GDAL_BUILDED_WITH_HDF)
\ No newline at end of file
diff --git a/Testing/Code/IO/otbIOTests22.cxx b/Testing/Code/IO/otbIOTests22.cxx
new file mode 100644
index 0000000000..bb0bc2d735
--- /dev/null
+++ b/Testing/Code/IO/otbIOTests22.cxx
@@ -0,0 +1,29 @@
+/*=========================================================================
+
+  Program:   ORFEO Toolbox
+  Language:  C++
+  Date:      $Date$
+  Version:   $Revision$
+
+
+  Copyright (c) Centre National d'Etudes Spatiales. All rights reserved.
+  See OTBCopyright.txt for details.
+
+
+  This software is distributed WITHOUT ANY WARRANTY; without even
+  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+  PURPOSE.  See the above copyright notices for more information.
+
+=========================================================================*/
+
+#if defined(_MSC_VER)
+#pragma warning ( disable : 4786 )
+#endif
+
+#include "otbTestMain.h"
+
+void RegisterTests()
+{
+  REGISTER_TEST(otbVectorImageTest);
+  REGISTER_TEST(otbMultiDatasetReadingInfo);
+}
diff --git a/Testing/Code/IO/otbIOTests9.cxx b/Testing/Code/IO/otbIOTests9.cxx
index d386086321..ce6d33744d 100644
--- a/Testing/Code/IO/otbIOTests9.cxx
+++ b/Testing/Code/IO/otbIOTests9.cxx
@@ -37,5 +37,5 @@ void RegisterTests()
   REGISTER_TEST(otbStreamingImageFilterTest);
   REGISTER_TEST(otbVectorImageFileReaderWriterTest);
   REGISTER_TEST(otbStreamingShortImageFileWriterTest);
-  REGISTER_TEST(otbMultiDatasetReadingInfo);
+  //REGISTER_TEST(otbMultiDatasetReadingInfo);
 }
-- 
GitLab