]> Creatis software - gdcm.git/blobdiff - Testing/CMakeLists.txt
ENH: do not run dash on that
[gdcm.git] / Testing / CMakeLists.txt
index 3acf5db3f1320d89e22b8e0ea897704994ed2619..fe7961c84f0c31c6e5231bef7aa04fd7aa2c74ce 100644 (file)
@@ -8,6 +8,7 @@ SET(GDCM_TESTS ${CXX_TEST_PATH}/gdcmTests)
 # add test that does not require data:
 # They usally return if no argument is given
 SET(TEST_SOURCES
+  TestEmpty.cxx
   TestUtil.cxx
   TestBug.cxx
   TestHash.cxx
@@ -22,13 +23,13 @@ SET(TEST_SOURCES
   TestDicomDirElement.cxx
   TestDicomString.cxx
   TestEnumVR.cxx
-
+  TestBuildUpDicomDir.cxx          # writes a file named "NewDICOMDIR"
 )
-IF(UNIX)
+IF(UNIX OR WIN32)
   SET(TEST_SOURCES ${TEST_SOURCES}
-    #TestInline.cxx
+    TestInline.cxx
   )
-ENDIF(UNIX)
+ENDIF(UNIX OR WIN32)
 
 # add tests that require data
 IF (GDCM_DATA_ROOT)
@@ -36,17 +37,21 @@ IF (GDCM_DATA_ROOT)
     TestFileAccessors.cxx
     TestMakeIcon.cxx
     TestLoadAllDocumentsNoPrivNoSeq.cxx # includes generated gdcmDataImages.h
-    TestPrintAllDocument.cxx         # includes generated gdcmDataImages.h
-    #TestAllEntryVerify.cxx           # includes generated gdcmDataImages.h
-    TestAllReadCompareDicom.cxx      # includes generated gdcmDataImages.h
-    TestReadWriteReadCompare.cxx     # includes generated gdcmDataImages.h 
-    #TestCopyDicom.cxx                # includes generated gdcmDataImages.h 
-    #    TestCopyRescaleDicom.cxx         # includes generated gdcmDataImages.h 
+    #TestLoadAllDocumentsNoShadow.cxx   # includes generated gdcmDataImages.h
+    TestPrintAllDocument.cxx            # includes generated gdcmDataImages.h
+    #TestAllEntryVerify.cxx             # includes generated gdcmDataImages.h
+    #TestAllReadCompareDicom.cxx        # includes generated gdcmDataImages.h
+    TestReadWriteReadCompare.cxx        # includes generated gdcmDataImages.h 
+    TestReadWriteJPEGReadCompare.cxx    # includes generated gdcmDataImages.h 
+    #TestReadWriteJPEG2000ReadCompare.cxx # includes generated gdcmDataImages.h     
+        
+    #TestCopyDicom.cxx                  # includes generated gdcmDataImages.h 
+    #    TestCopyRescaleDicom.cxx       # includes generated gdcmDataImages.h 
     #TestChangeHeader.cxx
     #    TestAnonymize.cxx
     TestDirList.cxx
     TestDicomDir.cxx                 # require DICOMDIR
-    TestBuildUpDicomDir.cxx          # writes a file named "NewDICOMDIR"
+
     TestMakeDicomDir.cxx             # writes a file named "NewDICOMDIR"
     TestSerieHelper.cxx              # uses gdcmData as a default root directory    
     TestAllVM.cxx
@@ -54,9 +59,11 @@ IF (GDCM_DATA_ROOT)
   )
   # add test that require VTK:
   IF(GDCM_VTK)
+  
     IF("${VTK_MAJOR_VERSION}" LESS 4)
       MESSAGE(FATAL_ERROR "This VTK version is not supported, you are on your own !")
     ELSE("${VTK_MAJOR_VERSION}" LESS 4)
+    
       IF("${VTK_MAJOR_VERSION}" EQUAL 4 AND "${VTK_MINOR_VERSION}" EQUAL 2)
         MESSAGE(FATAL_ERROR "This VTK version is not supported, you are on your own !"
                              "Although gdcm should compile fine. You just need to turn BUILD_TESTING:=OFF")
