oktopus/backend/services/mtp/stomp/server/client/channel_test.go

89 lines
1.3 KiB
Go

package client
import (
. "gopkg.in/check.v1"
)
// Test suite for testing that channels work the way I expect.
type ChannelSuite struct{}
var _ = Suite(&ChannelSuite{})
func (s *ChannelSuite) TestChannelWhenClosed(c *C) {
ch := make(chan int, 10)
ch <- 1
ch <- 2
select {
case i, ok := <-ch:
c.Assert(i, Equals, 1)
c.Assert(ok, Equals, true)
default:
c.Error("expected value on channel")
}
select {
case i := <-ch:
c.Assert(i, Equals, 2)
default:
c.Error("expected value on channel")
}
select {
case _ = <-ch:
c.Error("not expecting anything on the channel")
default:
}
ch <- 3
close(ch)
select {
case i := <-ch:
c.Assert(i, Equals, 3)
default:
c.Error("expected value on channel")
}
select {
case _, ok := <-ch:
c.Assert(ok, Equals, false)
default:
c.Error("expected value on channel")
}
select {
case _, ok := <-ch:
c.Assert(ok, Equals, false)
default:
c.Error("expected value on channel")
}
}
func (s *ChannelSuite) TestMultipleChannels(c *C) {
ch1 := make(chan int, 10)
ch2 := make(chan string, 10)
ch1 <- 1
select {
case i, ok := <-ch1:
c.Assert(i, Equals, 1)
c.Assert(ok, Equals, true)
case _ = <-ch2:
default:
c.Error("expected value on channel")
}
select {
case _ = <-ch1:
c.Error("not expected")
case _ = <-ch2:
c.Error("not expected")
default:
}
}