1 # NON-REGRESSION TESTS ON THIS DATASET LOCATED ${OPJ_DATA_ROOT}/input/nonregression
3 FILE(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/Temporary)
5 SET(TEMP ${CMAKE_CURRENT_BINARY_DIR}/Temporary)
6 SET(BASELINE_NR ${OPJ_DATA_ROOT}/baseline/nonregression)
7 SET(INPUT_NR ${OPJ_DATA_ROOT}/input/nonregression)
9 FILE(GLOB_RECURSE OPJ_DATA_NR_LIST
15 # Define a list of file which should be gracefully rejected:
17 illegalcolortransform.j2k
20 FOREACH(filepath ${OPJ_DATA_NR_LIST})
21 GET_FILENAME_COMPONENT(filename ${filepath} NAME)
22 GET_FILENAME_COMPONENT(filenameSub ${filename} NAME_WE)
23 STRING(REGEX MATCH ${filename} bad_jpeg2000 ${BLACKLIST_JPEG200})
25 ADD_TEST(NR-${filename}-dump
26 ${EXECUTABLE_OUTPUT_PATH}/j2k_dump
28 -o ${TEMP}/${filename}.txt
30 ADD_TEST(NR-${filename}-decode
31 ${EXECUTABLE_OUTPUT_PATH}/j2k_to_image
33 -o ${TEMP}/${filename}.pgx
37 SET_TESTS_PROPERTIES(NR-${filename}-dump
38 PROPERTIES WILL_FAIL TRUE)
39 SET_TESTS_PROPERTIES(NR-${filename}-decode
40 PROPERTIES WILL_FAIL TRUE)
42 # Only run this test when previous succeeds
43 ADD_TEST(NR-${filename}-compare_dump2base
44 ${EXECUTABLE_OUTPUT_PATH}/compare_dump_files
45 -b ${BASELINE_NR}/opj_${filenameSub}.txt
46 -t ${TEMP}/${filename}.txt
49 SET_TESTS_PROPERTIES(NR-${filename}-compare_dump2base
55 # ADD_TEST(NR-${filename}-compare2base
56 # ${EXECUTABLE_OUTPUT_PATH}/comparePGXimages
57 # -b ${BASELINE_NR}/opj_${filenameRef}
58 # -t ${TEMP}/${filename}.pgx
64 # SET_TESTS_PROPERTIES(NR-${filename}-compare2base
66 # NR-${filename}-decode)
72 # Read a input file to know which files processed and with which options.
75 CONFIGURE_FILE("opj_ref_decode_cmd.sh.in"
76 "${CMAKE_CURRENT_BINARY_DIR}/opj_ref_decode_cmd.sh"
80 string(COMPARE EQUAL ${REF_DECODER_BIN_PATH} "NOTFOUND" REF_DECODER_NOTFOUND)
81 IF (REF_DECODER_NOTFOUND)
82 MESSAGE(STATUS "REF_DECODER_BIN_PATH not found, if you want all the encoding tests suite please provide a regular path")
83 ENDIF (REF_DECODER_NOTFOUND)
86 # Read the file into a list
87 FILE(STRINGS encoder_test_suite.txt OPJ_TEST_ENC_CMD_LINE_LIST)
91 FOREACH(OPJ_TEST_ENC_CMD_LINE ${OPJ_TEST_ENC_CMD_LINE_LIST})
92 math(EXPR it_test "${it_test}+1" )
94 #message(STATUS ${OPJ_TEST_ENC_CMD_LINE})
96 string(REPLACE " " ";" CMD_ARG_LIST ${OPJ_TEST_ENC_CMD_LINE})
98 #message(STATUS "list = ${CMD_ARG_LIST}")
100 list(GET CMD_ARG_LIST 0 EXE_NAME)
101 string(COMPARE EQUAL ${EXE_NAME} "image_to_j2k" EXE_NAME_FOUND)
103 list(REMOVE_AT CMD_ARG_LIST 0)
105 string(COMPARE EQUAL ${EXE_NAME} "#" IGNORE_LINE_FOUND)
106 IF(IGNORE_LINE_FOUND)
107 message( STATUS "Current line is ignored: ${OPJ_TEST_ENC_CMD_LINE}")
108 ELSE(IGNORE_LINE_FOUND)
109 message( FATAL_ERROR "${EXE_ARG} is not the right executable name to encode file (try to use image_to_j2k)")
110 ENDIF(IGNORE_LINE_FOUND)
111 ENDIF(EXE_NAME_FOUND)
113 IF(NOT IGNORE_LINE_FOUND)
114 SET(CMD_ARG_LIST_2 "")
117 SET(OUTPUT_ARG_POS 0)
119 FOREACH(CMD_ARG_ELT ${CMD_ARG_LIST})
120 math(EXPR ARG_POS "${ARG_POS}+1" )
122 # Will work only with cmake version > 2.8.4
123 #message(STATUS "${CMD_ARG_ELT}")
124 #string(FIND "${CMD_ARG_ELT}" "-i input/" INPUT_ARG_FOUND)
125 #message(STATUS "pos = ${INPUT_ARG_FOUND}")
127 # string(SUBSTRING ${CMD_ARG_ELT} INPUT_ARG_FOUND -1 filename_input)
128 # message(STATUS "filename = ${filename_input}")
129 #ELSE(INPUT_ARG_FOUND)
130 # message( FATAL_ERROR "Not found a input image into the list of arguments")
131 #ENDIF(INPUT_ARG_FOUND)
134 string(COMPARE EQUAL ${CMD_ARG_ELT} "-i" INPUT_ARG_FOUND)
136 SET(INPUT_ARG_POS ${ARG_POS})
137 SET(INPUT_ARG_FOUND 0)
138 ENDIF(INPUT_ARG_FOUND)
140 string(COMPARE EQUAL ${CMD_ARG_ELT} "-o" OUTPUT_ARG_FOUND)
142 SET(OUTPUT_ARG_POS ${ARG_POS})
143 SET(OUTPUT_ARG_FOUND 0)
144 ENDIF(OUTPUT_ARG_FOUND)
146 string(REPLACE "input/" "${INPUT_NR}/" CMD_ARG_ELT ${CMD_ARG_ELT})
147 string(REPLACE "temp/" "${TEMP}/" CMD_ARG_ELT ${CMD_ARG_ELT})
149 list (APPEND CMD_ARG_LIST_2 ${CMD_ARG_ELT})
151 ENDFOREACH(CMD_ARG_ELT)
153 list(GET CMD_ARG_LIST_2 ${INPUT_ARG_POS} INPUT_FILENAME)
154 get_filename_component(INPUT_FILENAME_NAME ${INPUT_FILENAME} NAME)
155 list(GET CMD_ARG_LIST_2 ${OUTPUT_ARG_POS} OUTPUT_FILENAME)
156 get_filename_component(OUTPUT_FILENAME_NAME_WE ${OUTPUT_FILENAME} NAME_WE)
159 # Encode an image into the jpeg2000 format
160 ADD_TEST(NR-ENC-${INPUT_FILENAME_NAME}-${it_test}-encode
161 ${EXECUTABLE_OUTPUT_PATH}/${EXE_NAME}
165 # Dump the encoding file
166 ADD_TEST(NR-ENC-${INPUT_FILENAME_NAME}-${it_test}-dump
167 ${EXECUTABLE_OUTPUT_PATH}/j2k_dump
168 -i ${OUTPUT_FILENAME}
169 -o ${OUTPUT_FILENAME}-ENC-${it_test}.txt
171 SET_TESTS_PROPERTIES(NR-ENC-${INPUT_FILENAME_NAME}-${it_test}-dump
173 NR-ENC-${INPUT_FILENAME_NAME}-${it_test}-encode)
175 # Compare the dump file with the baseline
176 ADD_TEST(NR-ENC-${INPUT_FILENAME_NAME}-${it_test}-compare_dump2base
177 ${EXECUTABLE_OUTPUT_PATH}/compare_dump_files
178 -b ${BASELINE_NR}/opj_${OUTPUT_FILENAME_NAME_WE}-ENC-${it_test}.txt
179 -t ${OUTPUT_FILENAME}-ENC-${it_test}.txt
182 SET_TESTS_PROPERTIES(NR-ENC-${INPUT_FILENAME_NAME}-${it_test}-compare_dump2base
184 NR-ENC-${INPUT_FILENAME_NAME}-${it_test}-dump)
186 # Decode the encoding file with kakadu expand command
187 IF (NOT REF_DECODER_NOTFOUND)
189 # Need a bash script to export the path of the kakadu library into PATH
190 ADD_TEST( NR-ENC-${INPUT_FILENAME_NAME}-${it_test}-decode-ref
191 bash ${CMAKE_CURRENT_BINARY_DIR}/opj_ref_decode_cmd.sh
192 -i ${OUTPUT_FILENAME}
193 -o ${OUTPUT_FILENAME}.raw
196 ADD_TEST(NR-ENC-${INPUT_FILENAME_NAME}-${it_test}-decode-ref
197 ${REF_DECODER_BIN_PATH}/kdu_expand
198 -i ${OUTPUT_FILENAME}
199 -o ${OUTPUT_FILENAME}.raw
203 SET_TESTS_PROPERTIES(NR-ENC-${INPUT_FILENAME_NAME}-${it_test}-decode-ref
205 NR-ENC-${INPUT_FILENAME_NAME}-${it_test}-encode)
207 # Compare the decoding file with baseline generated from the kdu_expand and baseline.j2k
208 ADD_TEST(NR-ENC-${INPUT_FILENAME_NAME}-${it_test}-compare_dec-ref-out2base
209 ${EXECUTABLE_OUTPUT_PATH}/compareRAWimages
210 #-b ${BASELINE_NR}/opj_${OUTPUT_FILENAME_NAME_WE}-ENC-${it_test}.raw
211 -b ${BASELINE_NR}/opj_${OUTPUT_FILENAME_NAME_WE}-ENC-${it_test}.raw
212 -t ${OUTPUT_FILENAME}.raw
215 SET_TESTS_PROPERTIES(NR-ENC-${INPUT_FILENAME_NAME}-${it_test}-compare_dec-ref-out2base
217 NR-ENC-${INPUT_FILENAME_NAME}-${it_test}-decode-ref)
219 ENDIF (NOT REF_DECODER_NOTFOUND)
221 ENDIF(NOT IGNORE_LINE_FOUND)
223 ENDFOREACH(OPJ_TEST_ENC_CMD_LINE)