version_test.go 1.3 KB

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