#!/bin/sh

test() {
	sleep 0.25 # mingw is stupid and will occasionally not have permission to overwrite scrypt_test
  gcc scrypt-jane-test.c -O3 -DSCRYPT_$1 -DSCRYPT_$2 $3 -o scrypt_test #2>/dev/null
	local RC=$?
	if [ $RC -ne 0 ]; then
		echo "$1/$2: failed to compile "
		return
	fi
	./scrypt_test >/dev/null
	local RC=$?
	if [ $RC -ne 0 ]; then
		echo "$1/$2: validation failed"
		return
	fi
	echo "$1/$2: OK"
}

testhash() {
	test $1 SALSA $2
	test $1 CHACHA $2
	test $1 SALSA64 $2
}

testhashes() {
	testhash SHA256 $1
	testhash SHA512 $1
	testhash BLAKE256 $1
	testhash BLAKE512 $1
	testhash SKEIN512 $1
	testhash KECCAK256 $1
	testhash KECCAK512 $1
}

if [ -z $1 ]; then
	testhashes
elif [ $1 -eq 32 ]; then
	testhashes -m32
elif [ $1 -eq 64 ]; then
	testhashes -m64
fi

rm -f scrypt_test
