# 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
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)
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
)
# 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")
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})
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)
"${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
# 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"
+
#
# ------------
- #
- # I probabely messed up something with the .png, .tst of
- # the images I recently added to the Test Suite
- # I Black list them, until I find where is the pb.
- #"US-RGB-8-esopecho.dcm"
- #"MR_Philips_Intera_No_PrivateSequenceImplicitVR.dcm"
- #"MR_SIEMENS_forceLoad29-1010_29-1020.dcm"
-
+ #
#Still cause troubles (see the .README.txt file for more details)
"MR_Philips_Intera_in_SQ_2001_e05f_item_wrong_lgt_use_NOSHADOWSEQ.dcm"
"MR_Philips_Intera_PrivateSequenceExplicitVR.dcm"
#The 2 previous images are identical !
+ #--> Replaced by more significant name
+ "MR_Philips_Intera_PrivateSequenceExplicitVR_in_SQ_2001_e05f_item_wrong_lgt_use_NOSHADOWSEQ.dcm"
+
#hexedit shows something *very* strange around offset 0x76e !
#the images looks *over*corrupted (on disc, not from the manufacturer!)
"MR_Philips_Intera_PrivateSequenceImplicitVR.dcm"
+
+ # Seems this one hangs on 64 bits processors ?!?
+ # 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"
)
# Create a specific list of dicom files that we know are part of a sequence
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)
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"
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)