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 CONFIGURE_FILE("opj_ref_decode_cmd.bat.in"
81 "${CMAKE_CURRENT_BINARY_DIR}/opj_ref_decode_cmd.bat"
85 # Read the file into a list
86 FILE(STRINGS encoder_test_suite.txt OPJ_TEST_ENC_CMD_LINE_LIST)
90 FOREACH(OPJ_TEST_ENC_CMD_LINE ${OPJ_TEST_ENC_CMD_LINE_LIST})
91 math(EXPR it_test "${it_test}+1" )
93 #message(STATUS ${OPJ_TEST_ENC_CMD_LINE})
95 string(REPLACE " " ";" CMD_ARG_LIST ${OPJ_TEST_ENC_CMD_LINE})
97 #message(STATUS "list = ${CMD_ARG_LIST}")
99 list(GET CMD_ARG_LIST 0 EXE_NAME)
100 string(COMPARE EQUAL ${EXE_NAME} "image_to_j2k" EXE_NAME_FOUND)
102 list(REMOVE_AT CMD_ARG_LIST 0)
104 string(COMPARE EQUAL ${EXE_NAME} "#" IGNORE_LINE_FOUND)
105 IF(IGNORE_LINE_FOUND)
106 message( STATUS "Current line is ignored: ${OPJ_TEST_ENC_CMD_LINE}")
107 ELSE(IGNORE_LINE_FOUND)
108 message( FATAL_ERROR "${EXE_ARG} is not the right executable name to encode file (try to use image_to_j2k)")
109 ENDIF(IGNORE_LINE_FOUND)
110 ENDIF(EXE_NAME_FOUND)
112 IF(NOT IGNORE_LINE_FOUND)
113 SET(CMD_ARG_LIST_2 "")
116 SET(OUTPUT_ARG_POS 0)
118 FOREACH(CMD_ARG_ELT ${CMD_ARG_LIST})
119 math(EXPR ARG_POS "${ARG_POS}+1" )
121 # Will work only with cmake version > 2.8.4
122 #message(STATUS "${CMD_ARG_ELT}")
123 #string(FIND "${CMD_ARG_ELT}" "-i input/" INPUT_ARG_FOUND)
124 #message(STATUS "pos = ${INPUT_ARG_FOUND}")
126 # string(SUBSTRING ${CMD_ARG_ELT} INPUT_ARG_FOUND -1 filename_input)
127 # message(STATUS "filename = ${filename_input}")
128 #ELSE(INPUT_ARG_FOUND)
129 # message( FATAL_ERROR "Not found a input image into the list of arguments")
130 #ENDIF(INPUT_ARG_FOUND)
133 string(COMPARE EQUAL ${CMD_ARG_ELT} "-i" INPUT_ARG_FOUND)
135 SET(INPUT_ARG_POS ${ARG_POS})
136 SET(INPUT_ARG_FOUND 0)
137 ENDIF(INPUT_ARG_FOUND)
139 string(COMPARE EQUAL ${CMD_ARG_ELT} "-o" OUTPUT_ARG_FOUND)
141 SET(OUTPUT_ARG_POS ${ARG_POS})
142 SET(OUTPUT_ARG_FOUND 0)
143 ENDIF(OUTPUT_ARG_FOUND)
145 string(REPLACE "input/" "${INPUT_NR}/" CMD_ARG_ELT ${CMD_ARG_ELT})
146 string(REPLACE "temp/" "${TEMP}/" CMD_ARG_ELT ${CMD_ARG_ELT})
148 list (APPEND CMD_ARG_LIST_2 ${CMD_ARG_ELT})
150 ENDFOREACH(CMD_ARG_ELT)
152 list(GET CMD_ARG_LIST_2 ${INPUT_ARG_POS} INPUT_FILENAME)
153 get_filename_component(INPUT_FILENAME_NAME ${INPUT_FILENAME} NAME)
154 list(GET CMD_ARG_LIST_2 ${OUTPUT_ARG_POS} OUTPUT_FILENAME)
155 get_filename_component(OUTPUT_FILENAME_NAME_WE ${OUTPUT_FILENAME} NAME_WE)
158 # Encode an image into the jpeg2000 format
159 ADD_TEST(NR-ENC-${INPUT_FILENAME_NAME}-${it_test}-encode
160 ${EXECUTABLE_OUTPUT_PATH}/${EXE_NAME}
164 # Dump the encoding file
165 ADD_TEST(NR-ENC-${INPUT_FILENAME_NAME}-${it_test}-dump
166 ${EXECUTABLE_OUTPUT_PATH}/j2k_dump
167 -i ${OUTPUT_FILENAME}
168 -o ${OUTPUT_FILENAME}-ENC-${it_test}.txt
170 SET_TESTS_PROPERTIES(NR-ENC-${INPUT_FILENAME_NAME}-${it_test}-dump
172 NR-ENC-${INPUT_FILENAME_NAME}-${it_test}-encode)
174 # Compare the dump file with the baseline
175 ADD_TEST(NR-ENC-${INPUT_FILENAME_NAME}-${it_test}-compare_dump2base
176 ${EXECUTABLE_OUTPUT_PATH}/compare_dump_files
177 -b ${BASELINE_NR}/opj_${OUTPUT_FILENAME_NAME_WE}-ENC-${it_test}.txt
178 -t ${OUTPUT_FILENAME}-ENC-${it_test}.txt
181 SET_TESTS_PROPERTIES(NR-ENC-${INPUT_FILENAME_NAME}-${it_test}-compare_dump2base
183 NR-ENC-${INPUT_FILENAME_NAME}-${it_test}-dump)
185 # Decode the encoding file with kakadu expand command
186 string(COMPARE EQUAL ${REF_DECODER_BIN_PATH} "NOTFOUND" REF_DECODER_NOTFOUND)
188 IF (NOT REF_DECODER_NOTFOUND)
190 # Need a bash script to export the path of the kakadu library into PATH
191 ADD_TEST(NAME NR-ENC-${INPUT_FILENAME_NAME}-${it_test}-decode-ref
192 COMMAND sh ${CMAKE_CURRENT_BINARY_DIR}/opj_ref_decode_cmd.sh
193 -i ${OUTPUT_FILENAME}
194 -o ${OUTPUT_FILENAME}.raw
197 ADD_TEST(NR-ENC-${INPUT_FILENAME_NAME}-${it_test}-decode-ref
198 ${REF_DECODER_BIN_PATH}/kdu_expand
199 -i ${OUTPUT_FILENAME}
200 -o ${OUTPUT_FILENAME}.raw
204 SET_TESTS_PROPERTIES(NR-ENC-${INPUT_FILENAME_NAME}-${it_test}-decode-ref
206 NR-ENC-${INPUT_FILENAME_NAME}-${it_test}-encode)
207 ELSE (NOT REF_DECODER_NOTFOUND)
208 MESSAGE(STATUS "REF_DECODER_BIN_PATH not found, if you want all the encoding tests suite please provide a ragular path")
209 ENDIF (NOT REF_DECODER_NOTFOUND)
211 # Compare the decoding file with baseline generated from the kdu_expand and baseline.j2k
212 #ADD_TEST(NR-ENC-${it_test}-compare_expand
213 # -b ${BASELINE_NR}/.raw
214 # -t ${TEMP}/${OUTPUT_FILENAME}.raw
217 ENDIF(NOT IGNORE_LINE_FOUND)
219 ENDFOREACH(OPJ_TEST_ENC_CMD_LINE)