mirror of https://github.com/ethereum/go-ethereum
parent
d1c89727dc
commit
0ecc5c815e
@ -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() |
||||||
|
} |
Loading…
Reference in new issue