You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
go-zero/core/utils/version_test.go

61 lines
1.3 KiB
Go

package utils
import (
"testing"
"github.com/stretchr/testify/assert"
)
func TestCompareVersions(t *testing.T) {
cases := []struct {
ver1 string
ver2 string
out int
}{
{"1", "1.0.1", -1},
{"1.0.1", "1.0.2", -1},
{"1.0.3", "1.1", -1},
{"1.1", "1.1.1", -1},
{"1.3.2", "1.2", 1},
{"1.1.1", "1.1.1", 0},
{"1.1.0", "1.1", 0},
}
for _, each := range cases {
t.Run(each.ver1, func(t *testing.T) {
actual := CompareVersions(each.ver1, each.ver2)
assert.Equal(t, each.out, actual)
})
}
}
func TestCustomCompareVersions(t *testing.T) {
cases := []struct {
ver1 string
ver2 string
operator string
out bool
}{
{"1", "1.0.1", ">", false},
{"1", "0.9.9", ">", true},
{"1", "1-0.1", "<", true},
{"1.0.1", "1-0.1", "<", false},
{"1.0.1", "1.0.1", "==", true},
{"1.0.1", "1.0.2", "==", false},
{"1.1-1", "1.0.2", "==", false},
{"1.0.1", "1.0.2", ">=", false},
{"1.0.2", "1.0.2", ">=", true},
{"1.0.3", "1.0.2", ">=", true},
{"1.0.4", "1.0.2", "<=", false},
{"1.0.4", "1.0.6", "<=", true},
{"1.0.4", "1.0.4", "<=", true},
}
for _, each := range cases {
t.Run(each.ver1, func(t *testing.T) {
actual := CustomCompareVersions(each.ver1, each.ver2, each.operator)
assert.Equal(t, each.out, actual)
})
}
}