|
@@ -0,0 +1,49 @@
|
|
|
+package version
|
|
|
+
|
|
|
+import (
|
|
|
+ "sort"
|
|
|
+ "testing"
|
|
|
+)
|
|
|
+
|
|
|
+func TestListSort(t *testing.T) {
|
|
|
+ type TestCase struct {
|
|
|
+ Input List
|
|
|
+ Expected List
|
|
|
+ }
|
|
|
+
|
|
|
+ testCases := []TestCase{
|
|
|
+ {
|
|
|
+ Input: List{MustParse("1.1.1"), MustParse("1.0.1"), MustParse("1.1.0"), MustParse("1.0.0")},
|
|
|
+ Expected: List{MustParse("1.0.0"), MustParse("1.0.1"), MustParse("1.1.0"), MustParse("1.1.1")},
|
|
|
+ },
|
|
|
+ {
|
|
|
+ Input: List{MustParse("4.0.0"), MustParse("3.0.0"), MustParse("2.0.0"), MustParse("1.0.0")},
|
|
|
+ Expected: List{MustParse("1.0.0"), MustParse("2.0.0"), MustParse("3.0.0"), MustParse("4.0.0")},
|
|
|
+ },
|
|
|
+ {
|
|
|
+ Input: List{MustParse("2.0.4"), MustParse("1.2.4"), MustParse("1.2.3"), MustParse("1.3.1")},
|
|
|
+ Expected: List{MustParse("1.2.3"), MustParse("1.2.4"), MustParse("1.3.1"), MustParse("2.0.4")},
|
|
|
+ },
|
|
|
+ }
|
|
|
+
|
|
|
+ for i, testCase := range testCases {
|
|
|
+ actual := List{}
|
|
|
+ actual = append(actual, testCase.Input...)
|
|
|
+
|
|
|
+ sort.Stable(actual)
|
|
|
+
|
|
|
+ ok := true
|
|
|
+ for j, v := range actual {
|
|
|
+ expected := testCase.Expected[j]
|
|
|
+ cmp := v.Compare(expected)
|
|
|
+ if cmp != 0 {
|
|
|
+ ok = false
|
|
|
+ t.Errorf("test %d failed at position %d (expected %s, got %s)", i, j, expected, actual)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if ok {
|
|
|
+ t.Logf("test %d passed", i)
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|