multierror_test.go 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. package multierror
  2. import (
  3. "errors"
  4. "reflect"
  5. "testing"
  6. )
  7. func TestError_Impl(t *testing.T) {
  8. var _ error = new(Error)
  9. }
  10. func TestErrorError_custom(t *testing.T) {
  11. errors := []error{
  12. errors.New("foo"),
  13. errors.New("bar"),
  14. }
  15. fn := func(es []error) string {
  16. return "foo"
  17. }
  18. multi := &Error{Errors: errors, ErrorFormat: fn}
  19. if multi.Error() != "foo" {
  20. t.Fatalf("bad: %s", multi.Error())
  21. }
  22. }
  23. func TestErrorError_default(t *testing.T) {
  24. expected := `2 errors occurred:
  25. * foo
  26. * bar
  27. `
  28. errors := []error{
  29. errors.New("foo"),
  30. errors.New("bar"),
  31. }
  32. multi := &Error{Errors: errors}
  33. if multi.Error() != expected {
  34. t.Fatalf("bad: %s", multi.Error())
  35. }
  36. }
  37. func TestErrorErrorOrNil(t *testing.T) {
  38. err := new(Error)
  39. if err.ErrorOrNil() != nil {
  40. t.Fatalf("bad: %#v", err.ErrorOrNil())
  41. }
  42. err.Errors = []error{errors.New("foo")}
  43. if v := err.ErrorOrNil(); v == nil {
  44. t.Fatal("should not be nil")
  45. } else if !reflect.DeepEqual(v, err) {
  46. t.Fatalf("bad: %#v", v)
  47. }
  48. }
  49. func TestErrorWrappedErrors(t *testing.T) {
  50. errors := []error{
  51. errors.New("foo"),
  52. errors.New("bar"),
  53. }
  54. multi := &Error{Errors: errors}
  55. if !reflect.DeepEqual(multi.Errors, multi.WrappedErrors()) {
  56. t.Fatalf("bad: %s", multi.WrappedErrors())
  57. }
  58. }