Ver código fonte

add errors.Is tests

Aneurin Barker Snook 1 ano atrás
pai
commit
ec541df476
1 arquivos alterados com 48 adições e 0 exclusões
  1. 48 0
      error_test.go

+ 48 - 0
error_test.go

@@ -77,6 +77,54 @@ var errorTestCases = []ErrorTestCase{
 	},
 }
 
+func TestErrorIs(t *testing.T) {
+	type TestCase struct {
+		Err    error
+		Target error
+		Is     bool
+	}
+
+	testCases := []TestCase{
+		// Is any REST API error
+		{Err: Err, Target: Err, Is: true},
+		{Err: ErrNotFound, Target: Err, Is: true},
+		{Err: ErrBadGateway, Target: Err, Is: true},
+
+		// Is specific REST API error
+		{Err: ErrNotFound, Target: ErrNotFound, Is: true},
+		{Err: ErrBadGateway, Target: ErrBadGateway, Is: true},
+
+		// Is not specific REST API error
+		{Err: Err, Target: ErrNotFound},
+		{Err: Err, Target: ErrBadGateway},
+		{Err: ErrPermanentRedirect, Target: ErrNotFound},
+		{Err: ErrGatewayTimeout, Target: ErrBadGateway},
+
+		// Is not any other error
+		{Err: ErrNotFound, Target: errors.New("Not Found")},
+		{Err: ErrBadGateway, Target: errors.New("Bad Gateway")},
+
+		// Any other error is not a REST API Error
+		{Err: errors.New("Not Found"), Target: Err},
+		{Err: errors.New("Not Found"), Target: ErrNotFound},
+		{Err: errors.New("Bad Gateway"), Target: ErrBadGateway},
+	}
+
+	for i, tc := range testCases {
+		t.Logf("(%d) Testing %v against %v", i, tc.Err, tc.Target)
+
+		if errors.Is(tc.Err, tc.Target) {
+			if !tc.Is {
+				t.Errorf("%v should not equal %v", tc.Err, tc.Target)
+			}
+		} else {
+			if tc.Is {
+				t.Errorf("%v should equal %v", tc.Err, tc.Target)
+			}
+		}
+	}
+}
+
 func TestErrorWrite(t *testing.T) {
 	for i, tc := range errorTestCases {
 		t.Logf("(%d) Testing %v", i, tc.Input)