Enable more testing of RGBGFX output (#1473)

This commit is contained in:
Sylvie
2024-08-22 13:19:39 -04:00
committed by GitHub
parent 0e8a17ce82
commit 81ab133566
18 changed files with 66 additions and 20 deletions

13
test/gfx/.gitignore vendored
View File

@@ -3,10 +3,11 @@
/rgbgfx_test
# Generated by randtilegen
/out*.png
/*.rng
# Generated by the test program
/result.2bpp
/result.tilemap
/result.pal
/result.attrmap
# Generated by tests
/result.png
/result.1bpp
/result.2bpp
/result.pal
/result.tilemap
/result.attrmap
/result.palmap

BIN
test/gfx/crop.out.2bpp Normal file

Binary file not shown.

1
test/gfx/crop.out.pal Normal file
View File

@@ -0,0 +1 @@
<EFBFBD>U<EFBFBD><EFBFBD><EFBFBD><EFBFBD>

Binary file not shown.

View File

@@ -0,0 +1 @@
<EFBFBD>lU<EFBFBD><EFBFBD><EFBFBD>

BIN
test/gfx/full_gpl.out.2bpp Normal file

Binary file not shown.

Binary file not shown.

BIN
test/gfx/full_gpl.out.pal Normal file

Binary file not shown.

Binary file not shown.

BIN
test/gfx/full_hex.out.2bpp Normal file

Binary file not shown.

Binary file not shown.

BIN
test/gfx/full_hex.out.pal Normal file

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1 @@
.]<02>t <0B><17>/<2F>_K<5F>

Binary file not shown.

View File

@@ -0,0 +1 @@
-c#none,#fff,#000

View File

@@ -7,7 +7,7 @@ errtmp="$(mktemp)"
# Immediate expansion is the desired behavior.
# shellcheck disable=SC2064
trap "rm -f ${errtmp@Q}" EXIT
trap "rm -f ${errtmp@Q} result.{png,1bpp,2bpp,pal,tilemap,attrmap,palmap} out*.png" EXIT
tests=0
failed=0
@@ -37,37 +37,47 @@ failTest () {
echo "${bold}${red}Test ${cmdline} failed!${1:+ (RC=$1)}${rescolors}${resbold}"
}
checkOutput () {
out_rc=0
for ext in 1bpp 2bpp pal tilemap attrmap palmap; do
if [[ -e "$1.out.$ext" ]]; then
cmp "$1.out.$ext" "result.$ext"
(( out_rc = out_rc || $? ))
fi
done
return $out_rc
}
# Draw a random tile offset and VRAM0 size
# Neither should change anything to how the image is displayed
while [[ "$ofs" -eq 0 ]]; do (( ofs = RANDOM % 256 )); done
while [[ "$size" -eq 0 ]]; do (( size = RANDOM % 256 )); done
for f in *.bin; do
for f in seed*.bin; do
for flags in ""{," -b $ofs"}{," -N $size,256"}; do
newTest ./rgbgfx_test "$f" $flags
runTest || failTest $?
done
done
# Test round-tripping '-r' with '-c #none'
reverse_cmd="$RGBGFX -c#none,#fff,#000 -o none_round_trip.2bpp -r 1 out.png"
reconvert_cmd="$RGBGFX -c#none,#fff,#000 -o result.2bpp out.png"
compare_cmd="cmp none_round_trip.2bpp result.2bpp"
newTest "$reverse_cmd && $reconvert_cmd && $compare_cmd"
runTest || failTest $?
# Remove temporaries (also ignored by Git) created by the above tests
rm -f out*.png result.png result.2bpp
for f in *.png; do
# Do not process outputs of other tests as test inputs themselves
if [[ "$f" = result.png ]]; then
continue
fi
flags="$([[ -e "${f%.png}.flags" ]] && echo "@${f%.png}.flags")"
for f_ext in o_1bpp o_2bpp p_pal t_tilemap a_attrmap q_palmap; do
if [[ -e "${f%.png}.out.${f_ext#*_}" ]]; then
flags="$flags -${f_ext%_*} result.${f_ext#*_}"
fi
done
newTest "$RGBGFX" $flags "$f"
if [[ -e "${f%.png}.err" ]]; then
runTest 2>"$errtmp"
diff -u --strip-trailing-cr "${f%.png}.err" "$errtmp" || failTest
else
runTest || failTest $?
runTest && checkOutput "${f%.png}" || failTest $?
fi
newTest "$RGBGFX" $flags - "<$f"
@@ -75,10 +85,22 @@ for f in *.png; do
runTest 2>"$errtmp"
diff -u --strip-trailing-cr <(sed "s/$f/<stdin>/g" "${f%.png}.err") "$errtmp" || failTest
else
runTest || failTest $?
runTest && checkOutput "${f%.png}" || failTest $?
fi
done
for f in *.[12]bpp; do
# Do not process outputs or sample outputs of other tests as test inputs themselves
if [[ "$f" = result.[12]bpp ]] || [[ "$f" = *.out.[12]bpp ]]; then
continue
fi
flags="$([[ -e "${f%.[12]bpp}.flags" ]] && echo "@${f%.[12]bpp}.flags")"
newTest "$RGBGFX $flags -o $f -r 1 result.png && $RGBGFX $flags -o result.2bpp result.png"
runTest && cmp "$f" result.2bpp || failTest $?
done
if [[ "$failed" -eq 0 ]]; then
echo "${bold}${green}All ${tests} tests passed!${rescolors}${resbold}"
else