1 # CONFORMANCE TESTS AND NON-REGRESSION ON THIS DATASET
3 file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/Temporary)
5 set(TEMP ${CMAKE_CURRENT_BINARY_DIR}/Temporary)
6 set(BASELINE_CONF ${OPJ_DATA_ROOT}/baseline/conformance)
7 set(BASELINE_NR ${OPJ_DATA_ROOT}/baseline/nonregression)
8 set(INPUT_CONF ${OPJ_DATA_ROOT}/input/conformance)
11 # List of components by file (normaly p0_13.j2k have 257 components but for this
12 #set of test we consider only 4)
13 set( CP0_nbC_list "not_used;1;1;1;3;4;4;3;3;1;3;1;1;4;3;1;1")
14 set( CP1_nbC_list "not_used;1;3;4;1;3;3;2")
16 set(COMMENTCODEVAR FALSE)
19 #--------------------------------------------------------------------------
20 # Tests about class 0 profile 0
22 # compare to ref file provided by the Executable Test Suite
23 # non regression comparison
25 # Parameters and tolerances given by Table C.1
26 set( C0P0_ResFactor_list "not_used;0;0;0;3;3;3;0;5;2;0;0;0;0;2;0;0")
27 set( C0P0_PEAK_list "not_used;0;0;0;33;54;109;10;7;4;10;0;0;0;0;0;0")
28 set( C0P0_MSE_list "not_used;0;0;0;55.8;68;743;0.34;6.72;1.47;2.84;0;0;0;0;0;0")
30 foreach(numFileC0P0 RANGE 1 16)
33 if(${numFileC0P0} LESS 10)
34 set( filenameInput p0_0${numFileC0P0}.j2k )
35 set( filenameRef c0p0_0${numFileC0P0}.pgx )
37 set( filenameInput p0_${numFileC0P0}.j2k )
38 set( filenameRef c0p0_${numFileC0P0}.pgx )
41 # Get corresponding tests parameters
42 list(GET C0P0_ResFactor_list ${numFileC0P0} ResFactor)
43 #For Class-0 testing, we always focus on the first component only
44 #list(GET CP0_nbC_list ${numFileC0P0} nbComponents)
45 set( nbComponents "1")
46 list(GET C0P0_PEAK_list ${numFileC0P0} PEAK_limit)
47 list(GET C0P0_MSE_list ${numFileC0P0} MSE_limit)
49 # Manage cases which need to try different resolution reduction
50 if (numFileC0P0 EQUAL 3 OR numFileC0P0 EQUAL 15)
51 get_filename_component(filenameRefSub ${filenameRef} NAME_WE)
54 add_test(ETS-C0P0-${filenameInput}-r0-decode
55 ${EXECUTABLE_OUTPUT_PATH}/opj_decompress
56 -i ${INPUT_CONF}/${filenameInput}
57 -o ${TEMP}/c0${filenameInput}-r0.pgx
61 add_test(ETS-C0P0-${filenameInput}-r0-compare2ref
62 ${EXECUTABLE_OUTPUT_PATH}/comparePGXimages
63 -b ${BASELINE_CONF}/${filenameRefSub}r0.pgx
64 -t ${TEMP}/c0${filenameInput}-r0.pgx
71 set_tests_properties(ETS-C0P0-${filenameInput}-r0-compare2ref
73 ETS-C0P0-${filenameInput}-r0-decode)
75 add_test(NR-C0P0-${filenameInput}-r0-compare2base
76 ${EXECUTABLE_OUTPUT_PATH}/comparePGXimages
77 -b ${BASELINE_NR}/opj_${filenameRefSub}-r0.pgx
78 -t ${TEMP}/c0${filenameInput}-r0.pgx
84 set_tests_properties(NR-C0P0-${filenameInput}-r0-compare2base
86 ETS-C0P0-${filenameInput}-r0-decode)
89 add_test(ETS-C0P0-${filenameInput}-r1-decode
90 ${EXECUTABLE_OUTPUT_PATH}/opj_decompress
91 -i ${INPUT_CONF}/${filenameInput}
92 -o ${TEMP}/c0${filenameInput}-r1.pgx
96 add_test(ETS-C0P0-${filenameInput}-r1-compare2ref
97 ${EXECUTABLE_OUTPUT_PATH}/comparePGXimages
98 -b ${BASELINE_CONF}/${filenameRefSub}r1.pgx
99 -t ${TEMP}/c0${filenameInput}-r1.pgx
106 set_tests_properties(ETS-C0P0-${filenameInput}-r1-compare2ref
108 ETS-C0P0-${filenameInput}-r1-decode)
110 add_test(NR-C0P0-${filenameInput}-r1-compare2base
111 ${EXECUTABLE_OUTPUT_PATH}/comparePGXimages
112 -b ${BASELINE_NR}/opj_${filenameRefSub}-r1.pgx
113 -t ${TEMP}/c0${filenameInput}-r1.pgx
119 set_tests_properties(NR-C0P0-${filenameInput}-r1-compare2base
121 ETS-C0P0-${filenameInput}-r1-decode)
125 add_test(ETS-C0P0-${filenameInput}-decode
126 ${EXECUTABLE_OUTPUT_PATH}/opj_decompress
127 -i ${INPUT_CONF}/${filenameInput}
128 -o ${TEMP}/c0${filenameInput}.pgx
132 add_test(ETS-C0P0-${filenameInput}-compare2ref
133 ${EXECUTABLE_OUTPUT_PATH}/comparePGXimages
134 -b ${BASELINE_CONF}/${filenameRef}
135 -t ${TEMP}/c0${filenameInput}.pgx
142 set_tests_properties(ETS-C0P0-${filenameInput}-compare2ref
144 ETS-C0P0-${filenameInput}-decode)
146 add_test(NR-C0P0-${filenameInput}-compare2base
147 ${EXECUTABLE_OUTPUT_PATH}/comparePGXimages
148 -b ${BASELINE_NR}/opj_${filenameRef}
149 -t ${TEMP}/c0${filenameInput}.pgx
155 set_tests_properties(NR-C0P0-${filenameInput}-compare2base
157 ETS-C0P0-${filenameInput}-decode)
163 #--------------------------------------------------------------------------
164 # Tests about class 0 profile 1
166 # compare to ref file
167 # non regression comparison
169 # Parameters and tolerances given by Table C.4
170 set( C0P1_ResFactor_list "not_used;0;3;3;0;4;1;0")
171 set( C0P1_PEAK_list "not_used;0;35;28;2;128;128;0")
172 set( C0P1_MSE_list "not_used;0;74;18.8;0.550;16384;16384;0")
174 foreach(numFileC0P1 RANGE 1 7)
177 set( filenameInput p1_0${numFileC0P1}.j2k )
178 set( filenameRef c0p1_0${numFileC0P1}.pgx )
180 # Get corresponding tests parameters
181 list(GET C0P1_ResFactor_list ${numFileC0P1} ResFactor)
182 #For Class-0 testing, we always focus on the first component only
183 #list(GET CP0_nbC_list ${numFileC0P0} nbComponents)
184 set( nbComponents "1")
185 list(GET C0P1_PEAK_list ${numFileC0P1} PEAK_limit)
186 list(GET C0P1_MSE_list ${numFileC0P1} MSE_limit)
188 # Manage cases which need to try different resolution reduction
189 if (numFileC0P1 EQUAL 4 )
190 get_filename_component(filenameRefSub ${filenameRef} NAME_WE)
193 add_test(ETS-C0P1-${filenameInput}-r0-decode
194 ${EXECUTABLE_OUTPUT_PATH}/opj_decompress
195 -i ${INPUT_CONF}/${filenameInput}
196 -o ${TEMP}/c0${filenameInput}-r0.pgx
200 add_test(ETS-C0P1-${filenameInput}-r0-compare2ref
201 ${EXECUTABLE_OUTPUT_PATH}/comparePGXimages
202 -b ${BASELINE_CONF}/${filenameRefSub}r0.pgx
203 -t ${TEMP}/c0${filenameInput}-r0.pgx
210 set_tests_properties(ETS-C0P1-${filenameInput}-r0-compare2ref
212 ETS-C0P1-${filenameInput}-r0-decode)
214 add_test(NR-C0P1-${filenameInput}-r0-compare2base
215 ${EXECUTABLE_OUTPUT_PATH}/comparePGXimages
216 -b ${BASELINE_NR}/opj_${filenameRefSub}-r0.pgx
217 -t ${TEMP}/c0${filenameInput}-r0.pgx
223 set_tests_properties(NR-C0P1-${filenameInput}-r0-compare2base
225 ETS-C0P1-${filenameInput}-r0-decode)
228 add_test(ETS-C0P1-${filenameInput}-r3-decode
229 ${EXECUTABLE_OUTPUT_PATH}/opj_decompress
230 -i ${INPUT_CONF}/${filenameInput}
231 -o ${TEMP}/c0${filenameInput}-r3.pgx
235 add_test(ETS-C0P1-${filenameInput}-r3-compare2ref
236 ${EXECUTABLE_OUTPUT_PATH}/comparePGXimages
237 -b ${BASELINE_CONF}/${filenameRefSub}r3.pgx
238 -t ${TEMP}/c0${filenameInput}-r3.pgx
245 set_tests_properties(ETS-C0P1-${filenameInput}-r3-compare2ref
247 ETS-C0P1-${filenameInput}-r3-decode)
249 add_test(NR-C0P1-${filenameInput}-r3-compare2base
250 ${EXECUTABLE_OUTPUT_PATH}/comparePGXimages
251 -b ${BASELINE_NR}/opj_${filenameRefSub}-r3.pgx
252 -t ${TEMP}/c0${filenameInput}-r3.pgx
258 set_tests_properties(NR-C0P1-${filenameInput}-r3-compare2base
260 ETS-C0P1-${filenameInput}-r3-decode)
264 add_test(ETS-C0P1-${filenameInput}-decode
265 ${EXECUTABLE_OUTPUT_PATH}/opj_decompress
266 -i ${INPUT_CONF}/${filenameInput}
267 -o ${TEMP}/c0${filenameInput}.pgx
271 add_test(ETS-C0P1-${filenameInput}-compare2ref
272 ${EXECUTABLE_OUTPUT_PATH}/comparePGXimages
273 -b ${BASELINE_CONF}/${filenameRef}
274 -t ${TEMP}/c0${filenameInput}.pgx
281 set_tests_properties(ETS-C0P1-${filenameInput}-compare2ref
283 ETS-C0P1-${filenameInput}-decode)
285 add_test(NR-C0P1-${filenameInput}-compare2base
286 ${EXECUTABLE_OUTPUT_PATH}/comparePGXimages
287 -b ${BASELINE_NR}/opj_${filenameRef}
288 -t ${TEMP}/c0${filenameInput}.pgx
294 set_tests_properties(NR-C0P1-${filenameInput}-compare2base
296 ETS-C0P1-${filenameInput}-decode)
302 #--------------------------------------------------------------------------
303 # Tests about class 1 profile 0
305 # compare to ref file
306 # non regression comparison
308 # Parameters and tolerances given by Table C.6
309 set( C1P0_ResFactor_list "not_used;0;0;0;0;0;0;0;1;0;0;0;0;0;0;0;0")
310 set( C1P0_PEAK_list "not_used;0;0;0;5:4:6;2:2:2:0;635:403:378:0;0:0:0;0:0:0;0;0:0:0;0;0;0:0:0:0;0:0:0;0;0")
311 set( C1P0_MSE_list "not_used;0;0;0;0.776:0.626:1.070;0.302:0.307:0.269:0;11287:6124:3968:0;0:0:0;0:0:0;0;0:0:0;0;0;0:0:0:0;0:0:0;0;0")
313 foreach(numFileC1P0 RANGE 1 16)
316 if(${numFileC1P0} LESS 10)
317 set( filenameInput p0_0${numFileC1P0}.j2k )
318 set( filenameRef c1p0_0${numFileC1P0}.pgx )
320 set( filenameInput p0_${numFileC1P0}.j2k )
321 set( filenameRef c1p0_${numFileC1P0}.pgx )
324 # Get corresponding tests parameters
325 list(GET CP0_nbC_list ${numFileC1P0} nbComponents)
326 list(GET C1P0_ResFactor_list ${numFileC1P0} ResFactor)
327 list(GET C1P0_PEAK_list ${numFileC1P0} PEAK_limit)
328 list(GET C1P0_MSE_list ${numFileC1P0} MSE_limit)
330 add_test(ETS-C1P0-${filenameInput}-decode
331 ${EXECUTABLE_OUTPUT_PATH}/opj_decompress
332 -i ${INPUT_CONF}/${filenameInput}
333 -o ${TEMP}/c1${filenameInput}.pgx
337 add_test(ETS-C1P0-${filenameInput}-compare2ref
338 ${EXECUTABLE_OUTPUT_PATH}/comparePGXimages
339 -b ${BASELINE_CONF}/${filenameRef}
340 -t ${TEMP}/c1${filenameInput}.pgx
347 set_tests_properties(ETS-C1P0-${filenameInput}-compare2ref
349 ETS-C1P0-${filenameInput}-decode)
351 add_test(NR-C1P0-${filenameInput}-compare2base
352 ${EXECUTABLE_OUTPUT_PATH}/comparePGXimages
353 -b ${BASELINE_NR}/opj_${filenameRef}
354 -t ${TEMP}/c1${filenameInput}.pgx
360 set_tests_properties(NR-C1P0-${filenameInput}-compare2base
362 ETS-C1P0-${filenameInput}-decode)
366 #--------------------------------------------------------------------------
367 # Tests about class 1 profile 1
369 # compare to ref file
370 # non regression comparison
372 # Parameters and tolerances given by Table C.7
373 set( C1P1_PEAK_list "not_used;0;5:4:6;2:2:1:0;624;40:40:40;2:2:2;0:0")
374 set( C1P1_MSE_list "not_used;0;0.765:0.616:1.051;0.3:0.210:0.200:0;3080;8.458:9.816:10.154;0.6:0.6:0.6;0:0")
376 foreach(numFileC1P1 RANGE 1 7)
379 set( filenameInput p1_0${numFileC1P1}.j2k )
380 set( filenameRef c1p1_0${numFileC1P1}.pgx )
382 # Get corresponding tests parameters
383 list(GET CP1_nbC_list ${numFileC1P1} nbComponents)
384 list(GET C1P1_PEAK_list ${numFileC1P1} PEAK_limit)
385 list(GET C1P1_MSE_list ${numFileC1P1} MSE_limit)
387 add_test(ETS-C1P1-${filenameInput}-decode
388 ${EXECUTABLE_OUTPUT_PATH}/opj_decompress
389 -i ${INPUT_CONF}/${filenameInput}
390 -o ${TEMP}/c1${filenameInput}.pgx
394 add_test(ETS-C1P1-${filenameInput}-compare2ref
395 ${EXECUTABLE_OUTPUT_PATH}/comparePGXimages
396 -b ${BASELINE_CONF}/${filenameRef}
397 -t ${TEMP}/c1${filenameInput}.pgx
404 set_tests_properties(ETS-C1P1-${filenameInput}-compare2ref
406 ETS-C1P1-${filenameInput}-decode)
408 add_test(NR-C1P1-${filenameInput}-compare2base
409 ${EXECUTABLE_OUTPUT_PATH}/comparePGXimages
410 -b ${BASELINE_NR}/opj_${filenameRef}
411 -t ${TEMP}/c1${filenameInput}.pgx
417 set_tests_properties(NR-C1P1-${filenameInput}-compare2base
419 ETS-C1P1-${filenameInput}-decode)
423 #--------------------------------------------------------------------------
424 # Tests about JP2 file
426 # compare to ref file
427 # non regression comparison
429 # Tolerances given by Table G.1
431 foreach(numFileJP2 RANGE 1 9)
434 set( filenameInput "file${numFileJP2}.jp2" )
435 set( filenameRef jp2_${numFileJP2}.tif )
437 # Get corresponding tests parameters
438 list(GET JP2_PEAK_list ${numFileJP2} PEAK_limit)
440 add_test(ETS-JP2-${filenameInput}-decode
441 ${EXECUTABLE_OUTPUT_PATH}/opj_decompress
442 -i ${INPUT_CONF}/${filenameInput}
443 -o ${TEMP}/${filenameInput}.tif
446 # FIXME: Need to implement a compare tif images function
448 # add_test(ETS-JP2-${filenameInput}-compare2ref
449 # ${EXECUTABLE_OUTPUT_PATH}/compareTIFimages
450 # -b ${BASELINE_CONF}/${filenameRef_tif}
451 # -t ${TEMP}/${filenameInput}.pgx
455 # set_tests_properties(ETS-JP2-${filenameInput}-compare2ref
457 # ETS-JP2-${filenameInput}-decode)
459 # add_test(NR-JP2-${filenameInput}-compare2base
460 # ${EXECUTABLE_OUTPUT_PATH}/compareTIFimages
461 # -b ${BASELINE_NR}/opj_${filenameRef}
462 # -t ${TEMP}/${filenameInput}.tif
466 # set_tests_properties(NR-JP2-${filenameInput}-compare2base
468 # ETS-JP2-${filenameInput}-decode)
472 #--------------------------------------------------------------------------#
473 #--------------------------------------------------------------------------#
474 #--------------------------------------------------------------------------#
476 #--------------------------------------------------------------------------
477 # Tests about dump of profile 0 file
478 # try to dump image and codestream informations into a file
479 # non regression comparison this file to the baseline
481 foreach(numFileP0 RANGE 1 16)
484 if(${numFileP0} LESS 10)
485 set( filenameInput p0_0${numFileP0}.j2k )
487 set( filenameInput p0_${numFileP0}.j2k )
489 get_filename_component(filenameRefSub ${filenameInput} NAME_WE)
492 add_test(NR-${filenameInput}-dump
493 ${EXECUTABLE_OUTPUT_PATH}/opj_dump
494 -i ${INPUT_CONF}/${filenameInput}
495 -o ${TEMP}/${filenameInput}.txt
498 add_test(NR-${filenameInput}-compare_dump2base
499 ${EXECUTABLE_OUTPUT_PATH}/compare_dump_files
500 -b ${BASELINE_NR}/opj_v2_${filenameRefSub}.txt
501 -t ${TEMP}/${filenameInput}.txt
504 set_tests_properties(NR-${filenameInput}-compare_dump2base
506 NR-${filenameInput}-dump)
510 #--------------------------------------------------------------------------
511 # Tests about dump of profile 1 file
512 # try to dump image and codestream informations into a file
513 # non regression comparison this file to the baseline
515 foreach(numFileP1 RANGE 1 7)
518 set( filenameInput p1_0${numFileP1}.j2k )
519 get_filename_component(filenameInputSub ${filenameInput} NAME_WE)
521 add_test(NR-${filenameInput}-dump
522 ${EXECUTABLE_OUTPUT_PATH}/opj_dump
523 -i ${INPUT_CONF}/${filenameInput}
524 -o ${TEMP}/${filenameInput}.txt
527 add_test(NR-${filenameInput}-compare_dump2base
528 ${EXECUTABLE_OUTPUT_PATH}/compare_dump_files
529 -b ${BASELINE_NR}/opj_v2_${filenameInputSub}.txt
530 -t ${TEMP}/${filenameInput}.txt
533 set_tests_properties(NR-${filenameInput}-compare_dump2base
535 NR-${filenameInput}-dump)
539 #--------------------------------------------------------------------------
540 # Tests about dump of JP2 file
541 # try to dump image and codestream informations into a file
542 # non regression comparison this file to the baseline
544 foreach(numFileJP2 RANGE 1 9)
547 set( filenameInput "file${numFileJP2}.jp2" )
548 get_filename_component(filenameInputSub ${filenameInput} NAME_WE)
550 add_test(NR-${filenameInput}-dump
551 ${EXECUTABLE_OUTPUT_PATH}/opj_dump
552 -i ${INPUT_CONF}/${filenameInput}
553 -o ${TEMP}/${filenameInput}.txt
556 add_test(NR-${filenameInput}-compare_dump2base
557 ${EXECUTABLE_OUTPUT_PATH}/compare_dump_files
558 -b ${BASELINE_NR}/opj_v2_${filenameInputSub}.txt
559 -t ${TEMP}/${filenameInput}.txt
562 set_tests_properties(NR-${filenameInput}-compare_dump2base
564 NR-${filenameInput}-dump)