@@ -65,6 +72,7 @@ IF (GDCM_DATA_ROOT)
         MESSAGE(FATAL_ERROR "This VTK version is not supported, you are on your own !"
                              "Although gdcm should compile fine. You just need to turn BUILD_TESTING:=OFF")
       ENDIF("${VTK_MAJOR_VERSION}" EQUAL 4 AND "${VTK_MINOR_VERSION}" EQUAL 4 AND "${VTK_BUILD_VERSION}" LESS 3)
+      
       # Include the VTK library since we know this is going to work
       INCLUDE(${VTK_USE_FILE})
 
@@ -92,7 +100,11 @@ INCLUDE_DIRECTORIES(
 CREATE_TEST_SOURCELIST(Tests gdcmTests.cxx ${TEST_SOURCES})
 ADD_EXECUTABLE(gdcmTests ${Tests})
 IF(GDCM_VTK)
-  TARGET_LINK_LIBRARIES(gdcmTests vtkgdcm vtkRendering)
+  IF(GDCM_DATA_ROOT)
+    TARGET_LINK_LIBRARIES(gdcmTests vtkgdcm vtkRendering)
+  ELSE(GDCM_DATA_ROOT)
+    TARGET_LINK_LIBRARIES(gdcmTests gdcm)
+  ENDIF(GDCM_DATA_ROOT)     
 ELSE(GDCM_VTK)
   TARGET_LINK_LIBRARIES(gdcmTests gdcm)
 ENDIF(GDCM_VTK)
@@ -118,6 +130,11 @@ FILE(GLOB GDCM_DATA_IMAGES_GLOB
   "${GDCM_DATA_ROOT}/*.ima"
   )
 
+FILE(GLOB GDCM_DATA_EXTRA_IMAGES_GLOB
+  "${GDCM_DATA_EXTRA_ROOT}/gdcmSampleData/images_of_interest/*.dcm"
+  )
+#MESSAGE(${GDCM_DATA_EXTRA_IMAGES_GLOB})
+
 # Black list of images known to break lots of readers (efilm, xmedcon ...):
 SET(BLACK_LIST
   # Multiframe Papyrus format image
@@ -143,6 +160,10 @@ SET(BLACK_LIST
   # Jasper cannot handle this image, only kakadu so far, unless you patch jasper
   # but then it breaks other images...
   "CT_Phillips_JPEG2K_Decompr_Problem.dcm"
+  
+  #RTDOSE, 32 bits image : cannot be compressed
+  #"RTDOSE.dcm"
+  
   #
   # ------------
   #  
@@ -158,9 +179,23 @@ SET(BLACK_LIST
   "MR_Philips_Intera_PrivateSequenceImplicitVR.dcm"
   
   # Seems this one hangs on 64 bits processors ?!?
-  # I blacklist it untill the pb is solved.
+  # I blacklist it until the pb is solved.
   # (to get some more green on the Dasboards)
   "MR_Philips-Intera_BreaksNOSHADOW.dcm"
+
+  # No way we'll ever be able to read that...
+  "ELSCINT1_LOSSLESS_RICE.dcm"
+
+  # Are we even be able to support our own bugs ?
+  "SIEMENS_MAGNETOM-12-MONO2-GDCM12-VRUN.dcm"
+  "SIEMENS_GBS_III-16-ACR_NEMA_1-ULis2Bytes.dcm"
+  "SIEMENS_ImageLocationUN.dcm"
+  "TheralysGDCM120Bug.dcm"
+  "IM-0001-0066.dcm"
+  "DMCPACS_ExplicitImplicit_BogusIOP.dcm"
+  "MR_ELSCINT1_00e1_1042_SQ_feff_00e0_Item.dcm"
+  "MR_Spectroscopy_SIEMENS_OF.dcm"
+  "ELSCINT1_PMSCT_RLE1.dcm"
   )
 
 # Create a specific list of dicom files that we know are part of a sequence
@@ -177,8 +212,8 @@ SET(GDCM_DATA_SEQ_IMAGES)
 FOREACH(filename ${GDCM_DATA_IMAGES_GLOB})
   GET_FILENAME_COMPONENT(filename_temp ${filename} NAME)
   IF(DCIODVFY_FOUND)
-    ADD_TEST("DCIODVFY-INPUT-${filename_temp}" "${DCIODVFY_EXECUTABLE}" "${filename}")
-    ADD_TEST("DCIODVFY-OUTPUT-${filename_temp}" "${DCIODVFY_EXECUTABLE}" "${GDCM_DATA_ROOT}/BaselineDicom/${filename_temp}")
+    #ADD_TEST("DCIODVFY-INPUT-${filename_temp}" "${DCIODVFY_EXECUTABLE}" "${filename}")
+    #ADD_TEST("DCIODVFY-OUTPUT-${filename_temp}" "${DCIODVFY_EXECUTABLE}" "${GDCM_DATA_ROOT}/BaselineDicom/${filename_temp}")
   ENDIF(DCIODVFY_FOUND)
   STRING(REGEX MATCH ${filename_temp} bad_dicom ${BLACK_LIST})
   IF(NOT bad_dicom)
@@ -191,6 +226,26 @@ FOREACH(filename ${GDCM_DATA_IMAGES_GLOB})
   ENDIF(NOT bad_dicom)
 ENDFOREACH(filename)
 
+# Paranoid / dcmdump
+IF(GDCM_DCMTK_CHECK)
+FOREACH(filename ${GDCM_DATA_IMAGES_GLOB} ${GDCM_DATA_EXTRA_IMAGES_GLOB})
+  GET_FILENAME_COMPONENT(filename_temp ${filename} NAME)
+  STRING(REGEX MATCH ${filename_temp} bad_dicom ${BLACK_LIST})
+  IF(NOT bad_dicom)
+    IF(BUILD_EXAMPLES)
+      FOREACH(mode a d x) #r
+        FOREACH(opt "" monochrome1 noshadowseq noshadow noseq rgb)
+          ADD_TEST(ReWrite-${mode}-${opt}-${filename_temp} ${EXECUTABLE_OUTPUT_PATH}/ReWrite filein=${filename} fileout=${GDCM_BINARY_DIR}/${mode}-${opt}-${filename_temp} mode=${mode} ${opt})
+          ADD_TEST(dcmdump-${mode}-${opt}-${filename_temp} /usr/bin/dcmdump -E -dc +ae ${GDCM_BINARY_DIR}/${mode}-${opt}-${filename_temp})
+          #ADD_TEST(ReWrite-${mode}-${opt}-${filename_temp}-bis ${EXECUTABLE_OUTPUT_PATH}/ReWrite filein=${GDCM_BINARY_DIR}/${mode}-${opt}-${filename_temp} fileout=${GDCM_BINARY_DIR}/reference.dcm mode=${mode} ${opt})
+          #ADD_TEST(diff-${mode}-${opt}-${filename_temp} /usr/bin/diff ${GDCM_BINARY_DIR}/${mode}-${opt}-${filename_temp} ${GDCM_BINARY_DIR}/reference.dcm)
+        ENDFOREACH(opt)
+      ENDFOREACH(mode)
+    ENDIF(BUILD_EXAMPLES)
+  ENDIF(NOT bad_dicom)
+ENDFOREACH(filename)
+ENDIF(GDCM_DCMTK_CHECK)
+
 # Populate GDCM_DATA_IMAGES:
 FILE(WRITE "${GDCM_BINARY_DIR}/gdcmDataImages.h"
   "const char * const gdcmDataImages[] = { ${GDCM_DATA_IMAGES}\n0 };\n" 
@@ -213,4 +268,21 @@ IF(UNIX AND NOT BUILD_SHARED_LIBS)
 ENDIF(UNIX AND NOT BUILD_SHARED_LIBS)
 
 
+#-----------------------------------------------------------------------------
+# Do the build against an installed gdcm
+SET(GDCM_TEST_INSTALL_LEFT "${CMAKE_INSTALL_PREFIX}")
+SET(GDCM_TEST_INSTALL_RIGHT "${GDCM_BINARY_DIR}/InstallTest/Root")
+STRING(COMPARE EQUAL "${GDCM_TEST_INSTALL_LEFT}" "${GDCM_TEST_INSTALL_RIGHT}"
+  GDCM_TEST_INSTALL)
+IF(GDCM_TEST_INSTALL)
+  ADD_TEST(Install
+    ${CMAKE_CTEST_COMMAND}
+    #  ${GDCM_INSTALL_TEST_CONFIG_TYPE}
+    --build-and-test ${CMAKE_SOURCE_DIR} ${CMAKE_BINARY_DIR}
+    --build-generator ${CMAKE_GENERATOR}
+    --build-project GDCM
+    --build-makeprogram ${CMAKE_MAKE_PROGRAM}
+    --build-noclean
+    --build-target install)
+ENDIF(GDCM_TEST_INSTALL)