github.com/TIBCOSoftware/flogo-lib@v0.5.9/engine/channels/channels_test.go (about) 1 package channels 2 3 import ( 4 "testing" 5 "github.com/stretchr/testify/assert" 6 "time" 7 "fmt" 8 ) 9 10 func TestNew_Started(t *testing.T) { 11 channels = map[string]*channelImpl{} 12 active = true 13 channel, err := New("test1", 5) 14 assert.Nil(t, channel) 15 assert.NotNil(t, err) 16 } 17 18 func TestNew(t *testing.T) { 19 channels = map[string]*channelImpl{} 20 active = false 21 channel, err := New("test1", 5) 22 assert.Nil(t, err) 23 assert.NotNil(t, channel) 24 } 25 26 func TestNewDup(t *testing.T) { 27 channels = map[string]*channelImpl{} 28 active = false 29 channel, err := New("test1", 5) 30 assert.Nil(t, err) 31 assert.NotNil(t, channel) 32 channel, err = New("test1", 5) 33 assert.Nil(t, channel) 34 assert.NotNil(t, err) 35 } 36 37 func TestChannel_Name(t *testing.T) { 38 channels = map[string]*channelImpl{} 39 active = false 40 channel, err := New("test1", 5) 41 assert.Nil(t, err) 42 cImpl := channel.(*channelImpl) 43 assert.Equal(t, "test1", cImpl.name) 44 } 45 46 func TestStart(t *testing.T) { 47 channels = map[string]*channelImpl{} 48 channel, err := New("test1", 5) 49 assert.Nil(t, err) 50 assert.NotNil(t, channel) 51 Start() 52 defer Stop() 53 assert.True(t, active) 54 55 channel2, err2 := New("test2", 5) 56 assert.NotNil(t, err2) 57 assert.Nil(t, channel2) 58 59 cImpl := channel.(*channelImpl) 60 assert.True(t, cImpl.active) 61 } 62 63 64 func TestChannel_Publish(t *testing.T) { 65 channels = map[string]*channelImpl{} 66 channel, err := New("test1", 1) 67 assert.Nil(t, err) 68 assert.NotNil(t, channel) 69 70 channel.Publish(1) 71 72 cImpl := channel.(*channelImpl) 73 74 select { 75 case msg := <-cImpl.ch: 76 assert.Equal(t,1,msg ) 77 default: 78 assert.Fail(t, "no message received") 79 } 80 } 81 82 func TestChannel_PublishNoWait(t *testing.T) { 83 channels = map[string]*channelImpl{} 84 channel, err := New("test1", 1) 85 assert.Nil(t, err) 86 assert.NotNil(t, channel) 87 88 channel.Publish(1) 89 sent := channel.PublishNoWait(2) 90 91 assert.False(t, sent) 92 } 93 94 func TestChannel_AddListenerStarted(t *testing.T) { 95 channels = map[string]*channelImpl{} 96 channel, err := New("test1", 1) 97 assert.Nil(t, err) 98 assert.NotNil(t, channel) 99 100 cImpl := channel.(*channelImpl) 101 cImpl.Start() 102 103 err = cImpl.RegisterCallback(func(msg interface{}) { 104 //dummy 105 }) 106 assert.NotNil(t, err) 107 } 108 109 110 func TestChannel_AddListener(t *testing.T) { 111 channels = map[string]*channelImpl{} 112 channel, err := New("test1", 1) 113 assert.Nil(t, err) 114 assert.NotNil(t, channel) 115 116 cImpl := channel.(*channelImpl) 117 118 err = cImpl.RegisterCallback(func(msg interface{}) { 119 //dummy 120 }) 121 assert.Equal(t, 1, len(cImpl.callbacks)) 122 } 123 124 type cbTester struct { 125 called int 126 val interface{} 127 } 128 129 func (cbt *cbTester)onMessage(msg interface{}) { 130 cbt.called++ 131 cbt.val = msg 132 fmt.Printf("HERE\n") 133 } 134 135 136 func TestChannel_Callback(t *testing.T) { 137 channels = map[string]*channelImpl{} 138 channel, err := New("test1", 1) 139 assert.Nil(t, err) 140 assert.NotNil(t, channel) 141 142 cImpl := channel.(*channelImpl) 143 144 cbt := &cbTester{} 145 err = cImpl.RegisterCallback(cbt.onMessage) 146 Start() 147 148 channel.Publish(22) 149 time.Sleep(100 *time.Millisecond) 150 assert.Equal(t, 1, cbt.called) 151 assert.Equal(t, 22, cbt.val) 152 }