gobot.io/x/gobot@v1.16.0/eventer_test.go (about)

     1  package gobot
     2  
     3  import (
     4  	"testing"
     5  	"time"
     6  
     7  	"gobot.io/x/gobot/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  }