exec_test.go 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. package signal_test
  2. import (
  3. "context"
  4. "errors"
  5. "testing"
  6. . "v2ray.com/core/common/signal"
  7. . "v2ray.com/ext/assert"
  8. )
  9. func TestErrorOrFinish2_Error(t *testing.T) {
  10. assert := With(t)
  11. c1 := make(chan error, 1)
  12. c2 := make(chan error, 2)
  13. c := make(chan error, 1)
  14. go func() {
  15. c <- ErrorOrFinish2(context.Background(), c1, c2)
  16. }()
  17. c1 <- errors.New("test")
  18. err := <-c
  19. assert(err.Error(), Equals, "test")
  20. }
  21. func TestErrorOrFinish2_Error2(t *testing.T) {
  22. assert := With(t)
  23. c1 := make(chan error, 1)
  24. c2 := make(chan error, 2)
  25. c := make(chan error, 1)
  26. go func() {
  27. c <- ErrorOrFinish2(context.Background(), c1, c2)
  28. }()
  29. c2 <- errors.New("test")
  30. err := <-c
  31. assert(err.Error(), Equals, "test")
  32. }
  33. func TestErrorOrFinish2_NoneError(t *testing.T) {
  34. assert := With(t)
  35. c1 := make(chan error, 1)
  36. c2 := make(chan error, 2)
  37. c := make(chan error, 1)
  38. go func() {
  39. c <- ErrorOrFinish2(context.Background(), c1, c2)
  40. }()
  41. close(c1)
  42. select {
  43. case <-c:
  44. t.Fail()
  45. default:
  46. }
  47. close(c2)
  48. err := <-c
  49. assert(err, IsNil)
  50. }
  51. func TestErrorOrFinish2_NoneError2(t *testing.T) {
  52. assert := With(t)
  53. c1 := make(chan error, 1)
  54. c2 := make(chan error, 2)
  55. c := make(chan error, 1)
  56. go func() {
  57. c <- ErrorOrFinish2(context.Background(), c1, c2)
  58. }()
  59. close(c2)
  60. select {
  61. case <-c:
  62. t.Fail()
  63. default:
  64. }
  65. close(c1)
  66. err := <-c
  67. assert(err, IsNil)
  68. }