xref: /aosp_15_r20/external/golang-protobuf/internal/errors/errors_test.go (revision 1c12ee1efe575feb122dbf939ff15148a3b3e8f2)
1// Copyright 2018 The Go Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style
3// license that can be found in the LICENSE file.
4
5package errors
6
7import (
8	"errors"
9	"strings"
10	"testing"
11)
12
13func TestErrors(t *testing.T) {
14	var sentinel = New("sentinel")
15	var foreign = errors.New("foreign")
16	for _, test := range []struct {
17		what     string
18		err      error
19		wantText string
20		is       []error
21		isNot    []error
22	}{{
23		what:     `New("abc")`,
24		err:      New("abc"),
25		wantText: "abc",
26	}, {
27		what:     `New("%v", sentinel)`,
28		err:      New("%v", sentinel),
29		wantText: "sentinel",
30		isNot:    []error{sentinel},
31	}, {
32		what:     `Wrap(sentinel, "%v", "text")`,
33		err:      Wrap(sentinel, "%v", "text"),
34		wantText: "text: sentinel",
35		is:       []error{sentinel},
36	}, {
37		what:     `New("%v", foreign)`,
38		err:      New("%v", foreign),
39		wantText: "foreign",
40		isNot:    []error{foreign},
41	}, {
42		what:     `Wrap(foreign, "%v", "text")`,
43		err:      Wrap(foreign, "%v", "text"),
44		wantText: "text: foreign",
45		is:       []error{foreign},
46	}} {
47		if got, want := test.err.Error(), prefix; !strings.HasPrefix(got, want) {
48			t.Errorf("%v.Error() = %q, want prefix %q", test.what, got, want)
49		}
50		if got, want := test.err.Error(), prefix+test.wantText; got != want {
51			t.Errorf("%v.Error() = %q, want %q", test.what, got, want)
52		}
53		if got, want := Is(test.err, Error), true; got != want {
54			t.Errorf("errors.Is(%v, errors.Error) = %v, want %v", test.what, got, want)
55		}
56		for _, err := range test.is {
57			if got, want := Is(test.err, err), true; got != want {
58				t.Errorf("errors.Is(%v, %v) = %v, want %v", test.what, err, got, want)
59			}
60		}
61		for _, err := range test.isNot {
62			if got, want := Is(test.err, err), false; got != want {
63				t.Errorf("errors.Is(%v, %v) = %v, want %v", test.what, err, got, want)
64			}
65		}
66	}
67}
68