github.com/MetalBlockchain/metalgo@v1.11.9/version/parser_test.go (about) 1 // Copyright (C) 2019-2024, Ava Labs, Inc. All rights reserved. 2 // See the file LICENSE for licensing terms. 3 4 package version 5 6 import ( 7 "strconv" 8 "testing" 9 10 "github.com/stretchr/testify/require" 11 ) 12 13 func TestParse(t *testing.T) { 14 v, err := Parse("v1.2.3") 15 16 require.NoError(t, err) 17 require.NotNil(t, v) 18 require.Equal(t, "v1.2.3", v.String()) 19 require.Equal(t, 1, v.Major) 20 require.Equal(t, 2, v.Minor) 21 require.Equal(t, 3, v.Patch) 22 23 tests := []struct { 24 version string 25 expectedErr error 26 }{ 27 { 28 version: "", 29 expectedErr: errMissingVersionPrefix, 30 }, 31 { 32 version: "1.2.3", 33 expectedErr: errMissingVersionPrefix, 34 }, 35 { 36 version: "z1.2.3", 37 expectedErr: errMissingVersionPrefix, 38 }, 39 { 40 version: "v1.2", 41 expectedErr: errMissingVersions, 42 }, 43 { 44 version: "vz.2.3", 45 expectedErr: strconv.ErrSyntax, 46 }, 47 { 48 version: "v1.z.3", 49 expectedErr: strconv.ErrSyntax, 50 }, 51 { 52 version: "v1.2.z", 53 expectedErr: strconv.ErrSyntax, 54 }, 55 { 56 version: "v1.2.3.4", 57 expectedErr: strconv.ErrSyntax, 58 }, 59 } 60 for _, test := range tests { 61 t.Run(test.version, func(t *testing.T) { 62 _, err := Parse(test.version) 63 require.ErrorIs(t, err, test.expectedErr) 64 }) 65 } 66 }