github.com/woremacx/kocha@v0.7.1-0.20150731103243-a5889322afc9/event/memory/queue_test.go (about)

     1  package memory
     2  
     3  import (
     4  	"testing"
     5  	"time"
     6  
     7  	"github.com/woremacx/kocha/event"
     8  )
     9  
    10  func TestEventQueue(t *testing.T) {
    11  	e := event.New()
    12  	if err := e.RegisterQueue("memory", &EventQueue{}); err != nil {
    13  		t.Fatal(err)
    14  	}
    15  	e.Start()
    16  	defer e.Stop()
    17  
    18  	handlerName := "testEventQueueHandler"
    19  	called := make(chan struct{})
    20  	if err := e.AddHandler(handlerName, "memory", func(args ...interface{}) error {
    21  		called <- struct{}{}
    22  		return nil
    23  	}); err != nil {
    24  		t.Fatal(err)
    25  	}
    26  	if err := e.Trigger(handlerName); err != nil {
    27  		t.Errorf("event.Trigger(%q) => %#v, want nil", handlerName, err)
    28  	}
    29  	select {
    30  	case <-called:
    31  	case <-time.After(3 * time.Second):
    32  		t.Errorf("event.Trigger(%q) has try to call handler but hasn't been called within 3 seconds", handlerName)
    33  	}
    34  }