Files
gubgub/wrappers_test.go

56 lines
958 B
Go

package gubgub
import (
"testing"
"time"
"github.com/stretchr/testify/assert"
)
func TestBuffered_Once(t *testing.T) {
feedback := make(chan int, 1)
s := Buffered(Once(func(i int) {
feedback <- i // buffered channel means no blocking
}))
assert.True(t, s(1234))
timeout := testTimer(t, time.Second)
select {
case i := <-feedback:
assert.Equal(t, 1234, i)
case <-timeout.C:
t.Fatalf("expected feedback value by now")
}
assert.False(t, s(4321))
}
func TestBuffered_Forever(t *testing.T) {
const msgCount = 100
feedback := make(chan int)
s := Buffered(Forever(func(i int) {
feedback <- i // unbuffered channel creates choke point (blocks) to force buffering
}))
for i := range msgCount {
assert.True(t, s(i))
}
timeout := testTimer(t, time.Second)
var count int
for count < msgCount {
select {
case <-feedback:
count++
case <-timeout.C:
t.Fatalf("expected %d feedback values by now", msgCount)
}
}
}