]> Creatis software - gdcm.git/blob - Testing/CMakeLists.txt
* Test/CMakeLists.txt: update to follow gdcmData renamings.
[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   
109   # Mathieu: temporarily remove as it kills my gnome session (but not kde)
110   # JPR: also breaks TestReadWriteReadCompare : Pixel differ (as expanded
111   #      in memory)  
112   "KODAK-12-MONO1-Odd_Terminated_Sequence.dcm"
113   
114   #segfaults TestReadWriteReadCompare (same pb as below) --> Fixed
115   #segfaults ShowDicom
116   "gdcm-MR-SIEMENS-16-1.acr"
117
118   #Break ShowDicom 
119   "TestReadWriteReadCompare.dcm"
120
121   # see comments in gdcmData ref file TestAllEntryVerifyReference.txt
122   # JPR 2004/20/09: doesn't break TestReadWriteReadCompare anymore
123   #"SIEMENS_GBS_III-16-ACR_NEMA_1.acr"
124   
125   # Frog 2004/07/29: segfaults TestReadWriteReadCompare (pixels not
126   #                  parsed properly):
127   # JPR 2004/20/09: doesn't break TestReadWriteReadCompare anymore
128   #    "GE_DLX-8-MONO2-Multiframe-Jpeg_Lossless.dcm"
129
130   # JPR 2004/20/09: doesn't break TestReadWriteReadCompare anymore
131   #"PICKER-16-MONO2-Nested_icon.dcm"
132
133   # JPR 2004/20/09: doesn't break TestReadWriteReadCompare anymore
134   #"SIEMENS_Sonata-16-MONO2-Value_Multiplicity.dcm"
135   
136   # JPR 2004/20/09: doesn't break TestReadWriteReadCompare anymore
137   # Fails on TestAllReadCompareDicom at the RE-reading stage with message:
138   #    Big trouble : Pixel Element (7fe0,10) NOT found
139   # The temporary file GDCMDATAHOME/BaselineDicom/SIEMENS_Sonata-12-MONO2-SQ.dcm
140   # stops after the first binEntry (binary entry) as can be seen with
141   #   " gdcmbin/bin/PrintHeader 
142   #         GDCMDATAHOME/BaselineDicom/SIEMENS_Sonata-12-MONO2-SQ.dcm "
143   # and effectively the pixels are missing (as well as all the entries
144   # after tag 0029|1010)
145   # Note: this file was previously known as E00001S03I0015.dcm
146   #"SIEMENS_Sonata-12-MONO2-SQ.dcm"
147   
148   # JPR 2004/20/09: doesn't break TestReadWriteReadCompare anymore
149   # As of 14/09 this image creates a crash:
150   # Program received signal SIGSEGV, Segmentation fault.
151   #    0x4032bc4b in gdcmHeader::GetLUTRGBA (this=0x8149228)
152   #    at /home/malaterre/Creatis/gdcm/src/gdcmHeader.cxx:1170
153   #    1170          *a = lutR[i*mult+1];
154   #"OT-PAL-8-face.dcm"
155   
156   # Files which won't break the test suite but whose png dump looks ugly.
157   # JPR: png looks ugly. so What ? ctest compliant --> un-black listed
158   #   "THERALYS-12-MONO2-Uncompressed-E_Film_Template.dcm"
159   #   "PHILIPS_Gyroscan-8-MONO2-Odd_Sequence.dcm"
160   #   "PHILIPS_Gyroscan-12-MONO2-Jpeg_Lossless.dcm"
161   
162   )
163
164
165 # This is a GLOB expression, change it into a list separated with a comma and \n
166 SET(GDCM_DATA_IMAGES)
167 FOREACH(filename ${GDCM_DATA_IMAGES_GLOB})
168   GET_FILENAME_COMPONENT(filename_temp ${filename} NAME)
169   STRING(REGEX MATCH ${filename_temp} bad_dicom ${BLACK_LIST})
170   IF(NOT bad_dicom)
171     SET(GDCM_DATA_IMAGES "${GDCM_DATA_IMAGES}\n\"${filename_temp}\",")
172   ENDIF(NOT bad_dicom)
173 ENDFOREACH(filename)
174
175 # Populate GDCM_DATA_IMAGES:
176 FILE(WRITE "${GDCM_BINARY_DIR}/gdcmDataImages.h"
177   "const char * const gdcmDataImages[] = { ${GDCM_DATA_IMAGES}\n0 };\n" 
178   )