12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- //go:build go1.20
- package union
- import (
- "errors"
- "testing"
- "github.com/stretchr/testify/assert"
- )
- var (
- err1 = errors.New("Error 1")
- err2 = errors.New("Error 2")
- err3 = errors.New("Error 3")
- )
- func TestErrorsMap(t *testing.T) {
- es := Errors{
- nil,
- err1,
- err2,
- }
- want := Errors{
- err2,
- }
- got := es.Map(func(e error) error {
- if e == err1 {
- return nil
- }
- return e
- })
- assert.Equal(t, want, got)
- }
- func TestErrorsFilterNil(t *testing.T) {
- es := Errors{
- nil,
- err1,
- nil,
- err2,
- nil,
- }
- want := Errors{
- err1,
- err2,
- }
- got := es.FilterNil()
- assert.Equal(t, want, got)
- }
- func TestErrorsErr(t *testing.T) {
- // Check not all nil case
- es := Errors{
- nil,
- err1,
- nil,
- err2,
- nil,
- }
- want := Errors{
- err1,
- err2,
- }
- got := es.Err()
- // Check all nil case
- assert.Equal(t, want, got)
- es = Errors{
- nil,
- nil,
- nil,
- }
- assert.Nil(t, es.Err())
- }
- func TestErrorsError(t *testing.T) {
- assert.Equal(t, "no error", Errors{}.Error())
- assert.Equal(t, "1 error: Error 1", Errors{err1}.Error())
- assert.Equal(t, "1 error: nil error", Errors{nil}.Error())
- assert.Equal(t, "2 errors: Error 1; Error 2", Errors{err1, err2}.Error())
- }
- func TestErrorsUnwrap(t *testing.T) {
- es := Errors{
- err1,
- err2,
- }
- assert.Equal(t, []error{err1, err2}, es.Unwrap())
- assert.True(t, errors.Is(es, err1))
- assert.True(t, errors.Is(es, err2))
- assert.False(t, errors.Is(es, err3))
- }
|