From 789336785f52412f2e6021ecd107633069304cf9 Mon Sep 17 00:00:00 2001
From: Mickael Savinaud <mickael.savinaud@c-s.fr>
Date: Mon, 5 Mar 2012 18:26:42 +0100
Subject: [PATCH] ENH: add support of ICC data and PHR in large input, remove
 old tests

---
 CMakeLists.txt                 |   6 +
 Testing/CMakeLists.txt         |   8 +
 Testing/Code/IO/CMakeLists.txt | 346 ++++++++++++++-------------------
 3 files changed, 156 insertions(+), 204 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 966040d342..087c3b853b 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -331,6 +331,12 @@ IF(OTB_DATA_USE_SPOTPHRINPUT)
   MARK_AS_ADVANCED(OTB_DATA_SPOTPHRINPUT_ROOT)
 ENDIF(OTB_DATA_USE_SPOTPHRINPUT)
 
+OPTION(OTB_DATA_USE_ICCPHRINPUT "Use PHR data provided by ICC." OFF)
+MARK_AS_ADVANCED(OTB_DATA_USE_ICCPHRINPUT)
+IF(OTB_DATA_USE_ICCPHRINPUT)
+  FIND_PATH(OTB_DATA_ICCPHRINPUT_ROOT OTB_PHR_Data.readme $ENV{OTB_DATA_ICCPHRINPUT_ROOT})
+  MARK_AS_ADVANCED(OTB_DATA_ICCPHRINPUT_ROOT)
+ENDIF(OTB_DATA_USE_ICCPHRINPUT)
 
 #-----------------------------------------------------------------------------
 # Configure files with settings for use by the build
diff --git a/Testing/CMakeLists.txt b/Testing/CMakeLists.txt
index d360ab7f90..0a1af0d661 100644
--- a/Testing/CMakeLists.txt
+++ b/Testing/CMakeLists.txt
@@ -59,6 +59,14 @@ ELSE(OTB_BINARY_DIR)
 
   INCLUDE(${CMAKE_CURRENT_SOURCE_DIR}/TestingHelper.cmake)
 
+  OPTION(OTB_DATA_USE_ICCPHRINPUT "Use PHR data provided by ICC." OFF)
+  MARK_AS_ADVANCED(OTB_DATA_USE_ICCPHRINPUT)
+  IF(OTB_DATA_USE_ICCPHRINPUT)
+    FIND_PATH(OTB_DATA_ICCPHRINPUT_ROOT OTB_PHR_Data.readme $ENV{OTB_DATA_ICCPHRINPUT_ROOT})
+    MARK_AS_ADVANCED(OTB_DATA_ICCPHRINPUT_ROOT)
+  ENDIF(OTB_DATA_USE_ICCPHRINPUT)
+
+
   MACRO(OTB_ADD_EXECUTABLE name sources libraries)
     ADD_EXECUTABLE(${name} ${sources})
     TARGET_LINK_LIBRARIES(${name}  ${libraries})
diff --git a/Testing/Code/IO/CMakeLists.txt b/Testing/Code/IO/CMakeLists.txt
index d6e812a2dc..72dee45790 100644
--- a/Testing/Code/IO/CMakeLists.txt
+++ b/Testing/Code/IO/CMakeLists.txt
@@ -6,6 +6,10 @@ IF(OTB_DATA_USE_SPOTPHRINPUT)
   SET(SPOTPHRINPUT ${OTB_DATA_SPOTPHRINPUT_ROOT} )
 ENDIF(OTB_DATA_USE_SPOTPHRINPUT)
 
+IF(OTB_DATA_USE_ICCPHRINPUT)
+  SET(ICCPHRINPUT ${OTB_DATA_ICCPHRINPUT_ROOT} )
+ENDIF(OTB_DATA_USE_ICCPHRINPUT)
+
 SET(COMMON_TESTS2 ${CXX_TEST_PATH}/otbCommonTests2)
 SET(COMMON_TESTS3 ${CXX_TEST_PATH}/otbCommonTests3)
 SET(IO_TESTS1     ${CXX_TEST_PATH}/otbIOTests1)
@@ -48,9 +52,21 @@ ENDIF(CHECK_GDAL_BUILDED_WITH_HDF)
 
 SET(IO_TESTS23    ${CXX_TEST_PATH}/otbIOTests23)
 
+# --------------------------------------------------------------------------------
+# Manage PHR data input   
+IF(OTB_DATA_USE_LARGEINPUT)
+   SET(GenericTestPHR_DATA_INPUTS
+      ${GenericTestPHR_DATA_INPUTS}
+      ${LARGEINPUT}/PLEIADES-PRE/FCGC600011783/IMG_PHR1Z_PMS_N_001/IMG_PHR1A_PMS-N_201006181052297_ORT_IPU_20111011_0619-001_R1C1.JP2
+   )
+   
+   SET(GenericTestPHR_DATA_TYPES
+      ${GenericTestPHR_DATA_TYPES}
+      SIMULV3_PHR_ORTHO_GEO_PMS-N
+   )      
+ENDIF(OTB_DATA_USE_LARGEINPUT)   
 
 IF(OTB_DATA_USE_SPOTPHRINPUT)
