diff options
Diffstat (limited to 'test/closedchan.go')
-rw-r--r-- | test/closedchan.go | 98 |
1 files changed, 49 insertions, 49 deletions
diff --git a/test/closedchan.go b/test/closedchan.go index 4ab12c775..c7c759be3 100644 --- a/test/closedchan.go +++ b/test/closedchan.go @@ -12,13 +12,13 @@ package main type Chan interface { - Send(int); - Nbsend(int) bool; - Recv() int; - Nbrecv() (int, bool); - Close(); - Closed() bool; - Impl() string; + Send(int) + Nbsend(int) bool + Recv() int + Nbrecv() (int, bool) + Close() + Closed() bool + Impl() string } // direct channel operations @@ -28,7 +28,7 @@ func (c XChan) Send(x int) { } func (c XChan) Nbsend(x int) bool { - return c <- x; + return c <- x } func (c XChan) Recv() int { @@ -36,8 +36,8 @@ func (c XChan) Recv() int { } func (c XChan) Nbrecv() (int, bool) { - x, ok := <-c; - return x, ok; + x, ok := <-c + return x, ok } func (c XChan) Close() { @@ -63,29 +63,29 @@ func (c SChan) Send(x int) { func (c SChan) Nbsend(x int) bool { select { case c <- x: - return true; + return true default: - return false; + return false } - panic("nbsend"); + panic("nbsend") } func (c SChan) Recv() int { select { case x := <-c: - return x; + return x } - panic("recv"); + panic("recv") } func (c SChan) Nbrecv() (int, bool) { select { case x := <-c: - return x, true; + return x, true default: - return 0, false; + return 0, false } - panic("nbrecv"); + panic("nbrecv") } func (c SChan) Close() { @@ -97,101 +97,101 @@ func (c SChan) Closed() bool { } func (c SChan) Impl() string { - return "(select)"; + return "(select)" } func test1(c Chan) { // not closed until the close signal (a zero value) has been received. if c.Closed() { - println("test1: Closed before Recv zero:", c.Impl()); + println("test1: Closed before Recv zero:", c.Impl()) } for i := 0; i < 3; i++ { // recv a close signal (a zero value) if x := c.Recv(); x != 0 { - println("test1: recv on closed got non-zero:", x, c.Impl()); + println("test1: recv on closed got non-zero:", x, c.Impl()) } // should now be closed. if !c.Closed() { - println("test1: not closed after recv zero", c.Impl()); + println("test1: not closed after recv zero", c.Impl()) } // should work with ,ok: received a value without blocking, so ok == true. - x, ok := c.Nbrecv(); + x, ok := c.Nbrecv() if !ok { - println("test1: recv on closed got not ok", c.Impl()); + println("test1: recv on closed got not ok", c.Impl()) } if x != 0 { - println("test1: recv ,ok on closed got non-zero:", x, c.Impl()); + println("test1: recv ,ok on closed got non-zero:", x, c.Impl()) } } // send should work with ,ok too: sent a value without blocking, so ok == true. - ok := c.Nbsend(1); + ok := c.Nbsend(1) if !ok { - println("test1: send on closed got not ok", c.Impl()); + println("test1: send on closed got not ok", c.Impl()) } // but the value should have been discarded. if x := c.Recv(); x != 0 { - println("test1: recv on closed got non-zero after send on closed:", x, c.Impl()); + println("test1: recv on closed got non-zero after send on closed:", x, c.Impl()) } // similarly Send. - c.Send(2); + c.Send(2) if x := c.Recv(); x != 0 { - println("test1: recv on closed got non-zero after send on closed:", x, c.Impl()); + println("test1: recv on closed got non-zero after send on closed:", x, c.Impl()) } } func testasync1(c Chan) { // not closed until the close signal (a zero value) has been received. if c.Closed() { - println("testasync1: Closed before Recv zero:", c.Impl()); + println("testasync1: Closed before Recv zero:", c.Impl()) } // should be able to get the last value via Recv if x := c.Recv(); x != 1 { - println("testasync1: Recv did not get 1:", x, c.Impl()); + println("testasync1: Recv did not get 1:", x, c.Impl()) } - test1(c); + test1(c) } func testasync2(c Chan) { // not closed until the close signal (a zero value) has been received. if c.Closed() { - println("testasync2: Closed before Recv zero:", c.Impl()); + println("testasync2: Closed before Recv zero:", c.Impl()) } // should be able to get the last value via Nbrecv if x, ok := c.Nbrecv(); !ok || x != 1 { - println("testasync2: Nbrecv did not get 1, true:", x, ok, c.Impl()); + println("testasync2: Nbrecv did not get 1, true:", x, ok, c.Impl()) } - test1(c); + test1(c) } func closedsync() chan int { - c := make(chan int); - close(c); - return c; + c := make(chan int) + close(c) + return c } func closedasync() chan int { - c := make(chan int, 2); - c <- 1; - close(c); - return c; + c := make(chan int, 2) + c <- 1 + close(c) + return c } func main() { - test1(XChan(closedsync())); - test1(SChan(closedsync())); + test1(XChan(closedsync())) + test1(SChan(closedsync())) - testasync1(XChan(closedasync())); - testasync1(SChan(closedasync())); - testasync2(XChan(closedasync())); - testasync2(SChan(closedasync())); + testasync1(XChan(closedasync())) + testasync1(SChan(closedasync())) + testasync2(XChan(closedasync())) + testasync2(SChan(closedasync())) } |