exec_test.go 1.3 KB

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