github.com/go-asm/go@v1.21.1-0.20240213172139-40c5ead50c48/cmd/compile/test/testdata/chan_test.go (about) 1 // Copyright 2015 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 // chan.go tests chan operations. 6 package main 7 8 import "testing" 9 10 //go:noinline 11 func lenChan_ssa(v chan int) int { 12 return len(v) 13 } 14 15 //go:noinline 16 func capChan_ssa(v chan int) int { 17 return cap(v) 18 } 19 20 func testLenChan(t *testing.T) { 21 22 v := make(chan int, 10) 23 v <- 1 24 v <- 1 25 v <- 1 26 27 if want, got := 3, lenChan_ssa(v); got != want { 28 t.Errorf("expected len(chan) = %d, got %d", want, got) 29 } 30 } 31 32 func testLenNilChan(t *testing.T) { 33 34 var v chan int 35 if want, got := 0, lenChan_ssa(v); got != want { 36 t.Errorf("expected len(nil) = %d, got %d", want, got) 37 } 38 } 39 40 func testCapChan(t *testing.T) { 41 42 v := make(chan int, 25) 43 44 if want, got := 25, capChan_ssa(v); got != want { 45 t.Errorf("expected cap(chan) = %d, got %d", want, got) 46 } 47 } 48 49 func testCapNilChan(t *testing.T) { 50 51 var v chan int 52 if want, got := 0, capChan_ssa(v); got != want { 53 t.Errorf("expected cap(nil) = %d, got %d", want, got) 54 } 55 } 56 57 func TestChan(t *testing.T) { 58 testLenChan(t) 59 testLenNilChan(t) 60 61 testCapChan(t) 62 testCapNilChan(t) 63 }