summaryrefslogtreecommitdiff
path: root/src/pkg/testing/script/script_test.go
diff options
context:
space:
mode:
authorAdam Langley <agl@golang.org>2009-11-03 12:47:06 -0800
committerAdam Langley <agl@golang.org>2009-11-03 12:47:06 -0800
commit53f43c11589d80c2a50a4cad053f271078965c61 (patch)
tree276262a749c0dd4e3dd3403ccbb5b9324beee4cb /src/pkg/testing/script/script_test.go
parenta26cbaf84e4245bc7a45f7b39ac19d9ca1555dd0 (diff)
downloadgolang-53f43c11589d80c2a50a4cad053f271078965c61.tar.gz
Add testing/script.
R=rsc, r CC=go-dev http://go/go-review/1016001
Diffstat (limited to 'src/pkg/testing/script/script_test.go')
-rw-r--r--src/pkg/testing/script/script_test.go75
1 files changed, 75 insertions, 0 deletions
diff --git a/src/pkg/testing/script/script_test.go b/src/pkg/testing/script/script_test.go
new file mode 100644
index 000000000..a1c6f28a7
--- /dev/null
+++ b/src/pkg/testing/script/script_test.go
@@ -0,0 +1,75 @@
+// 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.
+
+package script
+
+import (
+ "testing";
+)
+
+func TestNoop(t *testing.T) {
+ err := Perform(0, nil);
+ if err != nil {
+ t.Errorf("Got error: %s", err);
+ }
+}
+
+func TestSimple(t *testing.T) {
+ c := make(chan int);
+ defer close(c);
+
+ a := NewEvent("send", nil, Send{c, 1});
+ b := NewEvent("recv", []*Event{a}, Recv{c, 1});
+
+ err := Perform(0, []*Event{a, b});
+ if err != nil {
+ t.Errorf("Got error: %s", err);
+ }
+}
+
+func TestFail(t *testing.T) {
+ c := make(chan int);
+ defer close(c);
+
+ a := NewEvent("send", nil, Send{c, 2});
+ b := NewEvent("recv", []*Event{a}, Recv{c, 1});
+
+ err := Perform(0, []*Event{a, b});
+ if err == nil {
+ t.Errorf("Failed to get expected error");
+ } else if _, ok := err.(ReceivedUnexpected); !ok {
+ t.Errorf("Error returned was of the wrong type: %s", err);
+ }
+}
+
+func TestClose(t *testing.T) {
+ c := make(chan int);
+
+ a := NewEvent("close", nil, Close{c});
+ b := NewEvent("closed", []*Event{a}, Closed{c});
+
+ err := Perform(0, []*Event{a, b});
+ if err != nil {
+ t.Errorf("Got error: %s", err);
+ }
+}
+
+func matchOne(v interface{}) bool {
+ if i, ok := v.(int); ok && i == 1 {
+ return true;
+ }
+ return false;
+}
+
+func TestRecvMatch(t *testing.T) {
+ c := make(chan int);
+
+ a := NewEvent("send", nil, Send{c, 1});
+ b := NewEvent("recv", []*Event{a}, RecvMatch{c, matchOne});
+
+ err := Perform(0, []*Event{a, b});
+ if err != nil {
+ t.Errorf("Got error: %s", err);
+ }
+}