12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- 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)
- }
- }
- }
- func TestList_Match(t *testing.T) {
- type TestCase struct {
- Input List
- Constraint *Constraint
- Expected List
- }
- testCases := []TestCase{
- {
- Input: List{MustParse("1.0.0"), MustParse("1.1.0"), MustParse("2.0.2"), MustParse("3.4.5")},
- Expected: List{MustParse("1.0.0"), MustParse("1.1.0"), MustParse("2.0.2"), MustParse("3.4.5")},
- },
- {
- Input: List{MustParse("1.0.0"), MustParse("1.1.0"), MustParse("2.0.2"), MustParse("3.4.5")},
- Constraint: &Constraint{Gt: MustParse("1.0.0")},
- Expected: List{MustParse("1.1.0"), MustParse("2.0.2"), MustParse("3.4.5")},
- },
- {
- Input: List{MustParse("1.0.0"), MustParse("1.1.0"), MustParse("2.0.2"), MustParse("3.4.5")},
- Constraint: &Constraint{Lt: MustParse("3.0.0")},
- Expected: List{MustParse("1.0.0"), MustParse("1.1.0"), MustParse("2.0.2")},
- },
- {
- Input: List{MustParse("1.0.0"), MustParse("1.1.0"), MustParse("2.0.2"), MustParse("3.4.5")},
- Constraint: &Constraint{Gte: MustParse("2.0.2")},
- Expected: List{MustParse("2.0.2"), MustParse("3.4.5")},
- },
- }
- for i, testCase := range testCases {
- actual := testCase.Input.Match(testCase.Constraint)
- 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)
- }
- }
- }
|