add version package
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
package version
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestVersion_Parse(t *testing.T) {
|
||||
type TestCase struct {
|
||||
Input string
|
||||
Expected Version
|
||||
Err error
|
||||
}
|
||||
|
||||
testCases := []TestCase{
|
||||
{Input: "0.0.0", Expected: Version{Text: "0.0.0"}},
|
||||
{Input: "1.0.0", Expected: Version{Major: 1, Text: "1.0.0"}},
|
||||
{Input: "0.1.0", Expected: Version{Minor: 1, Text: "0.1.0"}},
|
||||
{Input: "0.0.1", Expected: Version{Patch: 1, Text: "0.0.1"}},
|
||||
{Input: "10.20.30", Expected: Version{Major: 10, Minor: 20, Patch: 30, Text: "10.20.30"}},
|
||||
{Input: "27.31.15", Expected: Version{Major: 27, Minor: 31, Patch: 15, Text: "27.31.15"}},
|
||||
{Input: "v1.2.3", Expected: Version{Major: 1, Minor: 2, Patch: 3, Text: "v1.2.3"}},
|
||||
{Input: "v1", Expected: Version{Major: 1, Text: "v1"}},
|
||||
{Input: "v2.31", Expected: Version{Major: 2, Minor: 31, Text: "v2.31"}},
|
||||
{Input: "v1.2.0a", Expected: Version{Major: 1, Minor: 2, Extension: "a", Text: "v1.2.0a"}},
|
||||
{Input: "v1.2a", Expected: Version{Major: 1, Minor: 2, Extension: "a", Text: "v1.2a"}},
|
||||
{Input: "v1-alpha2", Expected: Version{Major: 1, Extension: "-alpha2", Text: "v1-alpha2"}},
|
||||
{Input: "invalid version", Err: ErrInvalidVersion},
|
||||
{Input: "v.01", Err: ErrInvalidVersion},
|
||||
{Input: "v-any", Err: ErrInvalidVersion},
|
||||
}
|
||||
|
||||
for i, testCase := range testCases {
|
||||
actual, err := Parse(testCase.Input)
|
||||
|
||||
if testCase.Err != nil {
|
||||
if err == nil {
|
||||
t.Errorf("test %d failed (expected error %v, actual nil)", i, testCase.Err)
|
||||
} else if !errors.Is(err, testCase.Err) {
|
||||
t.Errorf("test %d failed (expected error %q, actual error %q)", i, testCase.Err, err)
|
||||
} else {
|
||||
t.Logf("test %d succeeded with error %q for %q\n", i, testCase.Err, testCase.Input)
|
||||
}
|
||||
} else if err != nil {
|
||||
t.Errorf("test %d failed (expected error nil, actual error %q)", i, err)
|
||||
} else if actual.Major != testCase.Expected.Major || actual.Minor != testCase.Expected.Minor || actual.Patch != testCase.Expected.Patch || actual.Text != testCase.Expected.Text {
|
||||
t.Errorf("test %d failed (expected %v, actual %v)", i, testCase.Expected, actual)
|
||||
} else {
|
||||
t.Logf("test %d succeeded with %v\n", i, actual)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user