libpng/tests/pngstest
John Bowler fa5ba2e026 New test PNG files incorporated into make check
tests/pngstest-* are changed so that the new test files are divided into 8
groups by gamma and alpha channel.  This makes each test take just under 5
seconds on a moderately up-to-date x86_64 system using libpng16 (test times are
somewhat variable under libpng17 at present because of the lack of optimization
in some gamma processing paths.)

These tests have considerably better code and pixel-value coverage than
contrib/pngsuite however coverage is still incomplete.

Signed-off-by: John Bowler <jbowler@acm.org>
2015-09-25 12:41:56 -07:00

53 lines
1.2 KiB
Bash
Executable File

#!/bin/sh
#
# Usage:
#
# tests/pngstest gamma alpha
#
# Run ./pngstest on the PNG files in $srcdir/contrib/testpngs which have the
# given gamma and opacity:
#
# gamma: one of; linear, 1.8, sRGB, none.
# alpha: one of; opaque, tRNS, alpha, none. 'none' is equivalent to !alpha
#
# NOTE: the temporary files pngstest generates have the base name gamma-alpha to
# avoid issues with make -j
#
gamma="$1"
shift
alpha="$1"
shift
exec ./pngstest --strict --tmpfile "${gamma}-${alpha}-" --log ${1+"$@"} $(
for f in "${srcdir}/contrib/testpngs/"*.png
do
g=
case "$f" in
*-linear[.-]*)
test "$gamma" = "linear" && g="$f";;
*-sRGB[.-]*)
test "$gamma" = "sRGB" && g="$f";;
*-1.8[.-]*)
test "$gamma" = "1.8" && g="$f";;
*)
test "$gamma" = "none" && g="$f";;
esac
case "$g" in
"")
:;;
*-alpha[-.]*)
test "$alpha" = "alpha" && echo "$g";;
*-tRNS[-.]*)
test "$alpha" = "tRNS" -o "$alpha" = "none" && echo "$g";;
*)
test "$alpha" = "opaque" -o "$alpha" = "none" && echo "$g";;
esac
done
)