copy_test.go 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. package buf_test
  2. import (
  3. "crypto/rand"
  4. "testing"
  5. "github.com/golang/mock/gomock"
  6. "v2ray.com/core/common/buf"
  7. "v2ray.com/core/common/errors"
  8. "v2ray.com/core/testing/mocks"
  9. )
  10. func TestReadError(t *testing.T) {
  11. mockCtl := gomock.NewController(t)
  12. defer mockCtl.Finish()
  13. mockReader := mocks.NewReader(mockCtl)
  14. mockReader.EXPECT().Read(gomock.Any()).Return(0, errors.New("error"))
  15. err := buf.Copy(buf.NewReader(mockReader), buf.Discard)
  16. if err == nil {
  17. t.Fatal("expected error, but nil")
  18. }
  19. if !buf.IsReadError(err) {
  20. t.Error("expected to be ReadError, but not")
  21. }
  22. if err.Error() != "error" {
  23. t.Fatal("unexpected error message: ", err.Error())
  24. }
  25. }
  26. func TestWriteError(t *testing.T) {
  27. mockCtl := gomock.NewController(t)
  28. defer mockCtl.Finish()
  29. mockWriter := mocks.NewWriter(mockCtl)
  30. mockWriter.EXPECT().Write(gomock.Any()).Return(0, errors.New("error"))
  31. err := buf.Copy(buf.NewReader(rand.Reader), buf.NewWriter(mockWriter))
  32. if err == nil {
  33. t.Fatal("expected error, but nil")
  34. }
  35. if !buf.IsWriteError(err) {
  36. t.Error("expected to be WriteError, but not")
  37. }
  38. if err.Error() != "error" {
  39. t.Fatal("unexpected error message: ", err.Error())
  40. }
  41. }