correct nightly crash on all platform linked to merge operation and missing opj_getop...
[openjpeg.git] / tests / nonregression / CMakeLists.txt
1 # NON-REGRESSION TESTS ON THIS DATASET LOCATED ${OPJ_DATA_ROOT}/input/nonregression
2
3 FILE(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/Temporary)
4
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)
8
9 FILE(GLOB_RECURSE OPJ_DATA_NR_LIST
10   "${INPUT_NR}/*.j2k"
11   "${INPUT_NR}/*.j2c"
12   "${INPUT_NR}/*.jp2"
13   )
14
15 FOREACH(filepath ${OPJ_DATA_NR_LIST})
16   GET_FILENAME_COMPONENT(filename ${filepath} NAME)
17   GET_FILENAME_COMPONENT(filenameSub ${filename} NAME_WE)
18   
19   ADD_TEST(NR-${filename}-dump
20       ${EXECUTABLE_OUTPUT_PATH}/j2k_dump
21      -i ${filepath}
22      -o ${TEMP}/${filename}.txt
23      )
24      
25   ADD_TEST(NR-${filename}-compare_dump2base
26       ${EXECUTABLE_OUTPUT_PATH}/compare_dump_files
27      -b ${BASELINE_NR}/opj_${filenameSub}.txt
28      -t ${TEMP}/${filename}.txt
29      )
30      
31   SET_TESTS_PROPERTIES(NR-${filename}-compare_dump2base  
32                        PROPERTIES DEPENDS 
33                        NR-${filename}-dump)     
34    
35   ADD_TEST(NR-${filename}-decode
36       ${EXECUTABLE_OUTPUT_PATH}/j2k_to_image 
37       -i ${filepath}
38       -o ${TEMP}/${filename}.pgx
39       )
40       
41 #  ADD_TEST(NR-${filename}-compare2base
42 #      ${EXECUTABLE_OUTPUT_PATH}/comparePGXimages
43 #     -b ${BASELINE_NR}/opj_${filenameRef}
44 #     -t ${TEMP}/${filename}.pgx
45 #     -n ${nbComponents}
46 #     -d 
47 #     -s b_t_
48 #     )
49 #
50 #  SET_TESTS_PROPERTIES(NR-${filename}-compare2base  
51 #                       PROPERTIES DEPENDS 
52 #                       NR-${filename}-decode)    
53   
54 ENDFOREACH(filepath)
55
56
57 # TEST ENCODER SUITE
58 # Read a input file to know which files processed and with which options.
59
60 IF (NOT WIN32)
61 CONFIGURE_FILE("opj_ref_decode_cmd.sh.in"
62                "${CMAKE_CURRENT_BINARY_DIR}/opj_ref_decode_cmd.sh"
63                @ONLY)
64 ENDIF (NOT WIN32)
65    
66 string(COMPARE EQUAL ${REF_DECODER_BIN_PATH} "NOTFOUND" REF_DECODER_NOTFOUND)            
67 IF (REF_DECODER_NOTFOUND)
68   MESSAGE(STATUS "REF_DECODER_BIN_PATH not found, if you want all the encoding tests suite please provide a regular path")  
69 ENDIF (REF_DECODER_NOTFOUND)
70
71
72 # Read the file into a list
73 FILE(STRINGS encoder_test_suite.txt OPJ_TEST_ENC_CMD_LINE_LIST)
74
75 SET(it_test 0)
76
77 FOREACH(OPJ_TEST_ENC_CMD_LINE ${OPJ_TEST_ENC_CMD_LINE_LIST})
78   math(EXPR it_test "${it_test}+1" )
79
80   #message(STATUS ${OPJ_TEST_ENC_CMD_LINE})
81
82   string(REPLACE " " ";" CMD_ARG_LIST ${OPJ_TEST_ENC_CMD_LINE})
83   
84   #message(STATUS "list = ${CMD_ARG_LIST}")
85   
86   list(GET CMD_ARG_LIST 0 EXE_NAME)
87   string(COMPARE EQUAL ${EXE_NAME} "image_to_j2k" EXE_NAME_FOUND)
88   IF(EXE_NAME_FOUND)
89     list(REMOVE_AT CMD_ARG_LIST 0)
90   ELSE(EXE_NAME_FOUND)
91     string(COMPARE EQUAL ${EXE_NAME} "#" IGNORE_LINE_FOUND)
92     IF(IGNORE_LINE_FOUND)
93       message( STATUS "Current line is ignored: ${OPJ_TEST_ENC_CMD_LINE}")
94     ELSE(IGNORE_LINE_FOUND)
95       message( FATAL_ERROR "${EXE_ARG} is not the right executable name to encode file (try to use image_to_j2k)")
96     ENDIF(IGNORE_LINE_FOUND)   
97   ENDIF(EXE_NAME_FOUND)
98   
99   IF(NOT IGNORE_LINE_FOUND)
100     SET(CMD_ARG_LIST_2 "")
101     SET(ARG_POS 0)
102     SET(INPUT_ARG_POS 0)
103     SET(OUTPUT_ARG_POS 0)
104     
105     FOREACH(CMD_ARG_ELT ${CMD_ARG_LIST})
106       math(EXPR ARG_POS "${ARG_POS}+1" )
107       
108       # Will work only with cmake version > 2.8.4
109       #message(STATUS "${CMD_ARG_ELT}")
110       #string(FIND "${CMD_ARG_ELT}" "-i input/" INPUT_ARG_FOUND)
111       #message(STATUS "pos = ${INPUT_ARG_FOUND}")
112       #IF(INPUT_ARG_FOUND)
113       #  string(SUBSTRING ${CMD_ARG_ELT} INPUT_ARG_FOUND -1 filename_input)
114       #  message(STATUS "filename = ${filename_input}")
115       #ELSE(INPUT_ARG_FOUND)
116       #  message( FATAL_ERROR "Not found a input image into the list of arguments")
117       #ENDIF(INPUT_ARG_FOUND)
118     
119
120       string(COMPARE EQUAL ${CMD_ARG_ELT} "-i" INPUT_ARG_FOUND)
121       IF(INPUT_ARG_FOUND)
122         SET(INPUT_ARG_POS ${ARG_POS})
123         SET(INPUT_ARG_FOUND 0)
124       ENDIF(INPUT_ARG_FOUND)
125       
126       string(COMPARE EQUAL ${CMD_ARG_ELT} "-o" OUTPUT_ARG_FOUND)
127       IF(OUTPUT_ARG_FOUND)
128         SET(OUTPUT_ARG_POS ${ARG_POS})
129         SET(OUTPUT_ARG_FOUND 0)
130       ENDIF(OUTPUT_ARG_FOUND)
131     
132       string(REPLACE "input/" "${INPUT_NR}/" CMD_ARG_ELT ${CMD_ARG_ELT})
133       string(REPLACE "temp/" "${TEMP}/" CMD_ARG_ELT ${CMD_ARG_ELT})
134     
135       list (APPEND CMD_ARG_LIST_2 ${CMD_ARG_ELT})
136   
137     ENDFOREACH(CMD_ARG_ELT)
138   
139     list(GET CMD_ARG_LIST_2 ${INPUT_ARG_POS} INPUT_FILENAME)
140     get_filename_component(INPUT_FILENAME_NAME ${INPUT_FILENAME} NAME)
141     list(GET CMD_ARG_LIST_2 ${OUTPUT_ARG_POS} OUTPUT_FILENAME)
142     get_filename_component(OUTPUT_FILENAME_NAME_WE ${OUTPUT_FILENAME} NAME_WE)
143     
144       
145     # Encode an image into the jpeg2000 format
146     ADD_TEST(NR-ENC-${INPUT_FILENAME_NAME}-${it_test}-encode
147       ${EXECUTABLE_OUTPUT_PATH}/${EXE_NAME}
148       ${CMD_ARG_LIST_2}
149     )
150       
151     # Dump the encoding file 
152     ADD_TEST(NR-ENC-${INPUT_FILENAME_NAME}-${it_test}-dump
153       ${EXECUTABLE_OUTPUT_PATH}/j2k_dump
154       -i ${OUTPUT_FILENAME}
155       -o ${OUTPUT_FILENAME}-ENC-${it_test}.txt
156     )
157     SET_TESTS_PROPERTIES(NR-ENC-${INPUT_FILENAME_NAME}-${it_test}-dump
158                          PROPERTIES DEPENDS 
159                          NR-ENC-${INPUT_FILENAME_NAME}-${it_test}-encode) 
160     
161     # Compare the dump file with the baseline 
162     ADD_TEST(NR-ENC-${INPUT_FILENAME_NAME}-${it_test}-compare_dump2base
163       ${EXECUTABLE_OUTPUT_PATH}/compare_dump_files
164       -b ${BASELINE_NR}/opj_${OUTPUT_FILENAME_NAME_WE}-ENC-${it_test}.txt
165       -t ${OUTPUT_FILENAME}-ENC-${it_test}.txt
166     )
167     
168     SET_TESTS_PROPERTIES(NR-ENC-${INPUT_FILENAME_NAME}-${it_test}-compare_dump2base
169                          PROPERTIES DEPENDS 
170                          NR-ENC-${INPUT_FILENAME_NAME}-${it_test}-dump) 
171
172     # Decode the encoding file with kakadu expand command
173     IF (NOT REF_DECODER_NOTFOUND)
174       IF (NOT WIN32)
175         # Need a bash script to export the path of the kakadu library into PATH  
176         ADD_TEST( NR-ENC-${INPUT_FILENAME_NAME}-${it_test}-decode-ref
177            bash ${CMAKE_CURRENT_BINARY_DIR}/opj_ref_decode_cmd.sh
178           -i ${OUTPUT_FILENAME}
179           -o ${OUTPUT_FILENAME}.raw
180         )
181       ELSE (NOT WIN32)
182         ADD_TEST(NR-ENC-${INPUT_FILENAME_NAME}-${it_test}-decode-ref
183           ${REF_DECODER_BIN_PATH}/kdu_expand
184           -i ${OUTPUT_FILENAME}
185           -o ${OUTPUT_FILENAME}.raw
186         )
187       ENDIF (NOT WIN32)
188     
189       SET_TESTS_PROPERTIES(NR-ENC-${INPUT_FILENAME_NAME}-${it_test}-decode-ref
190                            PROPERTIES DEPENDS 
191                            NR-ENC-${INPUT_FILENAME_NAME}-${it_test}-encode) 
192     
193       # Compare the decoding file with baseline generated from the kdu_expand and baseline.j2k 
194       ADD_TEST(NR-ENC-${INPUT_FILENAME_NAME}-${it_test}-compare_dec-ref-out2base
195         ${EXECUTABLE_OUTPUT_PATH}/compareRAWimages
196         #-b ${BASELINE_NR}/opj_${OUTPUT_FILENAME_NAME_WE}-ENC-${it_test}.raw
197         -b ${BASELINE_NR}/opj_${OUTPUT_FILENAME_NAME_WE}-ENC-${it_test}.raw
198         -t ${OUTPUT_FILENAME}.raw
199       )
200     
201       SET_TESTS_PROPERTIES(NR-ENC-${INPUT_FILENAME_NAME}-${it_test}-compare_dec-ref-out2base
202                            PROPERTIES DEPENDS 
203                            NR-ENC-${INPUT_FILENAME_NAME}-${it_test}-decode-ref)
204     
205     ENDIF (NOT REF_DECODER_NOTFOUND)
206     
207   ENDIF(NOT IGNORE_LINE_FOUND)
208
209 ENDFOREACH(OPJ_TEST_ENC_CMD_LINE)