1
2
3
4
5 package script
6
7 import (
8 "testing"
9 )
10
11 func TestNoop(t *testing.T) {
12 err := Perform(0, nil)
13 if err != nil {
14 t.Errorf("Got error: %s", err)
15 }
16 }
17
18 func TestSimple(t *testing.T) {
19 c := make(chan int)
20 defer close(c)
21
22 a := NewEvent("send", nil, Send{c, 1})
23 b := NewEvent("recv", []*Event{a}, Recv{c, 1})
24
25 err := Perform(0, []*Event{a, b})
26 if err != nil {
27 t.Errorf("Got error: %s", err)
28 }
29 }
30
31 func TestFail(t *testing.T) {
32 c := make(chan int)
33 defer close(c)
34
35 a := NewEvent("send", nil, Send{c, 2})
36 b := NewEvent("recv", []*Event{a}, Recv{c, 1})
37
38 err := Perform(0, []*Event{a, b})
39 if err == nil {
40 t.Errorf("Failed to get expected error")
41 } else if _, ok := err.(ReceivedUnexpected); !ok {
42 t.Errorf("Error returned was of the wrong type: %s", err)
43 }
44 }
45
46 func TestClose(t *testing.T) {
47 c := make(chan int)
48
49 a := NewEvent("close", nil, Close{c})
50 b := NewEvent("closed", []*Event{a}, Closed{c})
51
52 err := Perform(0, []*Event{a, b})
53 if err != nil {
54 t.Errorf("Got error: %s", err)
55 }
56 }
57
58 func matchOne(v interface{}) bool {
59 if i, ok := v.(int); ok && i == 1 {
60 return true
61 }
62 return false
63 }
64
65 func TestRecvMatch(t *testing.T) {
66 c := make(chan int)
67
68 a := NewEvent("send", nil, Send{c, 1})
69 b := NewEvent("recv", []*Event{a}, RecvMatch{c, matchOne})
70
71 err := Perform(0, []*Event{a, b})
72 if err != nil {
73 t.Errorf("Got error: %s", err)
74 }
75 }