#!/bin/bash # Compare splitting function of a particular PNG splitter. # # Note that temporary files are generated relative to current directory # as opposed to the default place (usually /tmp). This is needed because # mingw can't access /tmp. set -euo pipefail if [[ $# -ne 4 ]]; then echo "$0 " exit 1 fi SPLITTER=$1 CHECKER=$2 STACKER=$3 INPUT=$4 # Disable leak checking for ASAN, since we intentionally don't free memory. export ASAN_OPTIONS=detect_leaks=0 OUTPUT1=$(mktemp -p .) OUTPUT2=$(mktemp -p .) "./$SPLITTER" "$INPUT" "$OUTPUT1" "$OUTPUT2" if ! ( "./$CHECKER" "$INPUT" "$OUTPUT1" "$OUTPUT2" ); then rm -f "$OUTPUT1" "$OUTPUT2" exit 1 fi COMBINED=$(mktemp -p .) "./$STACKER" "$OUTPUT1" "$OUTPUT2" > "$COMBINED" EXPECTED=$(mktemp -p .) ACTUAL=$(mktemp -p .) pngtopnm "$INPUT" | ppmtoppm | md5sum > "$EXPECTED" pngtopnm "$COMBINED" | ppmtoppm | md5sum > "$ACTUAL" if ( diff -q "$EXPECTED" "$ACTUAL" ); then rm -f "$OUTPUT1" "$OUTPUT2" "$COMBINED" "$EXPECTED" "$ACTUAL" else rm -f "$OUTPUT1" "$OUTPUT2" "$COMBINED" "$EXPECTED" "$ACTUAL" exit 1 fi