Files
version/list_test.go
T
Aneurin Barker Snook e69de8b117 add version.List
2024-07-11 22:21:19 +01:00

50 lines
1.2 KiB
Go

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)
}
}
}