diff options
author | zelig <viktor.tron@gmail.com> | 2014-07-15 07:15:37 +0800 |
---|---|---|
committer | zelig <viktor.tron@gmail.com> | 2014-07-15 07:15:37 +0800 |
commit | 0ecc5c815e4550d7e8dca7b4ab4c549b10bf0b19 (patch) | |
tree | d16e53ffe7ecd9f858f3ce901a789f924b16b178 | |
parent | d1c89727dcf10c87bd1df68da9508cec047c56cf (diff) | |
download | go-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
-rw-r--r-- | ethreact/reactor_test.go | 63 |
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() +} |