774 lines
14 KiB
Go
774 lines
14 KiB
Go
package versionedTerraform
|
|
|
|
import "testing"
|
|
|
|
func TestSemVersion_VersionInSlice_success(t *testing.T) {
|
|
want := SemVersion{
|
|
version: "1.1.9",
|
|
isStable: true,
|
|
majorVersion: 1,
|
|
minorVersion: 1,
|
|
patchVersion: 9,
|
|
}
|
|
ver1 := SemVersion{
|
|
version: "1.1.10",
|
|
isStable: true,
|
|
majorVersion: 1,
|
|
minorVersion: 1,
|
|
patchVersion: 10,
|
|
}
|
|
|
|
ver2 := SemVersion{
|
|
version: "0.1.9",
|
|
isStable: true,
|
|
majorVersion: 0,
|
|
minorVersion: 1,
|
|
patchVersion: 9,
|
|
}
|
|
|
|
ver3 := SemVersion{
|
|
version: "1.0.9",
|
|
isStable: true,
|
|
majorVersion: 1,
|
|
minorVersion: 0,
|
|
patchVersion: 9,
|
|
}
|
|
|
|
var semArray []SemVersion
|
|
semArray = append(semArray, ver1)
|
|
semArray = append(semArray, ver2)
|
|
semArray = append(semArray, ver3)
|
|
semArray = append(semArray, want)
|
|
|
|
if !want.VersionInSlice(semArray) {
|
|
t.Errorf("Expected Sem Version to be found in semArray")
|
|
}
|
|
}
|
|
|
|
func TestSemVersion_VersionInSlice_fail(t *testing.T) {
|
|
want := SemVersion{
|
|
version: "1.1.9",
|
|
isStable: true,
|
|
majorVersion: 1,
|
|
minorVersion: 1,
|
|
patchVersion: 9,
|
|
}
|
|
ver1 := SemVersion{
|
|
version: "1.1.10",
|
|
isStable: true,
|
|
majorVersion: 1,
|
|
minorVersion: 1,
|
|
patchVersion: 10,
|
|
}
|
|
|
|
ver2 := SemVersion{
|
|
version: "0.1.9",
|
|
isStable: true,
|
|
majorVersion: 0,
|
|
minorVersion: 1,
|
|
patchVersion: 9,
|
|
}
|
|
|
|
ver3 := SemVersion{
|
|
version: "1.0.9",
|
|
isStable: true,
|
|
majorVersion: 1,
|
|
minorVersion: 0,
|
|
patchVersion: 9,
|
|
}
|
|
|
|
var semArray []SemVersion
|
|
semArray = append(semArray, ver1)
|
|
semArray = append(semArray, ver2)
|
|
semArray = append(semArray, ver3)
|
|
|
|
if want.VersionInSlice(semArray) {
|
|
t.Errorf("Expected Sem Version to not be found in semArray")
|
|
}
|
|
}
|
|
|
|
func TestSemVersion_IsLessThan(t *testing.T) {
|
|
cases := []struct {
|
|
name string
|
|
want bool
|
|
s1, s2 SemVersion
|
|
}{
|
|
{"IsEqualTo",
|
|
false,
|
|
SemVersion{
|
|
version: "1.2.3",
|
|
isStable: false,
|
|
majorVersion: 1,
|
|
minorVersion: 2,
|
|
patchVersion: 3,
|
|
},
|
|
SemVersion{
|
|
version: "1.2.3",
|
|
isStable: false,
|
|
majorVersion: 1,
|
|
minorVersion: 2,
|
|
patchVersion: 3,
|
|
},
|
|
},
|
|
{"MajorVersionLess",
|
|
true,
|
|
SemVersion{
|
|
version: "1.2.3",
|
|
isStable: false,
|
|
majorVersion: 1,
|
|
minorVersion: 2,
|
|
patchVersion: 3,
|
|
},
|
|
SemVersion{
|
|
version: "2.2.3",
|
|
isStable: false,
|
|
majorVersion: 2,
|
|
minorVersion: 2,
|
|
patchVersion: 3,
|
|
},
|
|
},
|
|
{"MinorVersionLess",
|
|
true,
|
|
SemVersion{
|
|
version: "1.2.3",
|
|
isStable: false,
|
|
majorVersion: 1,
|
|
minorVersion: 2,
|
|
patchVersion: 3,
|
|
},
|
|
SemVersion{
|
|
version: "1.3.3",
|
|
isStable: false,
|
|
majorVersion: 1,
|
|
minorVersion: 3,
|
|
patchVersion: 3,
|
|
},
|
|
},
|
|
{"PatchVersionLess",
|
|
true,
|
|
SemVersion{
|
|
version: "1.2.3",
|
|
isStable: false,
|
|
majorVersion: 1,
|
|
minorVersion: 2,
|
|
patchVersion: 3,
|
|
},
|
|
SemVersion{
|
|
version: "1.2.3",
|
|
isStable: false,
|
|
majorVersion: 2,
|
|
minorVersion: 2,
|
|
patchVersion: 3,
|
|
},
|
|
},
|
|
{"MajorVersionGreater",
|
|
false,
|
|
SemVersion{
|
|
version: "2.2.3",
|
|
isStable: false,
|
|
majorVersion: 2,
|
|
minorVersion: 2,
|
|
patchVersion: 3,
|
|
},
|
|
SemVersion{
|
|
version: "1.2.4",
|
|
isStable: false,
|
|
majorVersion: 1,
|
|
minorVersion: 2,
|
|
patchVersion: 4,
|
|
},
|
|
},
|
|
{"MinorVersionGreater",
|
|
false,
|
|
SemVersion{
|
|
version: "1.3.3",
|
|
isStable: false,
|
|
majorVersion: 1,
|
|
minorVersion: 3,
|
|
patchVersion: 3,
|
|
},
|
|
SemVersion{
|
|
version: "1.2.3",
|
|
isStable: false,
|
|
majorVersion: 1,
|
|
minorVersion: 2,
|
|
patchVersion: 3,
|
|
},
|
|
},
|
|
{"PatchVersionGreater",
|
|
false,
|
|
SemVersion{
|
|
version: "1.2.4",
|
|
isStable: false,
|
|
majorVersion: 1,
|
|
minorVersion: 2,
|
|
patchVersion: 4,
|
|
},
|
|
SemVersion{
|
|
version: "1.2.3",
|
|
isStable: false,
|
|
majorVersion: 1,
|
|
minorVersion: 2,
|
|
patchVersion: 3,
|
|
},
|
|
},
|
|
}
|
|
for _, c := range cases {
|
|
t.Run("Test: "+c.name, func(t *testing.T) {
|
|
t.Parallel()
|
|
got := c.s1.IsLessThan(c.s2)
|
|
if c.want != got {
|
|
t.Errorf("Expected %+v got %+v", c.want, got)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestSemVersion_IsGreaterThan(t *testing.T) {
|
|
cases := []struct {
|
|
name string
|
|
want bool
|
|
s1, s2 SemVersion
|
|
}{
|
|
{"IsEqualTo",
|
|
false,
|
|
SemVersion{
|
|
version: "1.2.3",
|
|
isStable: false,
|
|
majorVersion: 1,
|
|
minorVersion: 2,
|
|
patchVersion: 3,
|
|
},
|
|
SemVersion{
|
|
version: "1.2.3",
|
|
isStable: false,
|
|
majorVersion: 1,
|
|
minorVersion: 2,
|
|
patchVersion: 3,
|
|
},
|
|
},
|
|
{"MajorVersionLess",
|
|
false,
|
|
SemVersion{
|
|
version: "1.2.3",
|
|
isStable: false,
|
|
majorVersion: 1,
|
|
minorVersion: 2,
|
|
patchVersion: 3,
|
|
},
|
|
SemVersion{
|
|
version: "2.2.3",
|
|
isStable: false,
|
|
majorVersion: 2,
|
|
minorVersion: 2,
|
|
patchVersion: 3,
|
|
},
|
|
},
|
|
{"MinorVersionLess",
|
|
false,
|
|
SemVersion{
|
|
version: "1.2.3",
|
|
isStable: false,
|
|
majorVersion: 1,
|
|
minorVersion: 2,
|
|
patchVersion: 3,
|
|
},
|
|
SemVersion{
|
|
version: "1.3.3",
|
|
isStable: false,
|
|
majorVersion: 1,
|
|
minorVersion: 3,
|
|
patchVersion: 3,
|
|
},
|
|
},
|
|
{"PatchVersionLess",
|
|
false,
|
|
SemVersion{
|
|
version: "1.2.3",
|
|
isStable: false,
|
|
majorVersion: 1,
|
|
minorVersion: 2,
|
|
patchVersion: 3,
|
|
},
|
|
SemVersion{
|
|
version: "1.2.3",
|
|
isStable: false,
|
|
majorVersion: 2,
|
|
minorVersion: 2,
|
|
patchVersion: 3,
|
|
},
|
|
},
|
|
{"MajorVersionGreater",
|
|
true,
|
|
SemVersion{
|
|
version: "2.2.3",
|
|
isStable: false,
|
|
majorVersion: 2,
|
|
minorVersion: 2,
|
|
patchVersion: 3,
|
|
},
|
|
SemVersion{
|
|
version: "1.2.4",
|
|
isStable: false,
|
|
majorVersion: 1,
|
|
minorVersion: 2,
|
|
patchVersion: 4,
|
|
},
|
|
},
|
|
{"MinorVersionGreater",
|
|
true,
|
|
SemVersion{
|
|
version: "1.3.3",
|
|
isStable: false,
|
|
majorVersion: 1,
|
|
minorVersion: 3,
|
|
patchVersion: 3,
|
|
},
|
|
SemVersion{
|
|
version: "1.2.3",
|
|
isStable: false,
|
|
majorVersion: 1,
|
|
minorVersion: 2,
|
|
patchVersion: 3,
|
|
},
|
|
},
|
|
{"PatchVersionGreater",
|
|
true,
|
|
SemVersion{
|
|
version: "1.2.4",
|
|
isStable: false,
|
|
majorVersion: 1,
|
|
minorVersion: 2,
|
|
patchVersion: 4,
|
|
},
|
|
SemVersion{
|
|
version: "1.2.3",
|
|
isStable: false,
|
|
majorVersion: 1,
|
|
minorVersion: 2,
|
|
patchVersion: 3,
|
|
},
|
|
},
|
|
}
|
|
for _, c := range cases {
|
|
t.Run("Test: "+c.name, func(t *testing.T) {
|
|
t.Parallel()
|
|
got := c.s1.IsGreaterThan(c.s2)
|
|
if c.want != got {
|
|
t.Errorf("Expected %+v got %+v", c.want, got)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestSemVersion_IsEqualTo(t *testing.T) {
|
|
cases := []struct {
|
|
name string
|
|
want bool
|
|
s1, s2 SemVersion
|
|
}{
|
|
{"IsEqualTo",
|
|
true,
|
|
SemVersion{
|
|
version: "1.2.3",
|
|
isStable: false,
|
|
majorVersion: 1,
|
|
minorVersion: 2,
|
|
patchVersion: 3,
|
|
},
|
|
SemVersion{
|
|
version: "1.2.3",
|
|
isStable: false,
|
|
majorVersion: 1,
|
|
minorVersion: 2,
|
|
patchVersion: 3,
|
|
},
|
|
},
|
|
{"MajorVersionLess",
|
|
false,
|
|
SemVersion{
|
|
version: "1.2.3",
|
|
isStable: false,
|
|
majorVersion: 1,
|
|
minorVersion: 2,
|
|
patchVersion: 3,
|
|
},
|
|
SemVersion{
|
|
version: "2.2.3",
|
|
isStable: false,
|
|
majorVersion: 2,
|
|
minorVersion: 2,
|
|
patchVersion: 3,
|
|
},
|
|
},
|
|
{"MinorVersionLess",
|
|
false,
|
|
SemVersion{
|
|
version: "1.2.3",
|
|
isStable: false,
|
|
majorVersion: 1,
|
|
minorVersion: 2,
|
|
patchVersion: 3,
|
|
},
|
|
SemVersion{
|
|
version: "1.3.3",
|
|
isStable: false,
|
|
majorVersion: 1,
|
|
minorVersion: 3,
|
|
patchVersion: 3,
|
|
},
|
|
},
|
|
{"PatchVersionLess",
|
|
false,
|
|
SemVersion{
|
|
version: "1.2.3",
|
|
isStable: false,
|
|
majorVersion: 1,
|
|
minorVersion: 2,
|
|
patchVersion: 3,
|
|
},
|
|
SemVersion{
|
|
version: "1.2.3",
|
|
isStable: false,
|
|
majorVersion: 2,
|
|
minorVersion: 2,
|
|
patchVersion: 3,
|
|
},
|
|
},
|
|
{"MajorVersionGreater",
|
|
false,
|
|
SemVersion{
|
|
version: "2.2.3",
|
|
isStable: false,
|
|
majorVersion: 2,
|
|
minorVersion: 2,
|
|
patchVersion: 3,
|
|
},
|
|
SemVersion{
|
|
version: "1.2.4",
|
|
isStable: false,
|
|
majorVersion: 1,
|
|
minorVersion: 2,
|
|
patchVersion: 4,
|
|
},
|
|
},
|
|
{"MinorVersionGreater",
|
|
false,
|
|
SemVersion{
|
|
version: "1.3.3",
|
|
isStable: false,
|
|
majorVersion: 1,
|
|
minorVersion: 3,
|
|
patchVersion: 3,
|
|
},
|
|
SemVersion{
|
|
version: "1.2.3",
|
|
isStable: false,
|
|
majorVersion: 1,
|
|
minorVersion: 2,
|
|
patchVersion: 3,
|
|
},
|
|
},
|
|
{"PatchVersionGreater",
|
|
false,
|
|
SemVersion{
|
|
version: "1.2.4",
|
|
isStable: false,
|
|
majorVersion: 1,
|
|
minorVersion: 2,
|
|
patchVersion: 4,
|
|
},
|
|
SemVersion{
|
|
version: "1.2.3",
|
|
isStable: false,
|
|
majorVersion: 1,
|
|
minorVersion: 2,
|
|
patchVersion: 3,
|
|
},
|
|
},
|
|
}
|
|
for _, c := range cases {
|
|
t.Run("Test: "+c.name, func(t *testing.T) {
|
|
t.Parallel()
|
|
got := c.s1.IsEqualTo(c.s2)
|
|
if c.want != got {
|
|
t.Errorf("Expected %+v got %+v", c.want, got)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestSemVersion_IsLessOrEqual(t *testing.T) {
|
|
cases := []struct {
|
|
name string
|
|
want bool
|
|
s1, s2 SemVersion
|
|
}{
|
|
{"IsEqualTo",
|
|
true,
|
|
SemVersion{
|
|
version: "1.2.3",
|
|
isStable: false,
|
|
majorVersion: 1,
|
|
minorVersion: 2,
|
|
patchVersion: 3,
|
|
},
|
|
SemVersion{
|
|
version: "1.2.3",
|
|
isStable: false,
|
|
majorVersion: 1,
|
|
minorVersion: 2,
|
|
patchVersion: 3,
|
|
},
|
|
},
|
|
{"MajorVersionLess",
|
|
true,
|
|
SemVersion{
|
|
version: "1.2.3",
|
|
isStable: false,
|
|
majorVersion: 1,
|
|
minorVersion: 2,
|
|
patchVersion: 3,
|
|
},
|
|
SemVersion{
|
|
version: "2.2.3",
|
|
isStable: false,
|
|
majorVersion: 2,
|
|
minorVersion: 2,
|
|
patchVersion: 3,
|
|
},
|
|
},
|
|
{"MinorVersionLess",
|
|
true,
|
|
SemVersion{
|
|
version: "1.2.3",
|
|
isStable: false,
|
|
majorVersion: 1,
|
|
minorVersion: 2,
|
|
patchVersion: 3,
|
|
},
|
|
SemVersion{
|
|
version: "1.3.3",
|
|
isStable: false,
|
|
majorVersion: 1,
|
|
minorVersion: 3,
|
|
patchVersion: 3,
|
|
},
|
|
},
|
|
{"PatchVersionLess",
|
|
true,
|
|
SemVersion{
|
|
version: "1.2.3",
|
|
isStable: false,
|
|
majorVersion: 1,
|
|
minorVersion: 2,
|
|
patchVersion: 3,
|
|
},
|
|
SemVersion{
|
|
version: "1.2.3",
|
|
isStable: false,
|
|
majorVersion: 2,
|
|
minorVersion: 2,
|
|
patchVersion: 3,
|
|
},
|
|
},
|
|
{"MajorVersionGreater",
|
|
false,
|
|
SemVersion{
|
|
version: "2.2.3",
|
|
isStable: false,
|
|
majorVersion: 2,
|
|
minorVersion: 2,
|
|
patchVersion: 3,
|
|
},
|
|
SemVersion{
|
|
version: "1.2.4",
|
|
isStable: false,
|
|
majorVersion: 1,
|
|
minorVersion: 2,
|
|
patchVersion: 4,
|
|
},
|
|
},
|
|
{"MinorVersionGreater",
|
|
false,
|
|
SemVersion{
|
|
version: "1.3.3",
|
|
isStable: false,
|
|
majorVersion: 1,
|
|
minorVersion: 3,
|
|
patchVersion: 3,
|
|
},
|
|
SemVersion{
|
|
version: "1.2.3",
|
|
isStable: false,
|
|
majorVersion: 1,
|
|
minorVersion: 2,
|
|
patchVersion: 3,
|
|
},
|
|
},
|
|
{"PatchVersionGreater",
|
|
false,
|
|
SemVersion{
|
|
version: "1.2.4",
|
|
isStable: false,
|
|
majorVersion: 1,
|
|
minorVersion: 2,
|
|
patchVersion: 4,
|
|
},
|
|
SemVersion{
|
|
version: "1.2.3",
|
|
isStable: false,
|
|
majorVersion: 1,
|
|
minorVersion: 2,
|
|
patchVersion: 3,
|
|
},
|
|
},
|
|
}
|
|
for _, c := range cases {
|
|
t.Run("Test: "+c.name, func(t *testing.T) {
|
|
t.Parallel()
|
|
got := c.s1.IsLessOrEqual(c.s2)
|
|
if c.want != got {
|
|
t.Errorf("Expected %+v got %+v", c.want, got)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestSemVersion_IsGreaterOrEqual(t *testing.T) {
|
|
cases := []struct {
|
|
name string
|
|
want bool
|
|
s1, s2 SemVersion
|
|
}{
|
|
{"IsEqualTo",
|
|
true,
|
|
SemVersion{
|
|
version: "1.2.3",
|
|
isStable: false,
|
|
majorVersion: 1,
|
|
minorVersion: 2,
|
|
patchVersion: 3,
|
|
},
|
|
SemVersion{
|
|
version: "1.2.3",
|
|
isStable: false,
|
|
majorVersion: 1,
|
|
minorVersion: 2,
|
|
patchVersion: 3,
|
|
},
|
|
},
|
|
{"MajorVersionLess",
|
|
false,
|
|
SemVersion{
|
|
version: "1.2.3",
|
|
isStable: false,
|
|
majorVersion: 1,
|
|
minorVersion: 2,
|
|
patchVersion: 3,
|
|
},
|
|
SemVersion{
|
|
version: "2.2.3",
|
|
isStable: false,
|
|
majorVersion: 2,
|
|
minorVersion: 2,
|
|
patchVersion: 3,
|
|
},
|
|
},
|
|
{"MinorVersionLess",
|
|
false,
|
|
SemVersion{
|
|
version: "1.2.3",
|
|
isStable: false,
|
|
majorVersion: 1,
|
|
minorVersion: 2,
|
|
patchVersion: 3,
|
|
},
|
|
SemVersion{
|
|
version: "1.3.3",
|
|
isStable: false,
|
|
majorVersion: 1,
|
|
minorVersion: 3,
|
|
patchVersion: 3,
|
|
},
|
|
},
|
|
{"PatchVersionLess",
|
|
false,
|
|
SemVersion{
|
|
version: "1.2.3",
|
|
isStable: false,
|
|
majorVersion: 1,
|
|
minorVersion: 2,
|
|
patchVersion: 3,
|
|
},
|
|
SemVersion{
|
|
version: "1.2.3",
|
|
isStable: false,
|
|
majorVersion: 2,
|
|
minorVersion: 2,
|
|
patchVersion: 3,
|
|
},
|
|
},
|
|
{"MajorVersionGreater",
|
|
true,
|
|
SemVersion{
|
|
version: "2.2.3",
|
|
isStable: false,
|
|
majorVersion: 2,
|
|
minorVersion: 2,
|
|
patchVersion: 3,
|
|
},
|
|
SemVersion{
|
|
version: "1.2.4",
|
|
isStable: false,
|
|
majorVersion: 1,
|
|
minorVersion: 2,
|
|
patchVersion: 4,
|
|
},
|
|
},
|
|
{"MinorVersionGreater",
|
|
true,
|
|
SemVersion{
|
|
version: "1.3.3",
|
|
isStable: false,
|
|
majorVersion: 1,
|
|
minorVersion: 3,
|
|
patchVersion: 3,
|
|
},
|
|
SemVersion{
|
|
version: "1.2.3",
|
|
isStable: false,
|
|
majorVersion: 1,
|
|
minorVersion: 2,
|
|
patchVersion: 3,
|
|
},
|
|
},
|
|
{"PatchVersionGreater",
|
|
true,
|
|
SemVersion{
|
|
version: "1.2.4",
|
|
isStable: false,
|
|
majorVersion: 1,
|
|
minorVersion: 2,
|
|
patchVersion: 4,
|
|
},
|
|
SemVersion{
|
|
version: "1.2.3",
|
|
isStable: false,
|
|
majorVersion: 1,
|
|
minorVersion: 2,
|
|
patchVersion: 3,
|
|
},
|
|
},
|
|
}
|
|
for _, c := range cases {
|
|
t.Run("Test: "+c.name, func(t *testing.T) {
|
|
t.Parallel()
|
|
got := c.s1.IsGreaterOrEqual(c.s2)
|
|
if c.want != got {
|
|
t.Errorf("Expected %+v got %+v", c.want, got)
|
|
}
|
|
})
|
|
}
|
|
}
|