1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98
|
package retrier
import (
"errors"
"testing"
)
var (
errFoo = errors.New("FOO")
errBar = errors.New("BAR")
errBaz = errors.New("BAZ")
)
func TestDefaultClassifier(t *testing.T) {
c := DefaultClassifier{}
if c.Classify(nil) != Succeed {
t.Error("default misclassified nil")
}
if c.Classify(errFoo) != Retry {
t.Error("default misclassified foo")
}
if c.Classify(errBar) != Retry {
t.Error("default misclassified bar")
}
if c.Classify(errBaz) != Retry {
t.Error("default misclassified baz")
}
}
type wrappedErr struct {
error
}
func (w wrappedErr) Error() string {
return "there's an error happening during X: " + w.Error()
}
func (w wrappedErr) Unwrap() error {
return w.error
}
func TestWhitelistClassifier(t *testing.T) {
c := WhitelistClassifier{errFoo, errBar}
if c.Classify(nil) != Succeed {
t.Error("whitelist misclassified nil")
}
if c.Classify(errFoo) != Retry {
t.Error("whitelist misclassified foo")
}
if c.Classify(errBar) != Retry {
t.Error("whitelist misclassified bar")
}
if c.Classify(errBaz) != Fail {
t.Error("whitelist misclassified baz")
}
if c.Classify(wrappedErr{error: errFoo}) != Retry {
t.Error("whitelist misclassified foo")
}
if c.Classify(wrappedErr{error: errBar}) != Retry {
t.Error("whitelist misclassified bar")
}
if c.Classify(wrappedErr{error: errBaz}) != Fail {
t.Error("whitelist misclassified baz")
}
}
func TestBlacklistClassifier(t *testing.T) {
c := BlacklistClassifier{errBar}
if c.Classify(nil) != Succeed {
t.Error("blacklist misclassified nil")
}
if c.Classify(errFoo) != Retry {
t.Error("blacklist misclassified foo")
}
if c.Classify(errBar) != Fail {
t.Error("blacklist misclassified bar")
}
if c.Classify(errBaz) != Retry {
t.Error("blacklist misclassified baz")
}
if c.Classify(wrappedErr{error: errFoo}) != Retry {
t.Error("blacklist misclassified foo")
}
if c.Classify(wrappedErr{error: errBar}) != Fail {
t.Error("blacklist misclassified bar")
}
if c.Classify(wrappedErr{error: errBaz}) != Retry {
t.Error("blacklist misclassified baz")
}
}
|