-
   SET(GenericTestPHR_SPOT_DATA_INPUTS
       ${SPOTPHRINPUT}/ORTHO_UTM_BUNDLE/IMG_PHR1A_P_001/IMG_PHR1A_P_201006181052297_ORT_IPU_20120221_8798-001_R1C1.JP2
       ${SPOTPHRINPUT}/ORTHO_UTM_BUNDLE/IMG_PHR1A_MS_002/IMG_PHR1A_MS_201006181052297_ORT_IPU_20120221_8798-002_R1C1.JP2
@@ -61,15 +77,47 @@ IF(OTB_DATA_USE_SPOTPHRINPUT)
       )
 
   SET(GenericTestPHR_SPOT_DATA_TYPES
-	  ORTHO_UTM_P
-	  ORTHO_UTM_MS
-	  ORTHO_GEO_P
-      ORTHO_GEO_MS
-	  PRIMARY_MS
-	  PRIMARY_P
+	  SPOT_PHR_ORTHO_UTM_P
+	  SPOT_PHR_ORTHO_UTM_MS
+	  SPOT_PHR_ORTHO_GEO_P
+      SPOT_PHR_ORTHO_GEO_MS
+	  SPOT_PHR_PRIMARY_MS
+	  SPOT_PHR_PRIMARY_P
 	 )
 	 
-ENDIF(OTB_DATA_USE_SPOTPHRINPUT)	
+   SET(GenericTestPHR_DATA_INPUTS ${GenericTestPHR_DATA_INPUTS} ${GenericTestPHR_SPOT_DATA_INPUTS})	  
+   SET(GenericTestPHR_DATA_TYPES ${GenericTestPHR_DATA_TYPES} ${GenericTestPHR_SPOT_DATA_TYPES})   
+ENDIF(OTB_DATA_USE_SPOTPHRINPUT)
+
+IF(OTB_DATA_USE_ICCPHRINPUT)
+  SET(GenericTestPHR_ICC_DATA_INPUTS
+      ${ICCPHRINPUT}/PRIMARY_PMS/IMGPHR_201212716417737721/IMG_PHR1A_PMS_201201151100183_SEN_IPU_20120127_5579-001_R1C2.JP2
+      ${ICCPHRINPUT}/PRIMARY_PMS/IMGPHR_201212716417737721/IMG_PHR1A_PMS_201201151100183_SEN_IPU_20120127_5579-001_R2C2.JP2
+      ${ICCPHRINPUT}/PRIMARY_PMS/IMGPHR_201222215194743808/IMG_PHR1A_PMS_201201151100183_SEN_IPU_20120222_0901-001_R1C1.JP2
+      ${ICCPHRINPUT}/PRIMARY_PMS/IMGPHR_201222215194743808/IMG_PHR1A_PMS_201201151100183_SEN_IPU_20120222_0901-001_R3C1.JP2
+      )
+
+  SET(GenericTestPHR_ICC_DATA_TYPES
+	  ICC_PHR_PRIMARY_PMS_R1C1_2012-01-27
+	  ICC_PHR_PRIMARY_PMS_R2C2_2012-01-27
+	  ICC_PHR_PRIMARY_PMS_R1C1_2012-02-22
+	  ICC_PHR_PRIMARY_PMS_R3C1_2012-02-22
+	 )
+  
+  SET(GenericTestPHR_DATA_INPUTS ${GenericTestPHR_DATA_INPUTS} ${GenericTestPHR_ICC_DATA_INPUTS})	 
+  SET(GenericTestPHR_DATA_TYPES ${GenericTestPHR_DATA_TYPES} ${GenericTestPHR_ICC_DATA_TYPES})    	 	 
+ENDIF(OTB_DATA_USE_ICCPHRINPUT)
+
+# Use in debug to show the variables
+#SET( GenericTestPHR_TESTNB 0)  
+#FOREACH( current_file ${GenericTestPHR_DATA_INPUTS} )
+#  LIST(GET GenericTestPHR_DATA_TYPES  ${GenericTestPHR_TESTNB} current_type   )
+#  MATH(EXPR GenericTestPHR_TESTNB "${GenericTestPHR_TESTNB} + 1")
+#  
+#  MESSAGE(STATUS ${current_file})
+#  MESSAGE(STATUS ${current_type})
+#
+#ENDFOREACH()
 
 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ COMMON_TESTS3 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -620,45 +668,6 @@ ADD_TEST(ioTvImageKeywordlistQuickbird ${IO_TESTS4}
          ${TEMP}/ioTvImageKeywordlistQuickbird_saveState_loadState.txt
 )
 
