blob: 340270c28191dd2f325b647971cd4e4d577a2691 [file] [log] [blame]
package version
import (
"strings"
"testing"
)
var prepVersionValues = map[string]string{
"1-stable": "1.stable.",
"1....0.0": "1.0.0",
"1-2_3-4": "1.2.3.4",
"1-2_3-..4-beta": "1.2.3.4.beta.",
}
func TestPrepVersion(t *testing.T) {
for in, out := range prepVersionValues {
if x := prepVersion(in); strings.Join(x, ".") != out {
t.Errorf("FAIL: Normalize(%v) = %v: want %v", in, x, out)
}
}
}
var numVersionValues = map[string]int{
"foo": -7,
"10": 10,
"12212": 12212,
"": 0,
"dev": -6,
"alpha": -5,
"a": -5,
"beta": -4,
"b": -4,
"RC": -3,
"rc": -3,
"#": -2,
"p": 1,
"pl": 1,
}
func TestNumVersion(t *testing.T) {
for in, out := range numVersionValues {
if x := numVersion(in); x != out {
t.Errorf("FAIL: Normalize(%v) = %v: want %v", in, x, out)
}
}
}
var compareVersionSimpleValues = map[string]int{
"1|2": -1,
"10|2": 1,
"1.0|1.1": -1,
"1.2|1.0.1": 1,
"1.0-dev|1.0-dev": 0,
"1.0-dev|1.0a1": -1,
"1.0-dev|1.0b1": -1,
"1.0-dev|1.0RC1": -1,
"1.0-dev|1.0rc1": -1,
"1.0-dev|1.0": -1,
"1.0-dev|1.0pl1": -1,
"1.0a1|1.0-dev": 1,
"1.0a1|1.0a1": 0,
"1.0a1|1.0b1": -1,
"1.0a1|1.0RC1": -1,
"1.0a1|1.0rc1": -1,
"1.0a1|1.0": -1,
"1.0a1|1.0pl1": -1,
"1.0b1|1.0-dev": 1,
"1.0b1|1.0a1": 1,
"1.0b1|1.0b1": 0,
"1.0b1|1.0RC1": -1,
"1.0b1|1.0rc1": -1,
"1.0b1|1.0": -1,
"1.0b1|1.0pl1": -1,
"1.0RC1|1.0-dev": 1,
"1.0RC1|1.0a1": 1,
"1.0RC1|1.0b1": 1,
"1.0RC1|1.0RC1": 0,
"1.0RC1|1.0rc1": 0,
"1.0RC1|1.0": -1,
"1.0RC1|1.0pl1": -1,
"1.0rc1|1.0-dev": 1,
"1.0rc1|1.0a1": 1,
"1.0rc1|1.0b1": 1,
"1.0rc1|1.0RC1": 0,
"1.0rc1|1.0rc1": 0,
"1.0rc1|1.0": -1,
"1.0rc1|1.0pl1": -1,
"1.0|1.0-dev": 1,
"1.0|1.0a1": 1,
"1.0|1.0b1": 1,
"1.0|1.0RC1": 1,
"1.0|1.0rc1": 1,
"1.0|1.0": 0,
"1.0|1.0pl1": -1,
"1.0pl1|1.0-dev": 1,
"1.0pl1|1.0a1": 1,
"1.0pl1|1.0b1": 1,
"1.0pl1|1.0RC1": 1,
"1.0pl1|1.0rc1": 1,
"1.0pl1|1.0": 1,
"1.0pl1|1.0pl1": 0,
}
func TestCompareVersionSimple(t *testing.T) {
for in, out := range compareVersionSimpleValues {
v := strings.Split(in, "|")
if x := CompareSimple(v[0], v[1]); x != out {
t.Errorf("FAIL: CompareVersionSimple(%v) = %v: want %v", in, x, out)
}
}
}
var compareNormalizedVersionValues = map[string]bool{
"1.0-dev lt 1.0-dev": false,
"1.0-dev < 1.0-dev": false,
"1.0-dev le 1.0-dev": true,
"1.0-dev <= 1.0-dev": true,
"1.0-dev gt 1.0-dev": false,
"1.0-dev > 1.0-dev": false,
"1.0-dev ge 1.0-dev": true,
"1.0-dev >= 1.0-dev": true,
"1.0-dev eq 1.0-dev": true,
"1.0-dev = 1.0-dev": true,
"1.0-dev == 1.0-dev": true,
"1.0-dev ne 1.0-dev": false,
"1.0-dev <> 1.0-dev": false,
"1.0-dev != 1.0-dev": false,
"1.0-dev lt 1.0a1": true,
"1.0-dev < 1.0a1": true,
"1.0-dev le 1.0a1": true,
"1.0-dev <= 1.0a1": true,
"1.0-dev gt 1.0a1": false,
"1.0-dev > 1.0a1": false,
"1.0-dev ge 1.0a1": false,
"1.0-dev >= 1.0a1": false,
"1.0-dev eq 1.0a1": false,
"1.0-dev = 1.0a1": false,
"1.0-dev == 1.0a1": false,
"1.0-dev ne 1.0a1": true,
"1.0-dev <> 1.0a1": true,
"1.0-dev != 1.0a1": true,
"1.0-dev lt 1.0b1": true,
"1.0-dev < 1.0b1": true,
"1.0-dev le 1.0b1": true,
"1.0-dev <= 1.0b1": true,
"1.0-dev gt 1.0b1": false,
"1.0-dev > 1.0b1": false,
"1.0-dev ge 1.0b1": false,
"1.0-dev >= 1.0b1": false,
"1.0-dev eq 1.0b1": false,
"1.0-dev = 1.0b1": false,
"1.0-dev == 1.0b1": false,
"1.0-dev ne 1.0b1": true,
"1.0-dev <> 1.0b1": true,
"1.0-dev != 1.0b1": true,
"1.0-dev lt 1.0RC1": true,
"1.0-dev < 1.0RC1": true,
"1.0-dev le 1.0RC1": true,
"1.0-dev <= 1.0RC1": true,
"1.0-dev gt 1.0RC1": false,
"1.0-dev > 1.0RC1": false,
"1.0-dev ge 1.0RC1": false,
"1.0-dev >= 1.0RC1": false,
"1.0-dev eq 1.0RC1": false,
"1.0-dev = 1.0RC1": false,
"1.0-dev == 1.0RC1": false,
"1.0-dev ne 1.0RC1": true,
"1.0-dev <> 1.0RC1": true,
"1.0-dev != 1.0RC1": true,
"1.0-dev lt 1.0rc1": true,
"1.0-dev < 1.0rc1": true,
"1.0-dev le 1.0rc1": true,
"1.0-dev <= 1.0rc1": true,
"1.0-dev gt 1.0rc1": false,
"1.0-dev > 1.0rc1": false,
"1.0-dev ge 1.0rc1": false,
"1.0-dev >= 1.0rc1": false,
"1.0-dev eq 1.0rc1": false,
"1.0-dev = 1.0rc1": false,
"1.0-dev == 1.0rc1": false,
"1.0-dev ne 1.0rc1": true,
"1.0-dev <> 1.0rc1": true,
"1.0-dev != 1.0rc1": true,
"1.0-dev lt 1.0": true,
"1.0-dev < 1.0": true,
"1.0-dev le 1.0": true,
"1.0-dev <= 1.0": true,
"1.0-dev gt 1.0": false,
"1.0-dev > 1.0": false,
"1.0-dev ge 1.0": false,
"1.0-dev >= 1.0": false,
"1.0-dev eq 1.0": false,
"1.0-dev = 1.0": false,
"1.0-dev == 1.0": false,
"1.0-dev ne 1.0": true,
"1.0-dev <> 1.0": true,
"1.0-dev != 1.0": true,
"1.0-dev lt 1.0pl1": true,
"1.0-dev < 1.0pl1": true,
"1.0-dev le 1.0pl1": true,
"1.0-dev <= 1.0pl1": true,
"1.0-dev gt 1.0pl1": false,
"1.0-dev > 1.0pl1": false,
"1.0-dev ge 1.0pl1": false,
"1.0-dev >= 1.0pl1": false,
"1.0-dev eq 1.0pl1": false,
"1.0-dev = 1.0pl1": false,
"1.0-dev == 1.0pl1": false,
"1.0-dev ne 1.0pl1": true,
"1.0-dev <> 1.0pl1": true,
"1.0-dev != 1.0pl1": true,
"1.0a1 lt 1.0-dev": false,
"1.0a1 < 1.0-dev": false,
"1.0a1 le 1.0-dev": false,
"1.0a1 <= 1.0-dev": false,
"1.0a1 gt 1.0-dev": true,
"1.0a1 > 1.0-dev": true,
"1.0a1 ge 1.0-dev": true,
"1.0a1 >= 1.0-dev": true,
"1.0a1 eq 1.0-dev": false,
"1.0a1 = 1.0-dev": false,
"1.0a1 == 1.0-dev": false,
"1.0a1 ne 1.0-dev": true,
"1.0a1 <> 1.0-dev": true,
"1.0a1 != 1.0-dev": true,
"1.0a1 lt 1.0a1": false,
"1.0a1 < 1.0a1": false,
"1.0a1 le 1.0a1": true,
"1.0a1 <= 1.0a1": true,
"1.0a1 gt 1.0a1": false,
"1.0a1 > 1.0a1": false,
"1.0a1 ge 1.0a1": true,
"1.0a1 >= 1.0a1": true,
"1.0a1 eq 1.0a1": true,
"1.0a1 = 1.0a1": true,
"1.0a1 == 1.0a1": true,
"1.0a1 ne 1.0a1": false,
"1.0a1 <> 1.0a1": false,
"1.0a1 != 1.0a1": false,
"1.0a1 lt 1.0b1": true,
"1.0a1 < 1.0b1": true,
"1.0a1 le 1.0b1": true,
"1.0a1 <= 1.0b1": true,
"1.0a1 gt 1.0b1": false,
"1.0a1 > 1.0b1": false,
"1.0a1 ge 1.0b1": false,
"1.0a1 >= 1.0b1": false,
"1.0a1 eq 1.0b1": false,
"1.0a1 = 1.0b1": false,
"1.0a1 == 1.0b1": false,
"1.0a1 ne 1.0b1": true,
"1.0a1 <> 1.0b1": true,
"1.0a1 != 1.0b1": true,
"1.0a1 lt 1.0RC1": true,
"1.0a1 < 1.0RC1": true,
"1.0a1 le 1.0RC1": true,
"1.0a1 <= 1.0RC1": true,
"1.0a1 gt 1.0RC1": false,
"1.0a1 > 1.0RC1": false,
"1.0a1 ge 1.0RC1": false,
"1.0a1 >= 1.0RC1": false,
"1.0a1 eq 1.0RC1": false,
"1.0a1 = 1.0RC1": false,
"1.0a1 == 1.0RC1": false,
"1.0a1 ne 1.0RC1": true,
"1.0a1 <> 1.0RC1": true,
"1.0a1 != 1.0RC1": true,
"1.0a1 lt 1.0rc1": true,
"1.0a1 < 1.0rc1": true,
"1.0a1 le 1.0rc1": true,
"1.0a1 <= 1.0rc1": true,
"1.0a1 gt 1.0rc1": false,
"1.0a1 > 1.0rc1": false,
"1.0a1 ge 1.0rc1": false,
"1.0a1 >= 1.0rc1": false,
"1.0a1 eq 1.0rc1": false,
"1.0a1 = 1.0rc1": false,
"1.0a1 == 1.0rc1": false,
"1.0a1 ne 1.0rc1": true,
"1.0a1 <> 1.0rc1": true,
"1.0a1 != 1.0rc1": true,
"1.0a1 lt 1.0": true,
"1.0a1 < 1.0": true,
"1.0a1 le 1.0": true,
"1.0a1 <= 1.0": true,
"1.0a1 gt 1.0": false,
"1.0a1 > 1.0": false,
"1.0a1 ge 1.0": false,
"1.0a1 >= 1.0": false,
"1.0a1 eq 1.0": false,
"1.0a1 = 1.0": false,
"1.0a1 == 1.0": false,
"1.0a1 ne 1.0": true,
"1.0a1 <> 1.0": true,
"1.0a1 != 1.0": true,
"1.0a1 lt 1.0pl1": true,
"1.0a1 < 1.0pl1": true,
"1.0a1 le 1.0pl1": true,
"1.0a1 <= 1.0pl1": true,
"1.0a1 gt 1.0pl1": false,
"1.0a1 > 1.0pl1": false,
"1.0a1 ge 1.0pl1": false,
"1.0a1 >= 1.0pl1": false,
"1.0a1 eq 1.0pl1": false,
"1.0a1 = 1.0pl1": false,
"1.0a1 == 1.0pl1": false,
"1.0a1 ne 1.0pl1": true,
"1.0a1 <> 1.0pl1": true,
"1.0a1 != 1.0pl1": true,
"1.0b1 lt 1.0-dev": false,
"1.0b1 < 1.0-dev": false,
"1.0b1 le 1.0-dev": false,
"1.0b1 <= 1.0-dev": false,
"1.0b1 gt 1.0-dev": true,
"1.0b1 > 1.0-dev": true,
"1.0b1 ge 1.0-dev": true,
"1.0b1 >= 1.0-dev": true,
"1.0b1 eq 1.0-dev": false,
"1.0b1 = 1.0-dev": false,
"1.0b1 == 1.0-dev": false,
"1.0b1 ne 1.0-dev": true,
"1.0b1 <> 1.0-dev": true,
"1.0b1 != 1.0-dev": true,
"1.0b1 lt 1.0a1": false,
"1.0b1 < 1.0a1": false,
"1.0b1 le 1.0a1": false,
"1.0b1 <= 1.0a1": false,
"1.0b1 gt 1.0a1": true,
"1.0b1 > 1.0a1": true,
"1.0b1 ge 1.0a1": true,
"1.0b1 >= 1.0a1": true,
"1.0b1 eq 1.0a1": false,
"1.0b1 = 1.0a1": false,
"1.0b1 == 1.0a1": false,
"1.0b1 ne 1.0a1": true,
"1.0b1 <> 1.0a1": true,
"1.0b1 != 1.0a1": true,
"1.0b1 lt 1.0b1": false,
"1.0b1 < 1.0b1": false,
"1.0b1 le 1.0b1": true,
"1.0b1 <= 1.0b1": true,
"1.0b1 gt 1.0b1": false,
"1.0b1 > 1.0b1": false,
"1.0b1 ge 1.0b1": true,
"1.0b1 >= 1.0b1": true,
"1.0b1 eq 1.0b1": true,
"1.0b1 = 1.0b1": true,
"1.0b1 == 1.0b1": true,
"1.0b1 ne 1.0b1": false,
"1.0b1 <> 1.0b1": false,
"1.0b1 != 1.0b1": false,
"1.0b1 lt 1.0RC1": true,
"1.0b1 < 1.0RC1": true,
"1.0b1 le 1.0RC1": true,
"1.0b1 <= 1.0RC1": true,
"1.0b1 gt 1.0RC1": false,
"1.0b1 > 1.0RC1": false,
"1.0b1 ge 1.0RC1": false,
"1.0b1 >= 1.0RC1": false,
"1.0b1 eq 1.0RC1": false,
"1.0b1 = 1.0RC1": false,
"1.0b1 == 1.0RC1": false,
"1.0b1 ne 1.0RC1": true,
"1.0b1 <> 1.0RC1": true,
"1.0b1 != 1.0RC1": true,
"1.0b1 lt 1.0rc1": true,
"1.0b1 < 1.0rc1": true,
"1.0b1 le 1.0rc1": true,
"1.0b1 <= 1.0rc1": true,
"1.0b1 gt 1.0rc1": false,
"1.0b1 > 1.0rc1": false,
"1.0b1 ge 1.0rc1": false,
"1.0b1 >= 1.0rc1": false,
"1.0b1 eq 1.0rc1": false,
"1.0b1 = 1.0rc1": false,
"1.0b1 == 1.0rc1": false,
"1.0b1 ne 1.0rc1": true,
"1.0b1 <> 1.0rc1": true,
"1.0b1 != 1.0rc1": true,
"1.0b1 lt 1.0": true,
"1.0b1 < 1.0": true,
"1.0b1 le 1.0": true,
"1.0b1 <= 1.0": true,
"1.0b1 gt 1.0": false,
"1.0b1 > 1.0": false,
"1.0b1 ge 1.0": false,
"1.0b1 >= 1.0": false,
"1.0b1 eq 1.0": false,
"1.0b1 = 1.0": false,
"1.0b1 == 1.0": false,
"1.0b1 ne 1.0": true,
"1.0b1 <> 1.0": true,
"1.0b1 != 1.0": true,
"1.0b1 lt 1.0pl1": true,
"1.0b1 < 1.0pl1": true,
"1.0b1 le 1.0pl1": true,
"1.0b1 <= 1.0pl1": true,
"1.0b1 gt 1.0pl1": false,
"1.0b1 > 1.0pl1": false,
"1.0b1 ge 1.0pl1": false,
"1.0b1 >= 1.0pl1": false,
"1.0b1 eq 1.0pl1": false,
"1.0b1 = 1.0pl1": false,
"1.0b1 == 1.0pl1": false,
"1.0b1 ne 1.0pl1": true,
"1.0b1 <> 1.0pl1": true,
"1.0b1 != 1.0pl1": true,
"1.0RC1 lt 1.0-dev": false,
"1.0RC1 < 1.0-dev": false,
"1.0RC1 le 1.0-dev": false,
"1.0RC1 <= 1.0-dev": false,
"1.0RC1 gt 1.0-dev": true,
"1.0RC1 > 1.0-dev": true,
"1.0RC1 ge 1.0-dev": true,
"1.0RC1 >= 1.0-dev": true,
"1.0RC1 eq 1.0-dev": false,
"1.0RC1 = 1.0-dev": false,
"1.0RC1 == 1.0-dev": false,
"1.0RC1 ne 1.0-dev": true,
"1.0RC1 <> 1.0-dev": true,
"1.0RC1 != 1.0-dev": true,
"1.0RC1 lt 1.0a1": false,
"1.0RC1 < 1.0a1": false,
"1.0RC1 le 1.0a1": false,
"1.0RC1 <= 1.0a1": false,
"1.0RC1 gt 1.0a1": true,
"1.0RC1 > 1.0a1": true,
"1.0RC1 ge 1.0a1": true,
"1.0RC1 >= 1.0a1": true,
"1.0RC1 eq 1.0a1": false,
"1.0RC1 = 1.0a1": false,
"1.0RC1 == 1.0a1": false,
"1.0RC1 ne 1.0a1": true,
"1.0RC1 <> 1.0a1": true,
"1.0RC1 != 1.0a1": true,
"1.0RC1 lt 1.0b1": false,
"1.0RC1 < 1.0b1": false,
"1.0RC1 le 1.0b1": false,
"1.0RC1 <= 1.0b1": false,
"1.0RC1 gt 1.0b1": true,
"1.0RC1 > 1.0b1": true,
"1.0RC1 ge 1.0b1": true,
"1.0RC1 >= 1.0b1": true,
"1.0RC1 eq 1.0b1": false,
"1.0RC1 = 1.0b1": false,
"1.0RC1 == 1.0b1": false,
"1.0RC1 ne 1.0b1": true,
"1.0RC1 <> 1.0b1": true,
"1.0RC1 != 1.0b1": true,
"1.0RC1 lt 1.0RC1": false,
"1.0RC1 < 1.0RC1": false,
"1.0RC1 le 1.0RC1": true,
"1.0RC1 <= 1.0RC1": true,
"1.0RC1 gt 1.0RC1": false,
"1.0RC1 > 1.0RC1": false,
"1.0RC1 ge 1.0RC1": true,
"1.0RC1 >= 1.0RC1": true,
"1.0RC1 eq 1.0RC1": true,
"1.0RC1 = 1.0RC1": true,
"1.0RC1 == 1.0RC1": true,
"1.0RC1 ne 1.0RC1": false,
"1.0RC1 <> 1.0RC1": false,
"1.0RC1 != 1.0RC1": false,
"1.0RC1 lt 1.0rc1": false,
"1.0RC1 < 1.0rc1": false,
"1.0RC1 le 1.0rc1": true,
"1.0RC1 <= 1.0rc1": true,
"1.0RC1 gt 1.0rc1": false,
"1.0RC1 > 1.0rc1": false,
"1.0RC1 ge 1.0rc1": true,
"1.0RC1 >= 1.0rc1": true,
"1.0RC1 eq 1.0rc1": true,
"1.0RC1 = 1.0rc1": true,
"1.0RC1 == 1.0rc1": true,
"1.0RC1 ne 1.0rc1": false,
"1.0RC1 <> 1.0rc1": false,
"1.0RC1 != 1.0rc1": false,
"1.0RC1 lt 1.0": true,
"1.0RC1 < 1.0": true,
"1.0RC1 le 1.0": true,
"1.0RC1 <= 1.0": true,
"1.0RC1 gt 1.0": false,
"1.0RC1 > 1.0": false,
"1.0RC1 ge 1.0": false,
"1.0RC1 >= 1.0": false,
"1.0RC1 eq 1.0": false,
"1.0RC1 = 1.0": false,
"1.0RC1 == 1.0": false,
"1.0RC1 ne 1.0": true,
"1.0RC1 <> 1.0": true,
"1.0RC1 != 1.0": true,
"1.0RC1 lt 1.0pl1": true,
"1.0RC1 < 1.0pl1": true,
"1.0RC1 le 1.0pl1": true,
"1.0RC1 <= 1.0pl1": true,
"1.0RC1 gt 1.0pl1": false,
"1.0RC1 > 1.0pl1": false,
"1.0RC1 ge 1.0pl1": false,
"1.0RC1 >= 1.0pl1": false,
"1.0RC1 eq 1.0pl1": false,
"1.0RC1 = 1.0pl1": false,
"1.0RC1 == 1.0pl1": false,
"1.0RC1 ne 1.0pl1": true,
"1.0RC1 <> 1.0pl1": true,
"1.0RC1 != 1.0pl1": true,
"1.0rc1 lt 1.0-dev": false,
"1.0rc1 < 1.0-dev": false,
"1.0rc1 le 1.0-dev": false,
"1.0rc1 <= 1.0-dev": false,
"1.0rc1 gt 1.0-dev": true,
"1.0rc1 > 1.0-dev": true,
"1.0rc1 ge 1.0-dev": true,
"1.0rc1 >= 1.0-dev": true,
"1.0rc1 eq 1.0-dev": false,
"1.0rc1 = 1.0-dev": false,
"1.0rc1 == 1.0-dev": false,
"1.0rc1 ne 1.0-dev": true,
"1.0rc1 <> 1.0-dev": true,
"1.0rc1 != 1.0-dev": true,
"1.0rc1 lt 1.0a1": false,
"1.0rc1 < 1.0a1": false,
"1.0rc1 le 1.0a1": false,
"1.0rc1 <= 1.0a1": false,
"1.0rc1 gt 1.0a1": true,
"1.0rc1 > 1.0a1": true,
"1.0rc1 ge 1.0a1": true,
"1.0rc1 >= 1.0a1": true,
"1.0rc1 eq 1.0a1": false,
"1.0rc1 = 1.0a1": false,
"1.0rc1 == 1.0a1": false,
"1.0rc1 ne 1.0a1": true,
"1.0rc1 <> 1.0a1": true,
"1.0rc1 != 1.0a1": true,
"1.0rc1 lt 1.0b1": false,
"1.0rc1 < 1.0b1": false,
"1.0rc1 le 1.0b1": false,
"1.0rc1 <= 1.0b1": false,
"1.0rc1 gt 1.0b1": true,
"1.0rc1 > 1.0b1": true,
"1.0rc1 ge 1.0b1": true,
"1.0rc1 >= 1.0b1": true,
"1.0rc1 eq 1.0b1": false,
"1.0rc1 = 1.0b1": false,
"1.0rc1 == 1.0b1": false,
"1.0rc1 ne 1.0b1": true,
"1.0rc1 <> 1.0b1": true,
"1.0rc1 != 1.0b1": true,
"1.0rc1 lt 1.0RC1": false,
"1.0rc1 < 1.0RC1": false,
"1.0rc1 le 1.0RC1": true,
"1.0rc1 <= 1.0RC1": true,
"1.0rc1 gt 1.0RC1": false,
"1.0rc1 > 1.0RC1": false,
"1.0rc1 ge 1.0RC1": true,
"1.0rc1 >= 1.0RC1": true,
"1.0rc1 eq 1.0RC1": true,
"1.0rc1 = 1.0RC1": true,
"1.0rc1 == 1.0RC1": true,
"1.0rc1 ne 1.0RC1": false,
"1.0rc1 <> 1.0RC1": false,
"1.0rc1 != 1.0RC1": false,
"1.0rc1 lt 1.0rc1": false,
"1.0rc1 < 1.0rc1": false,
"1.0rc1 le 1.0rc1": true,
"1.0rc1 <= 1.0rc1": true,
"1.0rc1 gt 1.0rc1": false,
"1.0rc1 > 1.0rc1": false,
"1.0rc1 ge 1.0rc1": true,
"1.0rc1 >= 1.0rc1": true,
"1.0rc1 eq 1.0rc1": true,
"1.0rc1 = 1.0rc1": true,
"1.0rc1 == 1.0rc1": true,
"1.0rc1 ne 1.0rc1": false,
"1.0rc1 <> 1.0rc1": false,
"1.0rc1 != 1.0rc1": false,
"1.0rc1 lt 1.0": true,
"1.0rc1 < 1.0": true,
"1.0rc1 le 1.0": true,
"1.0rc1 <= 1.0": true,
"1.0rc1 gt 1.0": false,
"1.0rc1 > 1.0": false,
"1.0rc1 ge 1.0": false,
"1.0rc1 >= 1.0": false,
"1.0rc1 eq 1.0": false,
"1.0rc1 = 1.0": false,
"1.0rc1 == 1.0": false,
"1.0rc1 ne 1.0": true,
"1.0rc1 <> 1.0": true,
"1.0rc1 != 1.0": true,
"1.0rc1 lt 1.0pl1": true,
"1.0rc1 < 1.0pl1": true,
"1.0rc1 le 1.0pl1": true,
"1.0rc1 <= 1.0pl1": true,
"1.0rc1 gt 1.0pl1": false,
"1.0rc1 > 1.0pl1": false,
"1.0rc1 ge 1.0pl1": false,
"1.0rc1 >= 1.0pl1": false,
"1.0rc1 eq 1.0pl1": false,
"1.0rc1 = 1.0pl1": false,
"1.0rc1 == 1.0pl1": false,
"1.0rc1 ne 1.0pl1": true,
"1.0rc1 <> 1.0pl1": true,
"1.0rc1 != 1.0pl1": true,
"1.0 lt 1.0-dev": false,
"1.0 < 1.0-dev": false,
"1.0 le 1.0-dev": false,
"1.0 <= 1.0-dev": false,
"1.0 gt 1.0-dev": true,
"1.0 > 1.0-dev": true,
"1.0 ge 1.0-dev": true,
"1.0 >= 1.0-dev": true,
"1.0 eq 1.0-dev": false,
"1.0 = 1.0-dev": false,
"1.0 == 1.0-dev": false,
"1.0 ne 1.0-dev": true,
"1.0 <> 1.0-dev": true,
"1.0 != 1.0-dev": true,
"1.0 lt 1.0a1": false,
"1.0 < 1.0a1": false,
"1.0 le 1.0a1": false,
"1.0 <= 1.0a1": false,
"1.0 gt 1.0a1": true,
"1.0 > 1.0a1": true,
"1.0 ge 1.0a1": true,
"1.0 >= 1.0a1": true,
"1.0 eq 1.0a1": false,
"1.0 = 1.0a1": false,
"1.0 == 1.0a1": false,
"1.0 ne 1.0a1": true,
"1.0 <> 1.0a1": true,
"1.0 != 1.0a1": true,
"1.0 lt 1.0b1": false,
"1.0 < 1.0b1": false,
"1.0 le 1.0b1": false,
"1.0 <= 1.0b1": false,
"1.0 gt 1.0b1": true,
"1.0 > 1.0b1": true,
"1.0 ge 1.0b1": true,
"1.0 >= 1.0b1": true,
"1.0 eq 1.0b1": false,
"1.0 = 1.0b1": false,
"1.0 == 1.0b1": false,
"1.0 ne 1.0b1": true,
"1.0 <> 1.0b1": true,
"1.0 != 1.0b1": true,
"1.0 lt 1.0RC1": false,
"1.0 < 1.0RC1": false,
"1.0 le 1.0RC1": false,
"1.0 <= 1.0RC1": false,
"1.0 gt 1.0RC1": true,
"1.0 > 1.0RC1": true,
"1.0 ge 1.0RC1": true,
"1.0 >= 1.0RC1": true,
"1.0 eq 1.0RC1": false,
"1.0 = 1.0RC1": false,
"1.0 == 1.0RC1": false,
"1.0 ne 1.0RC1": true,
"1.0 <> 1.0RC1": true,
"1.0 != 1.0RC1": true,
"1.0 lt 1.0rc1": false,
"1.0 < 1.0rc1": false,
"1.0 le 1.0rc1": false,
"1.0 <= 1.0rc1": false,
"1.0 gt 1.0rc1": true,
"1.0 > 1.0rc1": true,
"1.0 ge 1.0rc1": true,
"1.0 >= 1.0rc1": true,
"1.0 eq 1.0rc1": false,
"1.0 = 1.0rc1": false,
"1.0 == 1.0rc1": false,
"1.0 ne 1.0rc1": true,
"1.0 <> 1.0rc1": true,
"1.0 != 1.0rc1": true,
"1.0 lt 1.0": false,
"1.0 < 1.0": false,
"1.0 le 1.0": true,
"1.0 <= 1.0": true,
"1.0 gt 1.0": false,
"1.0 > 1.0": false,
"1.0 ge 1.0": true,
"1.0 >= 1.0": true,
"1.0 eq 1.0": true,
"1.0 = 1.0": true,
"1.0 == 1.0": true,
"1.0 ne 1.0": false,
"1.0 <> 1.0": false,
"1.0 != 1.0": false,
"1.0 lt 1.0pl1": true,
"1.0 < 1.0pl1": true,
"1.0 le 1.0pl1": true,
"1.0 <= 1.0pl1": true,
"1.0 gt 1.0pl1": false,
"1.0 > 1.0pl1": false,
"1.0 ge 1.0pl1": false,
"1.0 >= 1.0pl1": false,
"1.0 eq 1.0pl1": false,
"1.0 = 1.0pl1": false,
"1.0 == 1.0pl1": false,
"1.0 ne 1.0pl1": true,
"1.0 <> 1.0pl1": true,
"1.0 != 1.0pl1": true,
"1.0pl1 lt 1.0-dev": false,
"1.0pl1 < 1.0-dev": false,
"1.0pl1 le 1.0-dev": false,
"1.0pl1 <= 1.0-dev": false,
"1.0pl1 gt 1.0-dev": true,
"1.0pl1 > 1.0-dev": true,
"1.0pl1 ge 1.0-dev": true,
"1.0pl1 >= 1.0-dev": true,
"1.0pl1 eq 1.0-dev": false,
"1.0pl1 = 1.0-dev": false,
"1.0pl1 == 1.0-dev": false,
"1.0pl1 ne 1.0-dev": true,
"1.0pl1 <> 1.0-dev": true,
"1.0pl1 != 1.0-dev": true,
"1.0pl1 lt 1.0a1": false,
"1.0pl1 < 1.0a1": false,
"1.0pl1 le 1.0a1": false,
"1.0pl1 <= 1.0a1": false,
"1.0pl1 gt 1.0a1": true,
"1.0pl1 > 1.0a1": true,
"1.0pl1 ge 1.0a1": true,
"1.0pl1 >= 1.0a1": true,
"1.0pl1 eq 1.0a1": false,
"1.0pl1 = 1.0a1": false,
"1.0pl1 == 1.0a1": false,
"1.0pl1 ne 1.0a1": true,
"1.0pl1 <> 1.0a1": true,
"1.0pl1 != 1.0a1": true,
"1.0pl1 lt 1.0b1": false,
"1.0pl1 < 1.0b1": false,
"1.0pl1 le 1.0b1": false,
"1.0pl1 <= 1.0b1": false,
"1.0pl1 gt 1.0b1": true,
"1.0pl1 > 1.0b1": true,
"1.0pl1 ge 1.0b1": true,
"1.0pl1 >= 1.0b1": true,
"1.0pl1 eq 1.0b1": false,
"1.0pl1 = 1.0b1": false,
"1.0pl1 == 1.0b1": false,
"1.0pl1 ne 1.0b1": true,
"1.0pl1 <> 1.0b1": true,
"1.0pl1 != 1.0b1": true,
"1.0pl1 lt 1.0RC1": false,
"1.0pl1 < 1.0RC1": false,
"1.0pl1 le 1.0RC1": false,
"1.0pl1 <= 1.0RC1": false,
"1.0pl1 gt 1.0RC1": true,
"1.0pl1 > 1.0RC1": true,
"1.0pl1 ge 1.0RC1": true,
"1.0pl1 >= 1.0RC1": true,
"1.0pl1 eq 1.0RC1": false,
"1.0pl1 = 1.0RC1": false,
"1.0pl1 == 1.0RC1": false,
"1.0pl1 ne 1.0RC1": true,
"1.0pl1 <> 1.0RC1": true,
"1.0pl1 != 1.0RC1": true,
"1.0pl1 lt 1.0rc1": false,
"1.0pl1 < 1.0rc1": false,
"1.0pl1 le 1.0rc1": false,
"1.0pl1 <= 1.0rc1": false,
"1.0pl1 gt 1.0rc1": true,
"1.0pl1 > 1.0rc1": true,
"1.0pl1 ge 1.0rc1": true,
"1.0pl1 >= 1.0rc1": true,
"1.0pl1 eq 1.0rc1": false,
"1.0pl1 = 1.0rc1": false,
"1.0pl1 == 1.0rc1": false,
"1.0pl1 ne 1.0rc1": true,
"1.0pl1 <> 1.0rc1": true,
"1.0pl1 != 1.0rc1": true,
"1.0pl1 lt 1.0": false,
"1.0pl1 < 1.0": false,
"1.0pl1 le 1.0": false,
"1.0pl1 <= 1.0": false,
"1.0pl1 gt 1.0": true,
"1.0pl1 > 1.0": true,
"1.0pl1 ge 1.0": true,
"1.0pl1 >= 1.0": true,
"1.0pl1 eq 1.0": false,
"1.0pl1 = 1.0": false,
"1.0pl1 == 1.0": false,
"1.0pl1 ne 1.0": true,
"1.0pl1 <> 1.0": true,
"1.0pl1 != 1.0": true,
"1.0pl1 lt 1.0pl1": false,
"1.0pl1 < 1.0pl1": false,
"1.0pl1 le 1.0pl1": true,
"1.0pl1 <= 1.0pl1": true,
"1.0pl1 gt 1.0pl1": false,
"1.0pl1 > 1.0pl1": false,
"1.0pl1 ge 1.0pl1": true,
"1.0pl1 >= 1.0pl1": true,
"1.0pl1 eq 1.0pl1": true,
"1.0pl1 = 1.0pl1": true,
"1.0pl1 == 1.0pl1": true,
"1.0pl1 ne 1.0pl1": false,
"1.0pl1 <> 1.0pl1": false,
"1.0pl1 != 1.0pl1": false,
"2.2.3.0 < 2.4.0.0-dev": true,
//Test unnormalized strings
"2.3.4 < v3.1.2": false,
"dev-master = 9999999-dev": false,
}
func TestCompareNormalized(t *testing.T) {
for in, out := range compareNormalizedVersionValues {
v := strings.Split(in, " ")
if x := CompareNormalized(v[0], v[2], v[1]); x != out {
t.Errorf("FAIL: CompareNormalized(%v) = %v: want %v", in, x, out)
}
}
}
var compareVersionValues = map[string]bool{
"2.3.4 < v3.1.2": true,
"dev-master = 9999999-dev": true,
}
func TestCompare(t *testing.T) {
for in, out := range compareVersionValues {
v := strings.Split(in, " ")
if x := Compare(v[0], v[2], v[1]); x != out {
t.Errorf("FAIL: Compare(%v) = %v: want %v", in, x, out)
}
}
}