fox/safeChan/safeChan_test.go
2025-05-25 20:02:15 +08:00

44 lines
610 B
Go

package safeChan
import (
"testing"
)
func TestSafeChan(t *testing.T) {
ch := NewSafeChan[string](12)
// go func() {
_ = ch.Write("hello")
t.Log("write hello. 剩余数量:", ch.Size())
// }()
ch.Close()
if err := ch.Write("zzz"); err != nil {
t.Log("write zzz err.", err)
}
breakNum := 0
for {
select {
case <-ch.ctx.Done():
t.Log("done")
breakNum++
case v, ok := <-ch.Reader():
if ok {
t.Log("read", v, " 剩余数量:", ch.Size())
} else {
t.Log("break")
breakNum++
}
default:
t.Log("panic")
breakNum++
}
if breakNum > 10 {
break
}
}
}