version_test.go 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. package utils
  2. import (
  3. "fmt"
  4. "testing"
  5. "github.com/stretchr/testify/assert"
  6. )
  7. func TestCompareVersions(t *testing.T) {
  8. cases := []struct {
  9. ver1 string
  10. ver2 string
  11. operator string
  12. out bool
  13. }{
  14. {"1", "1.0.1", ">", false},
  15. {"1.0.1", "1.0", "<", false},
  16. {"1", "0.9.9", ">", true},
  17. {"1", "1.0-1", "<", true},
  18. {"1", "1.0-1", "!", false},
  19. {"1.0.1", "1-0.1", "<", false},
  20. {"1.0.1", "1.0.1", "==", true},
  21. {"1.0.1", "1.0.2", "==", false},
  22. {"1.1-1", "1.0.2", "==", false},
  23. {"1.0.1", "1.0.2", ">=", false},
  24. {"1.0.2", "1.0.2", ">=", true},
  25. {"1.0.3", "1.0.2", ">=", true},
  26. {"1.0.4", "1.0.2", "<=", false},
  27. {"1.0.4", "1.0.6", "<=", true},
  28. {"1.0.4", "1.0.4", "<=", true},
  29. }
  30. for _, each := range cases {
  31. each := each
  32. t.Run(each.ver1, func(t *testing.T) {
  33. actual := CompareVersions(each.ver1, each.operator, each.ver2)
  34. assert.Equal(t, each.out, actual, fmt.Sprintf("%s vs %s", each.ver1, each.ver2))
  35. })
  36. }
  37. }
  38. func TestStrsToInts(t *testing.T) {
  39. testCases := []struct {
  40. input []string
  41. expected []int64
  42. }{
  43. {[]string{}, nil},
  44. {[]string{"1", "2", "3"}, []int64{1, 2, 3}},
  45. }
  46. for _, tc := range testCases {
  47. tc := tc
  48. t.Run("", func(t *testing.T) {
  49. actual := strsToInts(tc.input)
  50. assert.Equal(t, tc.expected, actual)
  51. })
  52. }
  53. }