-ADD_TEST(ioTvImageKeywordlistPleiades ${IO_TESTS4}
-  --ignore-order --compare-n-ascii ${NOTOL} 2
-         ${BASELINE_FILES}/ioTvImageKeywordlistPleiades.txt
-         ${TEMP}/ioTvImageKeywordlistPleiades.txt
-         ${BASELINE_FILES}/ioTvImageKeywordlistPleiades.txt
-         ${TEMP}/ioTvImageKeywordlistPleiades_saveState_loadState.txt
-         --ignore-lines-with 2 meters_per_pixel_x meters_per_pixel_y
-    otbImageKeywordlist
-         ${LARGEINPUT}/PLEIADES-PRE/TLSE_PRIMARY_BUNDLE__12_bits_Lossy_DIMAP_V2/FCGC300009788/IMG_PHR1A_MS_002/IMG_PHR1A_MS_201006181052297_SEN_IPU_20110401_0896-004_R1C1.JP2
-         ${TEMP}/ioTvImageKeywordlistPleiades.txt
-         ${TEMP}/ioTvImageKeywordlistPleiades_saveState_loadState.txt
-)
-
-IF(OTB_DATA_USE_SPOTPHRINPUT)
-  
-  SET( GenericTestPHR_TESTNB 0)
-  
-  FOREACH( current_file ${GenericTestPHR_SPOT_DATA_INPUTS} )
-    LIST(GET GenericTestPHR_SPOT_DATA_TYPES   ${GenericTestPHR_TESTNB} current_type )
-    MATH(EXPR GenericTestPHR_TESTNB "${GenericTestPHR_TESTNB} + 1")
-    
-      # Get and manipulate ImageKeywordlist 
-      ADD_TEST(ioTvImageKeywordlist_SPOT_PHR_${current_type} ${IO_TESTS4}
-               --ignore-order --compare-n-ascii ${NOTOL} 2
-                 ${BASELINE_FILES}/ioTvImageKeywordlist_SPOT_PHR_${current_type}.txt
-                 ${TEMP}/ioTvImageKeywordlist_SPOT_PHR_${current_type}_OUT.txt
-                 ${BASELINE_FILES}/ioTvImageKeywordlist_SPOT_PHR_${current_type}.txt
-                 ${TEMP}/ioTvImageKeywordlist_SPOT_PHR_${current_type}_saveState_loadState_OUT.txt
-               --ignore-lines-with 2 meters_per_pixel_x meters_per_pixel_y
-               otbImageKeywordlist
-                  ${current_file}
-                  ${TEMP}/ioTvImageKeywordlist_SPOT_PHR_${current_type}_OUT.txt
-                  ${TEMP}/ioTvImageKeywordlist_SPOT_PHR_${current_type}_saveState_loadState_OUT.txt
-              )
-
-  ENDFOREACH()
-
-ENDIF(OTB_DATA_USE_SPOTPHRINPUT)
-
 ADD_TEST(ioTvImageKeywordlistIkonos ${IO_TESTS4}
   --ignore-order --compare-n-ascii ${NOTOL} 2
          ${BASELINE_FILES}/ioTvImageKeywordlistIkonos.txt
@@ -841,6 +850,34 @@ ADD_TEST(ioTvImageKeywordlistErs ${IO_TESTS4}
 )
 ENDIF(OTB_DATA_USE_LARGEINPUT)
 
+
+IF(OTB_DATA_USE_LARGEINPUT OR OTB_DATA_USE_SPOTPHRINPUT OR OTB_DATA_USE_ICCPHRINPUT)
+  
+  SET( GenericTestPHR_TESTNB 0)
+  
+  FOREACH( current_file ${GenericTestPHR_DATA_INPUTS} )
+    LIST(GET GenericTestPHR_DATA_TYPES   ${GenericTestPHR_TESTNB} current_type )
+    MATH(EXPR GenericTestPHR_TESTNB "${GenericTestPHR_TESTNB} + 1")
+    
+      # Get and manipulate ImageKeywordlist 
+      ADD_TEST(ioTvImageKeywordlist_${current_type} ${IO_TESTS4}
+               --ignore-order --compare-n-ascii ${NOTOL} 2
+                 ${BASELINE_FILES}/ioTvImageKeywordlist_${current_type}.txt
+                 ${TEMP}/ioTvImageKeywordlist_${current_type}_OUT.txt
+                 ${BASELINE_FILES}/ioTvImageKeywordlist_${current_type}.txt
+                 ${TEMP}/ioTvImageKeywordlist_${current_type}_saveState_loadState_OUT.txt
+               --ignore-lines-with 2 meters_per_pixel_x meters_per_pixel_y
+               otbImageKeywordlist
+                  ${current_file}
+                  ${TEMP}/ioTvImageKeywordlist_${current_type}_OUT.txt
+                  ${TEMP}/ioTvImageKeywordlist_${current_type}_saveState_loadState_OUT.txt
+              )
+
+  ENDFOREACH()
+
+ENDIF(OTB_DATA_USE_LARGEINPUT OR OTB_DATA_USE_SPOTPHRINPUT OR OTB_DATA_USE_ICCPHRINPUT)
+
+
 ADD_TEST(ioTvOssimJpegFileRessourceLeak ${IO_TESTS4}
         otbOssimJpegFileRessourceLeakTest
         ${INPUTDATA}/poupees.jpg
@@ -1948,9 +1985,11 @@ ADD_TEST(ioTvMapProjectionAdapterTest ${IO_TESTS12}
 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ otbIOTESTS13 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
 IF(OTB_USE_JPEG2000)
 
+# --------------------------------------------------------------------------------
+# old test suite:
+
 # ---  JPEG2000 can read ---
 ADD_TEST(ioTuJ2KImageIOCanRead ${IO_TESTS13}
          otbJPEG2000ImageIOTestCanRead
@@ -1984,117 +2023,8 @@ ADD_TEST(ioTvImageFileReaderWriterJP22TIF ${IO_TESTS2}
          )
 ENDIF(OTB_DATA_USE_LARGEINPUT)
 
+# --------------------------------------------------------------------------------
 # New test suite:
-IF(OTB_DATA_USE_LARGEINPUT)
-# Decode an area inside one tile
-  ADD_TEST(ioTvVectorImageFileReaderWriterJP22TIF_PLEIADES-PRE-R3C1 ${COMMON_TESTS2}
-         --compare-image ${EPSILON_9}  ${BASELINE}/ioTvJP22TIF_Extract_PLEIADES-PRE-R3C1.tif
-                                       ${TEMP}/ioTvJP22TIF_Extract_PLEIADES-PRE-R3C1.tif
-         otbMultiChannelExtractROI
-         -ushort ${LARGEINPUT}/PLEIADES-PRE/VERSION2/IMG_PHR_001/IMG_R3C1.JP2
-         -ushort ${TEMP}/ioTvJP22TIF_Extract_PLEIADES-PRE-R3C1.tif
-         -startX 256 -startY 512 -sizeX 256 -sizeY 128
-         -channels 1 2 3 4
-         -time
-         )
-
-# Decode an area which need 4 tiles
-  ADD_TEST(ioTvVectorImageFileReaderWriterJP22TIF_PLEIADES-PRE-R3C1-4tiles ${COMMON_TESTS2}
-         --compare-image ${EPSILON_9}  ${BASELINE}/ioTvJP22TIF_Extract_PLEIADES-PRE-R3C1-4tiles.tif
-                                       ${TEMP}/ioTvJP22TIF_Extract_PLEIADES-PRE-R3C1-4tiles.tif
-         otbMultiChannelExtractROI
-         -ushort ${LARGEINPUT}/PLEIADES-PRE/VERSION2/IMG_PHR_001/IMG_R3C1.JP2
-         -ushort ${TEMP}/ioTvJP22TIF_Extract_PLEIADES-PRE-R3C1-4tiles.tif
-         -startX 2000 -startY 2000 -sizeX 256 -sizeY 128
-         -channels 1 2 3 4
-         -time
-         )
-
-# Decode an area inside one tile
-  ADD_TEST(ioTvVectorImageFileReaderWriterJP22TIF_PLEIADES-PRE-R4C1 ${COMMON_TESTS2}
-         --compare-image ${EPSILON_9}  ${BASELINE}/ioTvJP22TIF_Extract_PLEIADES-PRE-R4C1.tif
-                                       ${TEMP}/ioTvJP22TIF_Extract_PLEIADES-PRE-R4C1.tif
-         otbMultiChannelExtractROI
-         -ushort ${LARGEINPUT}/PLEIADES-PRE/VERSION2/IMG_PHR_001/IMG_R4C1.JP2
-         -ushort ${TEMP}/ioTvJP22TIF_Extract_PLEIADES-PRE-R4C1.tif
-         -startX 256 -startY 512 -sizeX 256 -sizeY 128
-         -channels 1 2 3 4
-         -time
-         )
-# Decode an area which need 4 tiles
-  ADD_TEST(ioTvVectorImageFileReaderWriterJP22TIF_PLEIADES-PRE-R4C1-4tiles ${COMMON_TESTS2}
-         --compare-image ${EPSILON_9}  ${BASELINE}/ioTvJP22TIF_Extract_PLEIADES-PRE-R4C1-4tiles.tif
-                                       ${TEMP}/ioTvJP22TIF_Extract_PLEIADES-PRE-R4C1-4tiles.tif
-         otbMultiChannelExtractROI
-         -ushort ${LARGEINPUT}/PLEIADES-PRE/VERSION2/IMG_PHR_001/IMG_R4C1.JP2
-         -ushort ${TEMP}/ioTvJP22TIF_Extract_PLEIADES-PRE-R4C1-4tiles.tif
-         -startX 2000 -startY 2000 -sizeX 256 -sizeY 128
-         -channels 1 2 3 4
-         -time
-         )
-
-  # Between tiles 328 and 329, the codestream offset crosses the 2**31-1 boundary (max of 32 bit signed integer)
-  # This reveals a problem on 32 bits systems since fseek takes an integer
-  ADD_TEST(ioTvVectorImageFileReaderWriterJP22TIF_PLEIADES-PRE-R4C1-tile328-329 ${COMMON_TESTS2}
-         --without-threads
-         --compare-image ${EPSILON_9}  ${BASELINE}/ioTvJP22TIF_Extract_PLEIADES-PRE-R4C1-tile328-329.tif
-                                       ${TEMP}/ioTvJP22TIF_Extract_PLEIADES-PRE-R4C1-tile328-329_OUT.tif
-         otbMultiChannelExtractROI
-         -ushort ${LARGEINPUT}/PLEIADES-PRE/VERSION2/IMG_PHR_001/IMG_R4C1.JP2:5
-         -ushort ${TEMP}/ioTvJP22TIF_Extract_PLEIADES-PRE-R4C1-tile328-329_OUT.tif
-         -startX 1330 -startY 928 -sizeX 32 -sizeY 32
-         -channels 1 2 3 4
-         -time
-         )
-
-  # Generate the QL used in monteverdi (take only first band to put the image in the baseline)
-  ADD_TEST(ioTvVectorImageFileReaderWriterJP22TIF_PLEIADES-PRE-R4C1-FullQL ${COMMON_TESTS2}
-         --compare-image ${EPSILON_9}   ${BASELINE}/ioExtractROI_JPEG2K_2_TIF_pleiades_ql.tif
-                                        ${TEMP}/ioExtractROI_JPEG2K_2_TIF_pleiades_ql_OUT.tif
-         otbMultiChannelExtractROI
-         -ushort ${LARGEINPUT}/PLEIADES-PRE/VERSION2/IMG_PHR_001/IMG_R4C1.JP2:5
-         -ushort ${TEMP}/ioExtractROI_JPEG2K_2_TIF_pleiades_ql_OUT.tif
-         -channels 1
-         -time
-         )
-
-  # Decode an area inside one tile
-  ADD_TEST(ioTvVectorImageFileReaderWriterJP22TIF_PLEIADES-PRE-V3-R1C1 ${COMMON_TESTS2}
-         --compare-image ${EPSILON_9}  ${BASELINE}/ioTvJP22TIF_Extract_PLEIADES-PRE-V3-R1C1.tif
-                                       ${TEMP}/ioTvJP22TIF_Extract_PLEIADES-PRE-V3-R1C1_OUT.tif
-         otbMultiChannelExtractROI
-         -ushort ${LARGEINPUT}/PLEIADES-PRE/FCGC600011783/IMG_PHR1Z_PMS_N_001/IMG_PHR1A_PMS-N_201006181052297_ORT_IPU_20111011_0619-001_R1C1.JP2
-         -ushort ${TEMP}/ioTvJP22TIF_Extract_PLEIADES-PRE-V3-R1C1_OUT.tif
-         -startX 256 -startY 512 -sizeX 256 -sizeY 128
-         -channels 1 2 3
-         -time
-         )
-
-  # Decode an area which need 4 tiles
-  ADD_TEST(ioTvVectorImageFileReaderWriterJP22TIF_PLEIADES-PRE-V3-R1C1-4tiles ${COMMON_TESTS2}
-         --compare-image ${EPSILON_9}  ${BASELINE}/ioTvJP22TIF_Extract_PLEIADES-PRE-V3-R1C1-4tiles.tif
-                                       ${TEMP}/ioTvJP22TIF_Extract_PLEIADES-PRE-V3-R1C1-4tiles_OUT.tif
-         otbMultiChannelExtractROI
-         -ushort ${LARGEINPUT}/PLEIADES-PRE/FCGC600011783/IMG_PHR1Z_PMS_N_001/IMG_PHR1A_PMS-N_201006181052297_ORT_IPU_20111011_0619-001_R1C1.JP2
-         -ushort ${TEMP}/ioTvJP22TIF_Extract_PLEIADES-PRE-V3-R1C1-4tiles_OUT.tif
-         -startX 2000 -startY 2000 -sizeX 256 -sizeY 128
-         -channels 1 2 3
-         -time
-         )
-
-  # Generate the QL used in monteverdi (take only first band to put the image in the baseline)
-  ADD_TEST(ioTvVectorImageFileReaderWriterJP22TIF_PLEIADES-PRE-V3-R1C1-FullQL ${COMMON_TESTS2}
-         --compare-image ${EPSILON_9}   ${BASELINE}/ioExtractROI_JPEG2K_2_TIF_pleiades_V3_ql.tif
-                                        ${TEMP}/ioExtractROI_JPEG2K_2_TIF_pleiades_V3_ql_OUT.tif
-         otbMultiChannelExtractROI
-         -ushort ${LARGEINPUT}/PLEIADES-PRE/FCGC600011783/IMG_PHR1Z_PMS_N_001/IMG_PHR1A_PMS-N_201006181052297_ORT_IPU_20111011_0619-001_R1C1.JP2:5
-         -ushort ${TEMP}/ioExtractROI_JPEG2K_2_TIF_pleiades_V3_ql_OUT.tif
-         -channels 1
-         -time
-         )
-
-ENDIF(OTB_DATA_USE_LARGEINPUT)
-
 
 # Tests to check if we can open JPEG2000 files using a otb::VectorImage and IFReader->SetAdditionalNumber() function.
 # no access to data only PrintSelf() method.
@@ -2115,17 +2045,6 @@ ADD_TEST(ioTvMultiResolutionReading3 ${IO_TESTS13}
       3
       )
 
-IF(OTB_DATA_USE_LARGEINPUT)
-ADD_TEST(ioTvMultiResolutionReadingPleiadesV3 ${IO_TESTS13}
-  --compare-ascii ${NOTOL}  ${BASELINE_FILES}/ioTvMultiResolutionReadingPleiadesV3.txt
-                             ${TEMP}/ioTvMultiResolutionReadingPleiadesV3_OUT.txt
-      otbVectorImageTest
-      ${LARGEINPUT}/PLEIADES-PRE/FCGC600011783/IMG_PHR1Z_PMS_N_001/IMG_PHR1A_PMS-N_201006181052297_ORT_IPU_20111011_0619-001_R1C1.JP2
-      ${TEMP}/ioTvMultiResolutionReadingPleiadesV3_OUT.txt
-      0
-      )
-ENDIF(OTB_DATA_USE_LARGEINPUT)
-
 # Tests to check if we can open JPEG2000 files using a otb::VectorImage
 # and filename:ResolutionFactor syntax.
 # no access to data only PrintSelf() method.
@@ -2259,6 +2178,7 @@ ADD_TEST(ioTvMultiChannelROI_JPEG2000_2_TIF_res5 ${COMMON_TESTS2}
            ${INPUTDATA}/bretagne.j2k:5
            ${TEMP}/ioExtractROI_JPEG2K_2_TIF_bretagne_res5_OUT.tif )
 
+# --------------------------------------------------------------------------------
 # Test the possibility to modify the size of cache used to reduce the decoding operations
 # O tile in the cache (500K)
 ADD_TEST(ioTvJPEG2000ImageIO_CacheSize_500 ${IO_TESTS13}
@@ -2299,21 +2219,41 @@ ADD_TEST(ioTvJPEG2000ImageIO_CacheSize_25000 ${IO_TESTS13}
          ${INPUTDATA}/bretagne.j2k
          ${TEMP}/ioClassicalQLJPEG2K_bretagne_OUT.tif)
 
+# --------------------------------------------------------------------------------
+# Special Case
+# Between tiles 328 and 329, the codestream offset crosses the 2**31-1 boundary (max of 32 bit signed integer)
+# This reveals a problem on 32 bits systems since fseek takes an integer
+IF(OTB_DATA_USE_LARGEINPUT)
 
-IF(OTB_DATA_USE_SPOTPHRINPUT)
+  ADD_TEST(ioTvVectorImageFileReaderWriterJP22TIF_PLEIADES-PRE-R4C1-tile328-329 ${COMMON_TESTS2}
+           --without-threads
+           --compare-image ${EPSILON_9}  ${BASELINE}/ioTvJP22TIF_Extract_PLEIADES-PRE-R4C1-tile328-329.tif
+                                         ${TEMP}/ioTvJP22TIF_Extract_PLEIADES-PRE-R4C1-tile328-329_OUT.tif
+           otbMultiChannelExtractROI
+              -ushort ${LARGEINPUT}/PLEIADES-PRE/VERSION2/IMG_PHR_001/IMG_R4C1.JP2:5
+              -ushort ${TEMP}/ioTvJP22TIF_Extract_PLEIADES-PRE-R4C1-tile328-329_OUT.tif
+              -startX 1330 -startY 928 -sizeX 32 -sizeY 32
+              -time
+           )
+
+ENDIF(OTB_DATA_USE_LARGEINPUT)
+
+# --------------------------------------------------------------------------------
+# Tests about special data (larges files, ICC files, SPOT files)
+IF(OTB_DATA_USE_LARGEINPUT OR OTB_DATA_USE_SPOTPHRINPUT OR OTB_DATA_USE_ICCPHRINPUT)
   SET( GenericTestPHR_TESTNB 0)
 
-FOREACH( current_file ${GenericTestPHR_SPOT_DATA_INPUTS} )
-  LIST(GET GenericTestPHR_SPOT_DATA_TYPES   ${GenericTestPHR_TESTNB} current_type   )
+FOREACH( current_file ${GenericTestPHR_DATA_INPUTS} )
+  LIST(GET GenericTestPHR_DATA_TYPES   ${GenericTestPHR_TESTNB} current_type   )
   MATH(EXPR GenericTestPHR_TESTNB "${GenericTestPHR_TESTNB} + 1")
     # CanRead
-    ADD_TEST(ioTuJ2KImageIOCanRead_SPOT_PHR_${current_type} ${IO_TESTS13}
+    ADD_TEST(ioTuJ2KImageIOCanRead_${current_type} ${IO_TESTS13}
              otbJPEG2000ImageIOTestCanRead
                 ${current_file}
             )
     
     # Read info from the input file
-    ADD_TEST(ioTvVectorImageReadingInfo_SPOT_PHR_${current_type} ${IO_TESTS13}
+    ADD_TEST(ioTvVectorImageReadingInfo_${current_type} ${IO_TESTS13}
              --compare-ascii ${NOTOL}  ${BASELINE_FILES}/ioTvMultiResolutionReading_${current_type}.txt
                                        ${TEMP}/ioTvMultiResolutionReading_${current_type}_OUT.txt
              otbVectorImageLegacyTest
@@ -2323,7 +2263,7 @@ FOREACH( current_file ${GenericTestPHR_SPOT_DATA_INPUTS} )
              )
 
     # Read info from the input file (res=5)
-    ADD_TEST(ioTvVectorImageReadingInfo_SPOT_PHR_${current_type}_res5 ${IO_TESTS13}
+    ADD_TEST(ioTvVectorImageReadingInfo_${current_type}_res5 ${IO_TESTS13}
              --compare-ascii ${NOTOL}  ${BASELINE_FILES}/ioTvMultiResolutionReading_${current_type}_res5.txt
                                        ${TEMP}/ioTvMultiResolutionReading_${current_type}_res5_OUT.txt
              otbVectorImageLegacyTest
@@ -2333,7 +2273,7 @@ FOREACH( current_file ${GenericTestPHR_SPOT_DATA_INPUTS} )
              )
             
     # Extract resolution of input file        
-    ADD_TEST(ioTvMultiResolutionReadingInfo_SPOT_PHR_${current_type} ${IO_TESTS13}
+    ADD_TEST(ioTvMultiResolutionReadingInfo_${current_type} ${IO_TESTS13}
              --compare-ascii ${NOTOL}  ${BASELINE_FILES}/ioTvMultiResolutionReadingInfo_${current_type}.txt
                                        ${TEMP}/ioTvMultiResolutionReadingInfo_${current_type}_OUT.txt
              otbMultiResolutionReadingInfo
@@ -2342,7 +2282,7 @@ FOREACH( current_file ${GenericTestPHR_SPOT_DATA_INPUTS} )
             )
   
     # Decode an area inside one tile
-    ADD_TEST(ioTvReaderWriterJP22TIF_SPOT_PHR_${current_type}_1 ${COMMON_TESTS2}
+    ADD_TEST(ioTvReaderWriterJP22TIF_${current_type}_1 ${COMMON_TESTS2}
 	         --compare-image ${EPSILON_9}  ${BASELINE}/ioTvJP22TIF_Extract_SPOT_PHR_${current_type}_1.tif
                                            ${TEMP}/ioTvJP22TIF_Extract_SPOT_PHR_${current_type}_1_OUT.tif
              otbMultiChannelExtractROI
@@ -2353,7 +2293,7 @@ FOREACH( current_file ${GenericTestPHR_SPOT_DATA_INPUTS} )
             )
             
     # Decode an area which need 4 tiles
-    ADD_TEST(ioTvReaderWriterJP22TIF_SPOT_PHR_${current_type}_2 ${COMMON_TESTS2}
+    ADD_TEST(ioTvReaderWriterJP22TIF_${current_type}_2 ${COMMON_TESTS2}
              --compare-image ${EPSILON_9}  ${BASELINE}/ioTvJP22TIF_Extract_SPOT_PHR_${current_type}_2.tif
                                            ${TEMP}/ioTvJP22TIF_Extract_SPOT_PHR_${current_type}_2_OUT.tif
              otbMultiChannelExtractROI
@@ -2364,7 +2304,7 @@ FOREACH( current_file ${GenericTestPHR_SPOT_DATA_INPUTS} )
             )
             
     # Decode the whole image with the lowest resolution (res=5)
-    ADD_TEST(ioTvReaderWriterJP22TIF_SPOT_PHR_${current_type}_res5 ${COMMON_TESTS2}
+    ADD_TEST(ioTvReaderWriterJP22TIF_${current_type}_res5 ${COMMON_TESTS2}
              --compare-image ${EPSILON_9}  ${BASELINE}/ioTvJP22TIF_Extract_SPOT_PHR_${current_type}_res5.tif
                                            ${TEMP}/ioTvJP22TIF_Extract_SPOT_PHR_${current_type}_res5_OUT.tif
              otbMultiChannelExtractROI
@@ -2375,7 +2315,7 @@ FOREACH( current_file ${GenericTestPHR_SPOT_DATA_INPUTS} )
                            
 ENDFOREACH()
 
-ENDIF(OTB_DATA_USE_SPOTPHRINPUT)
+ENDIF(OTB_DATA_USE_LARGEINPUT OR OTB_DATA_USE_SPOTPHRINPUT OR OTB_DATA_USE_ICCPHRINPUT)
 
 ENDIF(OTB_USE_JPEG2000)
 
@@ -2839,32 +2779,30 @@ ADD_TEST(ioTvImageMetadataInterfaceBaseTest_SPOT ${IO_TESTS18}
         ${TEMP}/ioTvImageMetadataInterfaceBase_SPOT.txt
 )
 
-IF(OTB_DATA_USE_SPOTPHRINPUT)
-  SET( GenericTestPHR_TESTNB 0)
+# PHR Data
+SET( GenericTestPHR_TESTNB 0)
 
-  FOREACH( current_file ${GenericTestPHR_SPOT_DATA_INPUTS} )
-    LIST(GET GenericTestPHR_SPOT_DATA_TYPES   ${GenericTestPHR_TESTNB} current_type   )
-    MATH(EXPR GenericTestPHR_TESTNB "${GenericTestPHR_TESTNB} + 1")
-    
-    ADD_TEST(ioTvImageMetadataInterfaceBaseTest_SPOT_PHR_${current_type} ${IO_TESTS18}
-             --compare-ascii ${NOTOL} ${BASELINE_FILES}/ioTvImageMetadataInterfaceBase_SPOT_PHR_${current_type}.txt
-                                      ${TEMP}/ioTvImageMetadataInterfaceBase_SPOT_PHR_${current_type}_OUT.txt
-             otbImageMetadataInterfaceBaseTest
-                ${current_file}
-                ${TEMP}/oTvImageMetadataInterfaceBase_SPOT_PHR_${current_type}_OUT.txt
-             )
-
-    ADD_TEST(ioTvOpticalImageMetadataInterfaceTest_SPOT_PHR_${current_type} ${IO_TESTS18}
-             --compare-ascii ${NOTOL} ${BASELINE_FILES}/ioTvOpticalImageMetadataInterface_SPOT_PHR_${current_type}.txt
-                                      ${TEMP}/ioTvOpticalImageMetadataInterface_SPOT_PHR_${current_type}.txt
-             otbOpticalImageMetadataInterfaceTest
-                ${current_file}
-                ${TEMP}/ioTvOpticalImageMetadataInterface_SPOT_PHR_${current_type}_OUT.txt
-             )
-
-  ENDFOREACH()
+FOREACH( current_file ${GenericTestPHR_DATA_INPUTS} )
+  LIST(GET GenericTestPHR_DATA_TYPES   ${GenericTestPHR_TESTNB} current_type   )
+  MATH(EXPR GenericTestPHR_TESTNB "${GenericTestPHR_TESTNB} + 1")
+   
+  ADD_TEST(ioTvImageMetadataInterfaceBaseTest_${current_type} ${IO_TESTS18}
+           --compare-ascii ${NOTOL} ${BASELINE_FILES}/ioTvImageMetadataInterfaceBase_${current_type}.txt
+                                    ${TEMP}/ioTvImageMetadataInterfaceBase_${current_type}_OUT.txt
+           otbImageMetadataInterfaceBaseTest
+              ${current_file}
+              ${TEMP}/oTvImageMetadataInterfaceBase_${current_type}_OUT.txt
+          )
+
+  ADD_TEST(ioTvOpticalImageMetadataInterfaceTest_${current_type} ${IO_TESTS18}
+           --compare-ascii ${NOTOL} ${BASELINE_FILES}/ioTvOpticalImageMetadataInterface_${current_type}.txt
+                                    ${TEMP}/ioTvOpticalImageMetadataInterface_${current_type}_OUT.txt
+           otbOpticalImageMetadataInterfaceTest
+              ${current_file}
+              ${TEMP}/ioTvOpticalImageMetadataInterface_${current_type}_OUT.txt
+          )
 
-ENDIF(OTB_DATA_USE_SPOTPHRINPUT)
+ENDFOREACH()
 
 ADD_TEST(ioTvImageMetadataInterfaceBaseTest_PLEIADES ${IO_TESTS18}
          --compare-ascii ${NOTOL} ${BASELINE_FILES}/ioTvImageMetadataInterfaceBase_PLEIADES.txt
-- 
GitLab