reactor test
This commit is contained in:
		
							parent
							
								
									d1c89727dc
								
							
						
					
					
						commit
						0ecc5c815e
					
				
							
								
								
									
										63
									
								
								ethreact/reactor_test.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										63
									
								
								ethreact/reactor_test.go
									
									
									
									
									
										Normal file
									
								
							| @ -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
	
	Block a user