diff --git a/assert/assertion_order_test.go b/assert/assertion_order_test.go index e37fdeb..e60c85c 100644 --- a/assert/assertion_order_test.go +++ b/assert/assertion_order_test.go @@ -29,7 +29,7 @@ func TestCompare(t *testing.T) { t.Error("object should be comparable for type " + currCase.cType) } - if resLess != less { + if resLess != compareLess { t.Errorf("object less should be less than greater for type " + currCase.cType) } @@ -38,7 +38,7 @@ func TestCompare(t *testing.T) { t.Error("object are comparable for type " + currCase.cType) } - if resGreater != greater { + if resGreater != compareGreater { t.Errorf("object greater should be greater than less for type " + currCase.cType) } @@ -116,3 +116,84 @@ func TestLessOrEqual(t *testing.T) { t.Error("Greater should return false") } } + +func Test_compareTwoValuesDifferentValuesTypes(t *testing.T) { + mockT := new(testing.T) + + for _, currCase := range []struct { + v1 interface{} + v2 interface{} + compareResult bool + }{ + {v1: 123, v2: "abc"}, + {v1: "abc", v2: 123456}, + {v1: float64(12), v2: "123"}, + {v1: "float(12)", v2: float64(1)}, + } { + compareResult := compareTwoValues(mockT, currCase.v1, currCase.v2, []CompareType{compareLess, compareEqual, compareGreater}, "testFailMessage") + if compareResult { + t.Errorf("Values %s and %s should be different kinds", currCase.v1, currCase.v2) + } + } +} + +func Test_compareTwoValuesNotComparableValues(t *testing.T) { + mockT := new(testing.T) + + type CompareStruct struct { + } + + for _, currCase := range []struct { + v1 interface{} + v2 interface{} + }{ + {v1: CompareStruct{}, v2: CompareStruct{}}, + {v1: map[string]int{}, v2: map[string]int{}}, + {v1: make([]int, 5, 5), v2: make([]int, 5, 5)}, + } { + compareResult := compareTwoValues(mockT, currCase.v1, currCase.v2, []CompareType{compareLess, compareEqual, compareGreater}, "testFailMessage") + if compareResult { + t.Errorf("Values %s and %s should be not comparable", currCase.v1, currCase.v2) + } + } +} + +func Test_compareTwoValuesCrrectCompareResult(t *testing.T) { + mockT := new(testing.T) + + for _, currCase := range []struct { + v1 interface{} + v2 interface{} + compareTypes []CompareType + }{ + {v1: 1, v2: 2, compareTypes: []CompareType{compareLess}}, + {v1: 1, v2: 2, compareTypes: []CompareType{compareLess, compareEqual}}, + {v1: 2, v2: 2, compareTypes: []CompareType{compareGreater, compareEqual}}, + {v1: 2, v2: 2, compareTypes: []CompareType{compareEqual}}, + {v1: 2, v2: 1, compareTypes: []CompareType{compareEqual, compareGreater}}, + {v1: 2, v2: 1, compareTypes: []CompareType{compareGreater}}, + } { + compareResult := compareTwoValues(mockT, currCase.v1, currCase.v2, currCase.compareTypes, "testFailMessage") + if !compareResult { + t.Errorf("Values %d and %d is not compared correctly", currCase.v1, currCase.v2) + } + } +} + +func Test_containsValue(t *testing.T) { + for _, currCase := range []struct { + values []CompareType + value CompareType + result bool + }{ + {values: []CompareType{compareGreater}, value: compareGreater, result: true}, + {values: []CompareType{compareGreater, compareLess}, value: compareGreater, result: true}, + {values: []CompareType{compareGreater, compareLess}, value: compareLess, result: true}, + {values: []CompareType{compareGreater, compareLess}, value: compareEqual, result: false}, + } { + compareResult := containsValue(currCase.values, currCase.value) + if compareResult != currCase.result { + t.Error("Value not in list") + } + } +}