gobot.io/x/gobot/v2@v2.1.0/eventer_test.go (about) 1 package gobot 2 3 import ( 4 "testing" 5 "time" 6 7 "gobot.io/x/gobot/v2/gobottest" 8 ) 9 10 func TestEventerAddEvent(t *testing.T) { 11 e := NewEventer() 12 e.AddEvent("test") 13 14 if _, ok := e.Events()["test"]; !ok { 15 t.Errorf("Could not add event to list of Event names") 16 } 17 gobottest.Assert(t, e.Event("test"), "test") 18 } 19 20 func TestEventerDeleteEvent(t *testing.T) { 21 e := NewEventer() 22 e.AddEvent("test1") 23 e.DeleteEvent("test1") 24 25 if _, ok := e.Events()["test1"]; ok { 26 t.Errorf("Could not add delete event from list of Event names") 27 } 28 } 29 30 func TestEventerOn(t *testing.T) { 31 e := NewEventer() 32 e.AddEvent("test") 33 34 sem := make(chan bool) 35 e.On("test", func(data interface{}) { 36 sem <- true 37 }) 38 39 go func() { 40 e.Publish("test", true) 41 }() 42 43 select { 44 case <-sem: 45 case <-time.After(10 * time.Millisecond): 46 t.Errorf("On was not called") 47 } 48 } 49 50 func TestEventerOnce(t *testing.T) { 51 e := NewEventer() 52 e.AddEvent("test") 53 54 sem := make(chan bool) 55 e.Once("test", func(data interface{}) { 56 sem <- true 57 }) 58 59 go func() { 60 e.Publish("test", true) 61 }() 62 63 select { 64 case <-sem: 65 case <-time.After(10 * time.Millisecond): 66 t.Errorf("Once was not called") 67 } 68 69 go func() { 70 e.Publish("test", true) 71 }() 72 73 select { 74 case <-sem: 75 t.Errorf("Once was called twice") 76 case <-time.After(10 * time.Millisecond): 77 } 78 }