1#!/bin/sh
2
3# run test images through libnsbmp 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 "Bitmap tests" > ${TEST_LOG}
12
13# bitmap test directories
14
15# standard bitmap suite
16BMPTESTS="test/bmpsuite/*.bmp"
17
18# netsurf test bitmaps
19BMPTESTS="${BMPTESTS} test/bmp/*.bmp"
20
21# afl bitmap suite
22BMPTESTS="${BMPTESTS} test/afl-bmp/*.bmp"
23
24# netsurf afl generated bitmap suite
25BMPTESTS="${BMPTESTS} test/ns-afl-bmp/*.bmp"
26
27# icon test directories
28ICOTESTS="test/icons/*.ico"
29
30# afl ico demo suite
31ICOTESTS="${ICOTESTS} test/afl-ico/*.ico"
32
33# netsurf afl generated icon corpus
34ICOTESTS="${ICOTESTS} test/ns-afl-ico/*.ico"
35
36bmpdecode()
37{
38    OUTF=$(basename ${1} .bmp)
39    echo "Bitmap:${1}" >> ${TEST_LOG}
40    ${TEST_PATH}/test_decode_bmp ${1} ${TEST_OUT}/${OUTF}.ppm 2>> ${TEST_LOG}
41    ECODE=$?
42    echo "Exit code:${ECODE}" >> ${TEST_LOG}
43    return ${ECODE}
44}
45
46icodecode()
47{
48    OUTF=$(basename ${1} .ico)
49    CMPF=$(dirname  ${1})/${OUTF}.ppm
50    echo "Icon:${1}" >> ${TEST_LOG}
51    ${TEST_PATH}/test_decode_ico ${1} 255 255 ${TEST_OUT}/${OUTF}.ppm 2>> ${TEST_LOG}
52    if [ -f "${CMPF}" ]; then
53	cmp ${CMPF} ${TEST_OUT}/${OUTF}.ppm >> ${TEST_LOG} 2>> ${TEST_LOG}
54	if [ "$?" -ne 0 ]; then
55	    return 128
56	fi
57    fi
58}
59
60# bitmap tests
61
62BMPTESTTOTC=0
63BMPTESTPASSC=0
64BMPTESTERRC=0
65
66for BMP in $(ls ${BMPTESTS});do
67    BMPTESTTOTC=$((BMPTESTTOTC+1))
68    bmpdecode ${BMP}
69    ECODE=$?
70    if [ \( "${ECODE}" -gt 127 \) -o \( "${ECODE}" -eq 1 \) ];then
71	BMPTESTERRC=$((BMPTESTERRC+1))
72    else
73	BMPTESTPASSC=$((BMPTESTPASSC+1))
74    fi
75done
76
77echo "Test bitmap decode"
78echo "Tests:${BMPTESTTOTC} Pass:${BMPTESTPASSC} Error:${BMPTESTERRC}"
79
80
81# icon tests
82
83ICOTESTTOTC=0
84ICOTESTPASSC=0
85ICOTESTERRC=0
86
87# netsurf test icons
88for ICO in $(ls ${ICOTESTS});do
89    ICOTESTTOTC=$((ICOTESTTOTC+1))
90    icodecode ${ICO}
91    ECODE=$?
92    if [ \( "${ECODE}" -gt 127 \) -o \( "${ECODE}" -eq 1 \) ];then
93	ICOTESTERRC=$((ICOTESTERRC+1))
94    else
95	ICOTESTPASSC=$((ICOTESTPASSC+1))
96    fi
97done
98
99echo "Test icon decode"
100echo "Tests:${ICOTESTTOTC} Pass:${ICOTESTPASSC} Error:${ICOTESTERRC}"
101
102
103
104# exit code
105if [ "${BMPTESTERRC}" -gt 0 -o "${ICOTESTERRC}" -gt 0 ]; then
106    exit 1
107fi
108
109exit 0
110