]> Creatis software - gdcm.git/blob - Testing/CMakeLists.txt
Moved from gdcmHeader to gdcmDocument .
[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   TestDcm2Acr.cxx
13   TestHash.cxx
14   TestWrite.cxx
15 )
16
17 # add tests that require data
18 IF (GDCM_DATA_ROOT)
19   SET(TEST_SOURCES ${TEST_SOURCES}     
20     #PrintHeader.cxx       #require test.acr
21     PrintDocument.cxx     #require test.acr
22     PrintDicomDir.cxx
23     TestFindTags.cxx
24     TestChangeHeader.cxx
25     TestDicomDir.cxx      #require DICOMDIR
26     BuildUpDicomDir.cxx
27     TestReadWrite.cxx
28     makeDicomDir.cxx
29   )
30   # add test that require VTK:
31   IF(GDCM_VTK)
32     INCLUDE_DIRECTORIES(
33       ${GDCM_SOURCE_DIR}/vtk/
34       )
35     SET(TEST_SOURCES ${TEST_SOURCES}
36       ShowDicom.cxx    
37       )
38   ENDIF(GDCM_VTK)
39 ENDIF (GDCM_DATA_ROOT)
40
41
42
43 # include stuff
44 INCLUDE_DIRECTORIES(
45   ${GDCM_SOURCE_DIR}/src/
46   ${GDCM_BINARY_DIR}/
47 )
48
49 CREATE_TEST_SOURCELIST(Tests gdcmTests.cxx ${TEST_SOURCES})
50 ADD_EXECUTABLE(gdcmTests ${Tests})
51 IF(GDCM_VTK)
52   TARGET_LINK_LIBRARIES(gdcmTests vtkgdcm vtkRendering)
53 ELSE(GDCM_VTK)
54   TARGET_LINK_LIBRARIES(gdcmTests gdcm)
55 ENDIF(GDCM_VTK)
56
57 SET (TestsToRun ${Tests})
58 REMOVE (TestsToRun gdcmTests.cxx)
59
60 # Loop over files and create executables
61 FOREACH(file ${TEST_SOURCES})
62   GET_FILENAME_COMPONENT(name ${file} NAME_WE)
63 #  IF (GDCM_DATA_ROOT)
64 #    ADD_TEST(${name} ${GDCM_TESTS} ${name}
65 #        -D ${GDCM_DATA_ROOT}
66 #        -T ${GDCM_BINARY_DIR}/Testing/Temporary
67 #        -V Baseline/gdcm/${name}.png)
68 #  ELSE (GDCM_DATA_ROOT)
69     ADD_TEST(${name} ${GDCM_TESTS} ${name})
70 #  ENDIF (GDCM_DATA_ROOT)
71 ENDFOREACH(file ${TEST_SOURCES})
72
73 #-----------------------------------------------------------------------------
74
75 # We need to test the reading of all dicom images in the gdcmData directory
76 # First parse this directory and extract all images
77
78 IF(${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 1.9)
79   FILE(GLOB GDCM_DATA_IMAGES_GLOB
80     "${GDCM_DATA_ROOT}/*.acr"
81     "${GDCM_DATA_ROOT}/*.dcm"
82     )
83 ELSE(${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 1.9)   
84   # Since there is a bug in cmake 1.8.3, I'll have to do two separate globs
85   FILE(GLOB GDCM_DATA_IMAGES_GLOB_ACR
86     "${GDCM_DATA_ROOT}/*.acr"
87     )
88   FILE(GLOB GDCM_DATA_IMAGES_GLOB_DCM
89     "${GDCM_DATA_ROOT}/*.dcm"
90     )
91   SET(GDCM_DATA_IMAGES_GLOB ${GDCM_DATA_IMAGES_GLOB_DCM} ${GDCM_DATA_IMAGES_GLOB_ACR})
92   #SET(GDCM_DATA_IMAGES_GLOB  ${GDCM_DATA_IMAGES_GLOB_ACR})
93 ENDIF(${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 1.9)   
94
95 # Black list of images known to break lots of readers (efilm, xmedcon ...):
96 SET(BLACK_LIST
97   "gdcm-JPEG-LossLessThoravision.dcm"
98   "cr172241.dcm"  #temporarily remove as it kills my gnome session (but not kde)
99   "emptyImage.dcm"  #the png looks ugly...
100   "gdcm-MR-PHILIPS-16-Multi-Seq.fixed.dcm" weird looks exactly the same as gdcm-MR-PHILIPS-16-Multi-Seq.dcm
101   "gdcm-MR-PHILIPS-16.dcm" png looks ugly
102   "irmPhlipsNew1.dcm" png looks ugly
103   "mriThruVPRO.dcm"   png looks ugly
104   "US.3405.1.dcm" looks exactly the same as US.1.2.dcm
105   )
106
107 #   gdcm-ACR-LibIDO seems to be cut
108 #   test.acr is very bright
109
110 # This is a GLOB expression, change it into a list separated with a comma and \n
111 SET(GDCM_DATA_IMAGES)
112 FOREACH(filename ${GDCM_DATA_IMAGES_GLOB})
113   GET_FILENAME_COMPONENT(filename_temp ${filename} NAME)
114   STRING(REGEX MATCH ${filename_temp} bad_dicom ${BLACK_LIST})
115   IF(NOT bad_dicom)
116     SET(GDCM_DATA_IMAGES "${GDCM_DATA_IMAGES}\n\"${filename_temp}\",")
117   ENDIF(NOT bad_dicom)
118 ENDFOREACH(filename)
119
120 # Populate GDCM_DATA_IMAGES:
121 FILE(WRITE "${GDCM_BINARY_DIR}/gdcmDataImages.h"
122   "const char * const gdcmDataImages[] = { ${GDCM_DATA_IMAGES}\n0 };\n" 
123   )