package errors import ( "errors" "fmt" "testing" ) func TestErrorsMatch(t *testing.T) { s := &StatusError{Code: 1} st := &StatusError{Code: 2} if errors.Is(s, st) { t.Errorf("error is not match: %+v -> %+v", s, st) } s.Code = 1 st.Code = 1 if !errors.Is(s, st) { t.Errorf("error is not match: %+v -> %+v", s, st) } s.Reason = "test_reason" s.Reason = "test_reason" if !errors.Is(s, st) { t.Errorf("error is not match: %+v -> %+v", s, st) } if Reason(s) != "test_reason" { t.Errorf("error is not match: %+v -> %+v", s, st) } } func TestErrorIs(t *testing.T) { err1 := &StatusError{Code: 1} t.Log(err1) err2 := fmt.Errorf("wrap : %w", err1) t.Log(err2) if !(errors.Is(err2, err1)) { t.Errorf("error is not match: a: %v b: %v ", err2, err1) } } func TestErrorAs(t *testing.T) { err1 := &StatusError{Code: 1} err2 := fmt.Errorf("wrap : %w", err1) err3 := new(StatusError) if !errors.As(err2, &err3) { t.Errorf("error is not match: %v", err2) } }