]> Creatis software - gdcm.git/blob - Testing/CMakeLists.txt
f2d3b68824f7529ba44fb36c86a5f66afa31953f
[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   PrintBug.cxx
12   dcm2acr.cxx
13   hashtest.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     PrintDicomDir.cxx
22     pourFindTaggs.cxx
23     testChangeEntete.cxx
24     testDicomDir.cxx      #require DICOMDIR
25     BuildUpDicomDir.cxx
26     TestReadWrite.cxx
27     makeDicomDir.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} ${CXX_TEST_PATH}/gdcmTests ${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 # Since there is a bug in cmake 1.8.3, I'll have to do two separate globs
78 FILE(GLOB GDCM_DATA_IMAGES_GLOB_ACR
79   "${GDCM_DATA_ROOT}/*.acr"
80   )
81 FILE(GLOB GDCM_DATA_IMAGES_GLOB_DCM
82   "${GDCM_DATA_ROOT}/*.dcm"
83   )
84 SET(GDCM_DATA_IMAGES_GLOB ${GDCM_DATA_IMAGES_GLOB_DCM} ${GDCM_DATA_IMAGES_GLOB_ACR})
85   
86 # Black list of images known to break lots of readers (efilm, xmedcon ...):
87 SET(BLACK_LIST
88   "gdcm-JPEG-LossLessThoravision.dcm"
89   )
90
91 # This is a GLOB expression, change it into a list separated with a comma and \n
92 SET(GDCM_DATA_IMAGES)
93 FOREACH(filename ${GDCM_DATA_IMAGES_GLOB})
94   GET_FILENAME_COMPONENT(filename_temp ${filename} NAME)
95   STRING(REGEX MATCH ${filename_temp} bad_dicom ${BLACK_LIST})
96   IF(NOT bad_dicom)
97     SET(GDCM_DATA_IMAGES "${GDCM_DATA_IMAGES}\n\"${filename}\",")
98   ENDIF(NOT bad_dicom)
99 ENDFOREACH(filename)
100
101 # Populate GDCM_DATA_IMAGES:
102 FILE(WRITE "${GDCM_BINARY_DIR}/gdcmDataImages.h"
103   "const char * const gdcmDataImages[] = { ${GDCM_DATA_IMAGES}\n0 };\n" 
104   )