github.com/criteo/command-launcher@v0.0.0-20230407142452-fb616f546e98/internal/remote/version_test.go (about) 1 package remote 2 3 import ( 4 "fmt" 5 "sort" 6 "testing" 7 8 "github.com/stretchr/testify/assert" 9 ) 10 11 func TestToString(t *testing.T) { 12 var version defaultVersion 13 err := ParseVersion("1.2.3-test", &version) 14 if err != nil { 15 t.Fail() 16 } 17 18 if version.String() != "1.2.3-test" { 19 t.Fail() 20 } 21 } 22 23 func TestParseVersion(t *testing.T) { 24 var version defaultVersion 25 err := ParseVersion("1.2.3-test", &version) 26 if err != nil { 27 t.Fail() 28 } 29 30 if version.Major != 1 { 31 t.Errorf("Unknow major %d", version.Major) 32 } 33 34 if version.Minor != 2 { 35 t.Errorf("Unknow minor %d", version.Minor) 36 } 37 38 if version.Patch != 3 { 39 t.Errorf("Unknow patch %d", version.Patch) 40 } 41 42 if version.Tag != "test" { 43 t.Errorf("Unknow Tag %s", version.Tag) 44 } 45 } 46 47 func TestParseVersions(t *testing.T) { 48 versions := []string{ 49 "1", 50 "1.2", 51 "1.2.3", 52 "1-tag", 53 "1.2-tag", 54 "1.2.3-tag", 55 "1.2.3_tag", 56 } 57 58 var version defaultVersion 59 for _, verAsString := range versions { 60 err := ParseVersion(verAsString, &version) 61 if err != nil { 62 t.Fail() 63 } 64 } 65 } 66 67 func TestSorter(t *testing.T) { 68 values := []string{ 69 "2.0.2", 70 "2.0.1", 71 "2", 72 "1.2", 73 "1", 74 "1.2.3", 75 "1.0.9", 76 } 77 78 var versions []defaultVersion 79 for _, val := range values { 80 var version defaultVersion 81 _ = ParseVersion(val, &version) 82 versions = append(versions, version) 83 } 84 85 sort.Sort(defaultVersionList(versions)) 86 87 expected_versions := []defaultVersion{ 88 {1, 0, 0, ""}, 89 {1, 0, 9, ""}, 90 {1, 2, 0, ""}, 91 {1, 2, 3, ""}, 92 {2, 0, 0, ""}, 93 {2, 0, 1, ""}, 94 {2, 0, 2, ""}, 95 } 96 97 for i := 0; i < len(expected_versions); i++ { 98 assert.Equal(t, expected_versions[i], versions[i], fmt.Sprintf("versions[%d] should be %v", i, expected_versions[i])) 99 } 100 } 101 102 func TestLess(t *testing.T) { 103 test_cases := []struct { 104 l, r defaultVersion 105 compare int 106 }{ 107 {defaultVersion{1, 0, 0, ""}, defaultVersion{1, 0, 1, ""}, -1}, 108 {defaultVersion{1, 0, 0, ""}, defaultVersion{1, 0, 0, ""}, 0}, 109 {defaultVersion{1, 0, 2, ""}, defaultVersion{1, 1, 0, ""}, -1}, 110 {defaultVersion{1, 1, 0, ""}, defaultVersion{1, 0, 1, ""}, 1}, 111 {defaultVersion{1, 0, 0, "rc1"}, defaultVersion{1, 0, 0, "rc2"}, -1}, 112 {defaultVersion{1, 0, 0, "rc2"}, defaultVersion{1, 0, 0, "rc2"}, 0}, 113 } 114 for _, tc := range test_cases { 115 assert.Equal(t, tc.compare < 0, Less(tc.l, tc.r), fmt.Sprintf("Less(%v, %v) should be %v", tc.l, tc.r, tc.compare < 0)) 116 assert.Equal(t, tc.compare > 0, Less(tc.r, tc.l), fmt.Sprintf("Less(%v, %v) should be %v", tc.r, tc.l, tc.compare > 0)) 117 } 118 }