go-fringe.go: Language change: `closed' function on channels has gone.
[fringe] / test
CommitLineData
2bd37ef1
MW
1#! /bin/sh
2
3###--------------------------------------------------------------------------
4### Framework.
5
6prog=${1?prog}
7progbase=${prog##*/}
8lose=0
9
10clean () {
11 rm -f test.out test.err test.rc
12}
13
14run () {
15 clean
16 echo >&2 "Running $prog $*"
17 $prog "$@" >test.out 2>test.err
18 echo $? >test.rc
19 for i in out err rc; do
20 echo "$i"
21 sed 's/^/ /' test.$i
22 done >&2
23}
24
25lose () {
26 echo >&2 "$*"
27 lose=1
28}
29
30insist () {
31 case $(cat test.$1) in
32 $2) ;;
33 *) lose "!!! expected $1 to match \`$2'." ;;
34 esac
35}
36
37insist_fail () {
38 insist rc "[!0]*"
39 insist err "*$progbase: $1"
40}
41
42insist_win () {
43 insist rc 0
44 insist out "$1"
45}
46
47###--------------------------------------------------------------------------
48### Tests.
49
50tree_a="((a)b((c)d(e)))"
51tree_b="((((a)b(c))d)e)"
52tree_c="((((a)c(b))d)e)"
53
54tree_x="(((a)b((c)d(e)))f((((g)h(i))j(k))l(m)))"
55tree_y="(((a)b((c)d(e(f))))g(((h)i((j)k(l)))m))"
56tree_z="(((a)b((c)d(e)))f((((g)h)j(k))l(m)))"
57
58run
59 insist_fail "bad args"
60
61run foo bar baz
62 insist_fail "bad args"
63
64run $tree_a
65 insist_win "abcde"
66
67run "((a)b((c)d(e))"
68 insist_fail "missing )"
69
70run "((a)b((c)d(e)))z"
71 insist_fail "trailing junk"
72
73run "((a)b((c)d("
74 insist_fail "no data"
75
76run $tree_a $tree_b
77 insist_win "match"
78
79run $tree_a $tree_c
80 insist_win "no match"
81
82run $tree_x $tree_y
83 insist_win "match"
84
85run $tree_x $tree_z
86 insist_win "no match"
87
88run $tree_z $tree_y
89 insist_win "no match"
90
91###--------------------------------------------------------------------------
92### Done.
93
94clean
95exit $lose
96
97###----- That's all, folks --------------------------------------------------