|
|
@@ -0,0 +1,51 @@
|
|
|
+package wait
|
|
|
+
|
|
|
+import (
|
|
|
+ "fmt"
|
|
|
+ "testing"
|
|
|
+)
|
|
|
+
|
|
|
+func TestWait(t *testing.T) {
|
|
|
+ const eid = 1
|
|
|
+ wt := New()
|
|
|
+ ch := wt.Register(eid)
|
|
|
+ wt.Trigger(eid, "foo")
|
|
|
+ v := <-ch
|
|
|
+ if g, w := fmt.Sprintf("%v (%T)", v, v), "foo (string)"; g != w {
|
|
|
+ t.Errorf("<-ch = %v, want %v", g, w)
|
|
|
+ }
|
|
|
+
|
|
|
+ if g := <-ch; g != nil {
|
|
|
+ t.Errorf("unexpected non-nil value: %v (%T)", g, g)
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+func TestRegisterDupSuppression(t *testing.T) {
|
|
|
+ const eid = 1
|
|
|
+ wt := New()
|
|
|
+ ch1 := wt.Register(eid)
|
|
|
+ ch2 := wt.Register(eid)
|
|
|
+ wt.Trigger(eid, "foo")
|
|
|
+ <-ch1
|
|
|
+ g := <-ch2
|
|
|
+ if g != nil {
|
|
|
+ t.Errorf("unexpected non-nil value: %v (%T)", g, g)
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+func TestTriggerDupSuppression(t *testing.T) {
|
|
|
+ const eid = 1
|
|
|
+ wt := New()
|
|
|
+ ch := wt.Register(eid)
|
|
|
+ wt.Trigger(eid, "foo")
|
|
|
+ wt.Trigger(eid, "bar")
|
|
|
+
|
|
|
+ v := <-ch
|
|
|
+ if g, w := fmt.Sprintf("%v (%T)", v, v), "foo (string)"; g != w {
|
|
|
+ t.Errorf("<-ch = %v, want %v", g, w)
|
|
|
+ }
|
|
|
+
|
|
|
+ if g := <-ch; g != nil {
|
|
|
+ t.Errorf("unexpected non-nil value: %v (%T)", g, g)
|
|
|
+ }
|
|
|
+}
|