#!/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

defer_panic_recover="
	defer.go 
	defer2.go 
"

effective_go="
	eff_bytesize.go
	eff_qr.go 
	eff_sequence.go
"

error_handling="
	error.go
	error2.go
	error3.go
	error4.go
"

go_tutorial="
	cat.go 
	cat_rot13.go 
	echo.go 
	helloworld.go 
	helloworld3.go 
	print.go 
	print_string.go 
	server.go 
	server1.go 
	sieve.go 
	sieve1.go 
	sort.go 
	sortmain.go 
	strings.go 
	sum.go 
"

for i in \
	$defer_panic_recover \
	$effective_go \
	$error_handling \
	$go_tutorial \
	go1.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]"

testit go1 "" ""

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