#!/bin/bash

die() {
  printf >&2 '%s\n' "$1"
  exit 1
}
pack() { ./pack; }
verify() {
  cmp <(printf "$1") <(printf "$1" | ./pack | gzip -d) || die "Failed for $1"
}

printf '\x1f\x1e\x00\x00\x00\x02\x02\x01\x00\x62\x61\x28' | gzip -d &> /dev/null ||
    die "You're seem to be using gzip 1.6--1.8 which has pack related bugs. Please upgrade."
pack < /dev/null > /dev/null || die "Can't run pack. Is it compiled and in the current dir?"

verify "hello world"
verify ""              # Original 'pack' would fail on empty files
verify "aaaaaaaaaaa"   # Original 'pack' would fail for single bytes
verify "$(printf "\\%o" {0..256})"

echo "Tests passed."
