diff --git a/version.go b/version.go index e4b5448..6a0f846 100644 --- a/version.go +++ b/version.go @@ -19,7 +19,11 @@ type Version struct { // // Extensions such as pre-release version or build metadata are ignored when comparing versions. func (a *Version) Compare(b *Version) int { - if a == nil || b == nil { + if a == nil && b != nil { + return -1 + } else if a != nil && b == nil { + return 1 + } else if a == nil && b == nil { return 0 } @@ -40,6 +44,13 @@ func (a *Version) Compare(b *Version) int { return -1 } +// Equal checks for equality between two versions. +// +// Extensions such as pre-release version or build metadata are ignored when comparing versions. +func (a *Version) Equal(b *Version) bool { + return a.Compare(b) == 0 +} + // Match tests the version against a constraint. // Gt and Lt take precedence over Gte and Lte. func (v *Version) Match(c *Constraint) bool { diff --git a/version_test.go b/version_test.go index d9e03e4..9b1416c 100644 --- a/version_test.go +++ b/version_test.go @@ -55,8 +55,8 @@ func TestVersion_Compare(t *testing.T) { {A: MustParse("1.20.0"), B: MustParse("1.2.0"), Expected: 1}, {A: MustParse("1.20.0"), B: MustParse("1.2.20"), Expected: 1}, {A: MustParse("1.20.0"), B: MustParse("1.20.1"), Expected: -1}, - {A: MustParse("1.0.0"), Expected: 0}, - {B: MustParse("1.0.0"), Expected: 0}, + {A: MustParse("1.0.0"), Expected: 1}, + {B: MustParse("1.0.0"), Expected: -1}, {Expected: 0}, }