aboutsummaryrefslogtreecommitdiffstats
path: root/ethreact
diff options
context:
space:
mode:
authorzelig <viktor.tron@gmail.com>2014-07-15 07:15:37 +0800
committerzelig <viktor.tron@gmail.com>2014-07-15 07:15:37 +0800
commit0ecc5c815e4550d7e8dca7b4ab4c549b10bf0b19 (patch)
treed16e53ffe7ecd9f858f3ce901a789f924b16b178 /ethreact
parentd1c89727dcf10c87bd1df68da9508cec047c56cf (diff)
downloadgo-tangerine-0ecc5c815e4550d7e8dca7b4ab4c549b10bf0b19.tar
go-tangerine-0ecc5c815e4550d7e8dca7b4ab4c549b10bf0b19.tar.gz
go-tangerine-0ecc5c815e4550d7e8dca7b4ab4c549b10bf0b19.tar.bz2
go-tangerine-0ecc5c815e4550d7e8dca7b4ab4c549b10bf0b19.tar.lz
go-tangerine-0ecc5c815e4550d7e8dca7b4ab4c549b10bf0b19.tar.xz
go-tangerine-0ecc5c815e4550d7e8dca7b4ab4c549b10bf0b19.tar.zst
go-tangerine-0ecc5c815e4550d7e8dca7b4ab4c549b10bf0b19.zip
reactor test
Diffstat (limited to 'ethreact')
-rw-r--r--ethreact/reactor_test.go63
1 files changed, 63 insertions, 0 deletions
diff --git a/ethreact/reactor_test.go b/ethreact/reactor_test.go
new file mode 100644
index 000000000..801a8abd0
--- /dev/null
+++ b/ethreact/reactor_test.go
@@ -0,0 +1,63 @@
+package ethreact
+
+import (
+ "fmt"
+ "testing"
+)
+
+func TestReactorAdd(t *testing.T) {
+ reactor := New()
+ ch := make(chan Event)
+ reactor.Subscribe("test", ch)
+ if reactor.eventHandlers["test"] == nil {
+ t.Error("Expected new eventHandler to be created")
+ }
+ reactor.Unsubscribe("test", ch)
+ if reactor.eventHandlers["test"] != nil {
+ t.Error("Expected eventHandler to be removed")
+ }
+}
+
+func TestReactorEvent(t *testing.T) {
+ var name string
+ reactor := New()
+ // Buffer the channel, so it doesn't block for this test
+ cap := 20
+ ch := make(chan Event, cap)
+ reactor.Subscribe("even", ch)
+ reactor.Subscribe("odd", ch)
+ reactor.Post("even", "disappears") // should not broadcast if engine not started
+ reactor.Start()
+ for i := 0; i < cap; i++ {
+ if i%2 == 0 {
+ name = "even"
+ } else {
+ name = "odd"
+ }
+ reactor.Post(name, i)
+ }
+ reactor.Post("test", cap) // this should not block
+ i := 0
+ reactor.Flush()
+ close(ch)
+ for event := range ch {
+ fmt.Printf("%d: %v", i, event)
+ if i%2 == 0 {
+ name = "even"
+ } else {
+ name = "odd"
+ }
+ if val, ok := event.Resource.(int); ok {
+ if i != val || event.Name != name {
+ t.Error("Expected event %d to be of type %s and resource %d, got ", i, name, i, val)
+ }
+ } else {
+ t.Error("Unable to cast")
+ }
+ i++
+ }
+ if i != cap {
+ t.Error("excpected exactly %d events, got ", i)
+ }
+ reactor.Stop()
+}