#!/usr/bin/env bash
# Copyright 2009 The Go Authors. All rights reserved.
# Use of this source code is governed by a BSD-style
# license that can be found in the LICENSE file.

set -e

eval $(gomake --no-print-directory -f ../../src/Make.inc go-env)

if [ -z "$O" ]; then
	echo 'missing $O - maybe no Make.$GOARCH?' 1>&2
	exit 1
fi

rm -f *.$O

if [ "$GOOS" = "windows" ];then
	$GC -o file.$O file_windows.go
else
	$GC file.go
fi

for i in \
	helloworld.go \
	helloworld3.go \
	echo.go \
	cat.go \
	cat_rot13.go \
	sum.go \
	sort.go \
	sortmain.go \
	print.go \
	print_string.go \
	sieve.go \
	sieve1.go \
	server1.go \
	strings.go \
	eff_bytesize.go\
	eff_qr.go \
	eff_sequence.go\
; do
	$GC $i
done

# Write to temporary file to avoid mingw bash bug.
TMPFILE="/tmp/gotest3"

function testit {
	$LD $1.$O
	./$O.out $2 2>&1 >"$TMPFILE" || true
	x=$(echo $(cat "$TMPFILE")) # extra echo canonicalizes
	if [ "$x" != "$3" ]
	then
		echo $1 failed: '"'$x'"' is not '"'$3'"'
	fi
}

function testitpipe {
	$LD $1.$O
	./$O.out | $2 2>&1 >"$TMPFILE" || true
	x=$(echo $(cat "$TMPFILE")) # extra echo canonicalizes
	if [ "$x" != "$3" ]
	then
		echo $1 failed: '"'$x'"' is not '"'$3'"'
	fi
}


testit helloworld "" "Hello, world; or Καλημέρα κόσμε; or こんにちは 世界"
testit helloworld3 "" "hello, world can't open file; err=no such file or directory"
testit echo "hello, world" "hello, world"
testit sum "" "6"
testit strings "" ""

alphabet=abcdefghijklmnopqrstuvwxyz
rot13=nopqrstuvwxyzabcdefghijklm
echo $alphabet | testit cat "" $alphabet
echo $alphabet | testit cat_rot13 "--rot13" $rot13
echo $rot13 | testit cat_rot13 "--rot13" $alphabet

testit sortmain "" "Sunday Monday Tuesday Wednesday Thursday Friday Saturday"

testit print "" "18446744073709551615 -1 18446744073709551615 {77 Sunset Strip} [1 2 3 4] 18446744073709551615 {77 Sunset Strip} [1 2 3 4] 18446744073709551615 {77 Sunset Strip} [1 2 3 4]"
testit print_string "" "77 Sunset Strip"

testitpipe sieve "sed 10q" "2 3 5 7 11 13 17 19 23 29"
testitpipe sieve "sed 10q" "2 3 5 7 11 13 17 19 23 29"

# server hangs; don't run it, just compile it
$GC server.go
testit server1 "" ""

testit eff_bytesize "" "1.00YB 9.09TB"
testit eff_sequence "" "[-1 2 6 16 44]"

rm -f $O.out $O.out.exe *.$O "$TMPFILE"
