package signal_test import ( "context" "errors" "testing" . "v2ray.com/core/common/signal" . "v2ray.com/ext/assert" ) func TestErrorOrFinish2_Error(t *testing.T) { assert := With(t) c1 := make(chan error, 1) c2 := make(chan error, 2) c := make(chan error, 1) go func() { c <- ErrorOrFinish2(context.Background(), c1, c2) }() c1 <- errors.New("test") err := <-c assert(err.Error(), Equals, "test") } func TestErrorOrFinish2_Error2(t *testing.T) { assert := With(t) c1 := make(chan error, 1) c2 := make(chan error, 2) c := make(chan error, 1) go func() { c <- ErrorOrFinish2(context.Background(), c1, c2) }() c2 <- errors.New("test") err := <-c assert(err.Error(), Equals, "test") } func TestErrorOrFinish2_NoneError(t *testing.T) { assert := With(t) c1 := make(chan error, 1) c2 := make(chan error, 2) c := make(chan error, 1) go func() { c <- ErrorOrFinish2(context.Background(), c1, c2) }() close(c1) select { case <-c: t.Fail() default: } close(c2) err := <-c assert(err, IsNil) } func TestErrorOrFinish2_NoneError2(t *testing.T) { assert := With(t) c1 := make(chan error, 1) c2 := make(chan error, 2) c := make(chan error, 1) go func() { c <- ErrorOrFinish2(context.Background(), c1, c2) }() close(c2) select { case <-c: t.Fail() default: } close(c1) err := <-c assert(err, IsNil) }