1#!/bin/sh
2
3# run test images through libnsgif and count results
4
5TEST_PATH=$1
6TEST_OUT=${TEST_PATH}/ppm
7TEST_LOG=${TEST_PATH}/test.log
8
9mkdir -p ${TEST_OUT}
10
11echo "GIF tests" > ${TEST_LOG}
12
13# gif test directories
14
15# netsurf test gif
16GIFTESTS="test/data/*.gif"
17
18# netsurf afl generated gif suite
19GIFTESTS="${GIFTESTS} test/ns-afl-gif/*.gif"
20
21gifdecode()
22{
23    OUTF=$(basename ${1} .gif)
24    CMPF=$(dirname  ${1})/${OUTF}.ppm
25    echo "GIF:${1}" >> ${TEST_LOG}
26    ${TEST_PATH}/test_decode_gif ${1} ${TEST_OUT}/${OUTF}.ppm 2>> ${TEST_LOG}
27    ECODE=$?
28
29    echo "Exit code:${ECODE}" >> ${TEST_LOG}
30    if [ "${ECODE}" -gt 0 ];then
31	return ${ECODE}
32    fi
33
34    if [ -f "${CMPF}" ]; then
35	cmp ${CMPF} ${TEST_OUT}/${OUTF}.ppm >> ${TEST_LOG} 2>> ${TEST_LOG}
36	if [ "$?" -ne 0 ]; then
37	    return 128
38	fi
39    fi
40
41    return 0
42}
43
44GIFTESTTOTC=0
45GIFTESTPASSC=0
46GIFTESTFAILC=0
47GIFTESTERRC=0
48
49echo "Testing GIF decode"
50
51for GIF in $(ls ${GIFTESTS});do
52    GIFTESTTOTC=$((GIFTESTTOTC+1))
53    gifdecode ${GIF}
54    ECODE=$?
55    if [ "${ECODE}" -gt 127 ];then
56	GIFTESTERRC=$((GIFTESTERRC+1))
57    else
58	if [ "${ECODE}" -gt 0 ];then
59	    GIFTESTFAILC=$((GIFTESTFAILC+1))
60	else
61	    GIFTESTPASSC=$((GIFTESTPASSC+1))
62	fi
63    fi
64done
65
66echo "Tests:${GIFTESTTOTC} Pass:${GIFTESTPASSC} Fail:${GIFTESTFAILC} Error:${GIFTESTERRC}"
67
68# exit code
69if [ "${GIFTESTERRC}" -gt 0 ]; then
70    exit 1
71fi
72
73exit 0
74