|
| 1 | +package assert |
| 2 | + |
| 3 | +import "testing" |
| 4 | + |
| 5 | +type testStruct struct { |
| 6 | + v int |
| 7 | +} |
| 8 | + |
| 9 | +func TestEqualAndNotEqual(t *testing.T) { |
| 10 | + mockT := new(testing.T) |
| 11 | + assertion := New(mockT) |
| 12 | + |
| 13 | + testEqualAndNotEqual(t, assertion, 1, 1, true) |
| 14 | + testEqualAndNotEqual(t, assertion, 1, 2, false) |
| 15 | + testEqualAndNotEqual(t, assertion, 1, 1.0, false) |
| 16 | + testEqualAndNotEqual(t, assertion, 1, "1", false) |
| 17 | + testEqualAndNotEqual(t, assertion, 1, '1', false) |
| 18 | + testEqualAndNotEqual(t, assertion, 1, []int{1}, false) |
| 19 | + testEqualAndNotEqual(t, assertion, []int{1}, []int{1}, true) |
| 20 | + |
| 21 | + obj1 := testStruct{v: 1} |
| 22 | + obj2 := testStruct{v: 1} |
| 23 | + |
| 24 | + testEqualAndNotEqual(t, assertion, obj1, obj2, true) |
| 25 | + testEqualAndNotEqual(t, assertion, obj1, &obj2, false) |
| 26 | + testEqualAndNotEqual(t, assertion, &obj1, &obj2, true) |
| 27 | + |
| 28 | + obj2.v = 2 |
| 29 | + testEqualAndNotEqual(t, assertion, obj1, obj2, false) |
| 30 | + testEqualAndNotEqual(t, assertion, &obj1, &obj2, false) |
| 31 | +} |
| 32 | + |
| 33 | +func testEqualAndNotEqual(t *testing.T, assertion *Assertion, v1, v2 any, isEqual bool) { |
| 34 | + err := assertion.Equal(v1, v2) |
| 35 | + if isEqual && err != nil { |
| 36 | + t.Errorf("Equal(%v, %v) = %v, want = nil", v1, v2, err) |
| 37 | + } else if !isEqual && err == nil { |
| 38 | + t.Errorf("Equal(%v, %v) = nil, want = error", v1, v2) |
| 39 | + } |
| 40 | + |
| 41 | + err = assertion.NotEqual(v1, v2) |
| 42 | + if isEqual && err == nil { |
| 43 | + t.Errorf("NotEqual(%v, %v) = nil, want = error", v1, v2) |
| 44 | + } else if !isEqual && err != nil { |
| 45 | + t.Errorf("NotEqual(%v, %v) = %v, want = nil", v1, v2, err) |
| 46 | + } |
| 47 | +} |
0 commit comments