#!/bin/bash # Compare make_png with ppmmake. set -euo pipefail if [[ $# -ne 1 ]]; then echo "$0 " exit 1 fi MAKE_PNG=$1 EXPECTED_OUTPUT=$(mktemp) function output_mismatched { echo "Output mismatched for $@" rm -f "$EXPECTED_OUTPUT" exit 1 } function test_white { ppmmake rgb:ff/ff/ff $1 $2 | ppmtoppm > "$EXPECTED_OUTPUT" ./$MAKE_PNG $1 $2 \ | pngtopnm \ | ppmtoppm \ | diff -q "$EXPECTED_OUTPUT" - \ || output_mismatched $1 $2 white } function test_color { ppmmake $(printf "rgb:%02x/%02x/%02x" $3 $4 $5) $1 $2 \ | ppmtoppm > "$EXPECTED_OUTPUT" ./$MAKE_PNG $1 $2 $3 $4 $5 \ | pngtopnm \ | ppmtoppm \ | diff -q "$EXPECTED_OUTPUT" - \ || output_mismatched $1 $2 $3 $4 $5 } function test_alpha { ppmmake rgb:12/34/56 $1 $2 | ppmtoppm > "$EXPECTED_OUTPUT" ./$MAKE_PNG $1 $2 255 255 255 0 \ | pngtopam -mix -background=rgb:12/34/56 \ | ppmtoppm \ | diff -q "$EXPECTED_OUTPUT" - \ || output_mismatched $1 $2 alpha 0 ./$MAKE_PNG $1 $2 18 52 86 255 \ | pngtopam -mix -background=rgb:ee/dd/cc \ | ppmtoppm \ | diff -q "$EXPECTED_OUTPUT" - \ || output_mismatched $1 $2 alpha 255 } test_white 1 1 test_white 1 64 test_white 32 1 test_white 1024 1023 test_color 128 256 0 0 0 test_color 256 512 255 255 255 test_color 511 511 255 0 0 test_color 510 511 0 255 0 test_color 511 510 0 0 255 test_color 12 34 5 6 7 test_color 98 76 5 4 3 test_alpha 11 13 test_alpha 97 89 rm -f "$EXPECTED_OUTPUT"