From 009d638ee24e0df5e76c22dd5ea66fe57b011d8d Mon Sep 17 00:00:00 2001 From: Vadym Slizov Date: Mon, 18 May 2020 22:37:13 +0300 Subject: [PATCH] [refactoring] version testing --- internal/version/version.go | 8 ++++---- internal/version/version_test.go | 29 +++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 4 deletions(-) create mode 100644 internal/version/version_test.go diff --git a/internal/version/version.go b/internal/version/version.go index f11d933..9834ebf 100644 --- a/internal/version/version.go +++ b/internal/version/version.go @@ -42,17 +42,17 @@ func Compare(a string, b string) (int, error) { } func parse(v string) (version, error) { - parts := strings.Split(v, ".") - if len(parts) != 2 { + i := strings.Index(v, ".") + if i == -1 { return version{}, errors.New("version must contain major and minor parts") } - major, err := strconv.Atoi(parts[0]) + major, err := strconv.Atoi(v[:i]) if err != nil { return version{}, err } - minor, err := strconv.Atoi(parts[1]) + minor, err := strconv.Atoi(v[i+1:]) if err != nil { return version{}, err } diff --git a/internal/version/version_test.go b/internal/version/version_test.go new file mode 100644 index 0000000..5f8a2f7 --- /dev/null +++ b/internal/version/version_test.go @@ -0,0 +1,29 @@ +package version_test + +import ( + "gotest.tools/assert" + "testing" + + "github.com/z7zmey/php-parser/internal/version" +) + +func TestSmaller(t *testing.T) { + r, err := version.Compare("7.3", "5.6") + + assert.NilError(t, err) + assert.Equal(t, 1, r) +} + +func TestGreater(t *testing.T) { + r, err := version.Compare("5.6", "7.3") + + assert.NilError(t, err) + assert.Equal(t, -1, r) +} + +func TestEqual(t *testing.T) { + r, err := version.Compare("7.3", "7.3") + + assert.NilError(t, err) + assert.Equal(t, 0, r) +}