#!/bin/bash set -euo pipefail if [[ $# -ne 1 ]]; then echo "$0 {crc32}" exit 1 fi TOOL=$1 TEST_DIR=$(mktemp -d) # Delete temporary directory and exit with nonzero status. function die { echo "$1" rm -rf "$TEST_DIR" exit 1 } # Run tool against input file and verify that we got the expected CRC. function run_test { output=$("$TOOL" "$TEST_DIR/input.bin") if [[ "$output" != "$2" ]]; then die "$1 (file)" fi output=$("$TOOL" < "$TEST_DIR/input.bin") if [[ "$output" != "$2" ]]; then die "$1 (stdin)" fi } cp /dev/null "$TEST_DIR/input.bin" run_test "$LINENO: empty" "00000000" echo "58a8a1b9" > "$TEST_DIR/input.bin" run_test "$LINENO: quine1" "58a8a1b9" echo "86319a79" > "$TEST_DIR/input.bin" run_test "$LINENO: quine2" "86319a79" perl -e 'print "long text" x 456' > "$TEST_DIR/input.bin" run_test "$LINENO: text" "c45d6d14" perl -e 'for($i=0;$i<256;$i++){print chr($i);}' > "$TEST_DIR/input.bin" run_test "$LINENO: binary" "29058c73" rm -rf "$TEST_DIR" exit 0