github.com/xhghs/rclone@v1.51.1-0.20200430155106-e186a28cced8/fs/version/version_test.go (about) 1 package version 2 3 import ( 4 "fmt" 5 "testing" 6 7 "github.com/stretchr/testify/assert" 8 ) 9 10 func TestNew(t *testing.T) { 11 for _, test := range []struct { 12 in string 13 want Version 14 wantErr bool 15 }{ 16 {"v1.41", Version{1, 41}, false}, 17 {"rclone v1.41", Version{1, 41}, false}, 18 {"rclone v1.41.23", Version{1, 41, 23}, false}, 19 {"rclone v1.41.23-100", Version{1, 41, 23, 100}, false}, 20 {"rclone v1.41-100", Version{1, 41, 0, 100}, false}, 21 {"rclone v1.41.23-100-g12312a", Version{1, 41, 23, 100}, false}, 22 {"rclone v1.41-100-g12312a", Version{1, 41, 0, 100}, false}, 23 {"rclone v1.42-005-g56e1e820β", Version{1, 42, 0, 5}, false}, 24 {"rclone v1.42-005-g56e1e820-feature-branchβ", Version{1, 42, 0, 5}, false}, 25 26 {"v1.41s", nil, true}, 27 {"rclone v1-41", nil, true}, 28 {"rclone v1.41.2c3", nil, true}, 29 {"rclone v1.41.23-100 potato", nil, true}, 30 {"rclone 1.41-100", nil, true}, 31 {"rclone v1.41.23-100-12312a", nil, true}, 32 33 {"v1.41-DEV", Version{1, 41, 999, 999}, false}, 34 } { 35 what := fmt.Sprintf("in=%q", test.in) 36 got, err := New(test.in) 37 if test.wantErr { 38 assert.Error(t, err, what) 39 } else { 40 assert.NoError(t, err, what) 41 } 42 assert.Equal(t, test.want, got, what) 43 } 44 45 } 46 47 func TestCmp(t *testing.T) { 48 for _, test := range []struct { 49 a, b Version 50 want int 51 }{ 52 {Version{1}, Version{1}, 0}, 53 {Version{1}, Version{2}, -1}, 54 {Version{2}, Version{1}, 1}, 55 {Version{2}, Version{2, 1}, -1}, 56 {Version{2, 1}, Version{2}, 1}, 57 {Version{2, 1}, Version{2, 1}, 0}, 58 {Version{2, 1}, Version{2, 2}, -1}, 59 {Version{2, 2}, Version{2, 1}, 1}, 60 } { 61 got := test.a.Cmp(test.b) 62 if got < 0 { 63 got = -1 64 } else if got > 0 { 65 got = 1 66 } 67 assert.Equal(t, test.want, got, fmt.Sprintf("%v cmp %v", test.a, test.b)) 68 // test the reverse 69 got = -test.b.Cmp(test.a) 70 assert.Equal(t, test.want, got, fmt.Sprintf("%v cmp %v", test.b, test.a)) 71 } 72 } 73 74 func TestString(t *testing.T) { 75 v, err := New("v1.44.1-2") 76 assert.NoError(t, err) 77 78 assert.Equal(t, "1.44.1.2", v.String()) 79 } 80 81 func TestIsGit(t *testing.T) { 82 v, err := New("v1.44") 83 assert.NoError(t, err) 84 assert.Equal(t, false, v.IsGit()) 85 86 v, err = New("v1.44-DEV") 87 assert.NoError(t, err) 88 assert.Equal(t, true, v.IsGit()) 89 }