]> Creatis software - gdcm.git/blob - Testing/CMakeLists.txt
ENH: Adding a test I know that segfault
[gdcm.git] / Testing / CMakeLists.txt
1 # CMakeLists for Testing purpose
2 # Cxx file that need a file to run should be place aproprietly
3
4 SET(CXX_TEST_PATH ${EXECUTABLE_OUTPUT_PATH})
5
6 SET(GDCM_TESTS ${CXX_TEST_PATH}/gdcmTests)
7
8 # add test that does not require data:
9 # They usally return if no argument is given
10 SET(TEST_SOURCES
11   TestBug.cxx
12   TestHash.cxx
13 )
14
15 # add tests that require data
16 IF (GDCM_DATA_ROOT)
17   SET(TEST_SOURCES ${TEST_SOURCES}     
18     TestReadWriteReadCompare.cxx     # includes generated gdcmDataImages.h 
19     PrintAllDocument.cxx             # includes generated gdcmDataImages.h
20     TestAllReadCompareDicom.cxx      # includes generated gdcmDataImages.h
21     TestAllEntryVerify.cxx           # includes generated gdcmDataImages.h
22     PrintDicomDir.cxx
23     TestChangeHeader.cxx
24     TestDicomDir.cxx                 # require DICOMDIR
25     BuildUpDicomDir.cxx              # writes a file named "NewDICOMDIR"
26     makeDicomDir.cxx                 # writes a file named "NewDICOMDIR"
27     TestCopyDicom.cxx
28   )
29   # add test that require VTK:
30   IF(GDCM_VTK)
31     INCLUDE_DIRECTORIES(
32       ${GDCM_SOURCE_DIR}/vtk/
33       )
34     SET(TEST_SOURCES ${TEST_SOURCES}
35       ShowDicom.cxx    
36       )
37   ENDIF(GDCM_VTK)
38 ENDIF (GDCM_DATA_ROOT)
39
40
41
42 # include stuff
43 INCLUDE_DIRECTORIES(
44   ${GDCM_SOURCE_DIR}/src/
45   ${GDCM_BINARY_DIR}/
46 )
47
48 CREATE_TEST_SOURCELIST(Tests gdcmTests.cxx ${TEST_SOURCES})
49 ADD_EXECUTABLE(gdcmTests ${Tests})
50 IF(GDCM_VTK)
51   TARGET_LINK_LIBRARIES(gdcmTests vtkgdcm vtkRendering)
52 ELSE(GDCM_VTK)
53   TARGET_LINK_LIBRARIES(gdcmTests gdcm)
54 ENDIF(GDCM_VTK)
55
56 SET (TestsToRun ${Tests})
57 REMOVE (TestsToRun gdcmTests.cxx)
58
59 # Loop over files and create executables
60 FOREACH(file ${TEST_SOURCES})
61   GET_FILENAME_COMPONENT(name ${file} NAME_WE)
62 #  IF (GDCM_DATA_ROOT)
63 #    ADD_TEST(${name} ${GDCM_TESTS} ${name}
64 #        -D ${GDCM_DATA_ROOT}
65 #        -T ${GDCM_BINARY_DIR}/Testing/Temporary
66 #        -V Baseline/gdcm/${name}.png)
67 #  ELSE (GDCM_DATA_ROOT)
68     ADD_TEST(${name} ${GDCM_TESTS} ${name})
69 #  ENDIF (GDCM_DATA_ROOT)
70 ENDFOREACH(file ${TEST_SOURCES})
71
72 #-----------------------------------------------------------------------------
73
74 # We need to test the reading of all dicom images in the gdcmData directory
75 # First parse this directory and extract all images
76
77 IF(${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 1.9)
78   FILE(GLOB GDCM_DATA_IMAGES_GLOB
79     "${GDCM_DATA_ROOT}/*.acr"
80     "${GDCM_DATA_ROOT}/*.dcm"
81     "${GDCM_DATA_ROOT}/*.nema"
82     "${GDCM_DATA_ROOT}/*.ima"
83     )
84 ELSE(${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 1.9)   
85   # Since there is a bug in cmake 1.8.3, I'll have to do two separate globs
86   FILE(GLOB GDCM_DATA_IMAGES_GLOB_ACR
87     "${GDCM_DATA_ROOT}/*.acr"
88     )
89   FILE(GLOB GDCM_DATA_IMAGES_GLOB_DCM
90     "${GDCM_DATA_ROOT}/*.dcm"
91     )
92   FILE(GLOB GDCM_DATA_IMAGES_GLOB_NEMA
93     "${GDCM_DATA_ROOT}/*.nema"
94     )
95   FILE(GLOB GDCM_DATA_IMAGES_GLOB_IMA
96     "${GDCM_DATA_ROOT}/*.ima"
97     )
98   SET(GDCM_DATA_IMAGES_GLOB 
99     ${GDCM_DATA_IMAGES_GLOB_DCM} ${GDCM_DATA_IMAGES_GLOB_ACR}
100     ${GDCM_DATA_IMAGES_GLOB_NEMA} ${GDCM_DATA_IMAGES_GLOB_IMA})
101   #SET(GDCM_DATA_IMAGES_GLOB  ${GDCM_DATA_IMAGES_GLOB_ACR})
102 ENDIF(${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 1.9)   
103
104 # Black list of images known to break lots of readers (efilm, xmedcon ...):
105 SET(BLACK_LIST
106   # serial killer (also segfaults vtkgdcmViewer, but NOT PrintFile)
107   "gdcm-JPEG-LossLessThoravision.dcm"
108   #temporarily remove as it kills my gnome session (but not kde)
109   "KODAK-12-MONO1-Odd_Terminated_Sequence.dcm"
110   #png looks ugly
111   "emptyImage.dcm"
112   #png looks ugly
113   "PHILIPS_Gyroscan-8-MONO2-Odd_Sequence.dcm"
114   #png looks ugly
115   "mriThruVPRO.dcm"
116   #segfaults TestReadWriteReadCompare (same pb as below) 
117   "gdcm-MR-SIEMENS-16-1.acr"
118   # see comments in gdcmData ref file TestAllEntryVerifyReference.txt
119   "SIEMENS_GBS_III-16-ACR_NEMA_1.acr"
120   #segfaults TestReadWriteReadCompare (pixels not parsed properly):
121   "I9000001.dcm"
122   "PICKER-16-MONO2-Nested_icon.dcm"
123   "SIEMENS_Sonata-16-MONO2-Value_Multiplicity.dcm"
124   # Fails on TestAllReadCompareDicom at the RE-reading stage with message:
125   #    Big trouble : Pixel Element (7fe0,10) NOT found
126   # The temporary file GDCMDATAHOME/BaselineDicom/SIEMENS_Sonata-12-MONO2-SQ.dcm
127   # stops after the first binEntry (binary entry) as can be seen with
128   #   " gdcmbin/bin/PrintHeader 
129   #         GDCMDATAHOME/BaselineDicom/SIEMENS_Sonata-12-MONO2-SQ.dcm "
130   # and effectively the pixels are missing (as well as all the entries
131   # after tag 0029|1010)
132   # Note: this file was previously known as E00001S03I0015.dcm
133   "SIEMENS_Sonata-12-MONO2-SQ.dcm"
134   )
135
136 #   gdcm-ACR-LibIDO seems to be cut
137 #   test.acr is very bright
138
139 # This is a GLOB expression, change it into a list separated with a comma and \n
140 SET(GDCM_DATA_IMAGES)
141 FOREACH(filename ${GDCM_DATA_IMAGES_GLOB})
142   GET_FILENAME_COMPONENT(filename_temp ${filename} NAME)
143   STRING(REGEX MATCH ${filename_temp} bad_dicom ${BLACK_LIST})
144   IF(NOT bad_dicom)
145     SET(GDCM_DATA_IMAGES "${GDCM_DATA_IMAGES}\n\"${filename_temp}\",")
146   ENDIF(NOT bad_dicom)
147 ENDFOREACH(filename)
148
149 # Populate GDCM_DATA_IMAGES:
150 FILE(WRITE "${GDCM_BINARY_DIR}/gdcmDataImages.h"
151   "const char * const gdcmDataImages[] = { ${GDCM_DATA_IMAGES}\n0 };\n" 
152   )