7 func TestNewConstraint(t *testing.T) {
16 {">= 1.2, < 1.0", 2, false},
19 {"11387778780781445675529500000000000000000", 0, true},
22 for _, tc := range cases {
23 v, err := NewConstraint(tc.input)
24 if tc.err && err == nil {
25 t.Fatalf("expected error for input: %s", tc.input)
26 } else if !tc.err && err != nil {
27 t.Fatalf("error for input %s: %s", tc.input, err)
30 if len(v) != tc.count {
31 t.Fatalf("input: %s\nexpected len: %d\nactual: %d",
32 tc.input, tc.count, len(v))
37 func TestConstraintCheck(t *testing.T) {
43 {">= 1.0, < 1.2", "1.1.5", true},
44 {"< 1.0, < 1.2", "1.1.5", false},
45 {"= 1.0", "1.1.5", false},
46 {"= 1.0", "1.0.0", true},
47 {"1.0", "1.0.0", true},
48 {"~> 1.0", "2.0", false},
49 {"~> 1.0", "1.1", true},
50 {"~> 1.0", "1.2.3", true},
51 {"~> 1.0.0", "1.2.3", false},
52 {"~> 1.0.0", "1.0.7", true},
53 {"~> 1.0.0", "1.1.0", false},
54 {"~> 1.0.7", "1.0.4", false},
55 {"~> 1.0.7", "1.0.7", true},
56 {"~> 1.0.7", "1.0.8", true},
57 {"~> 1.0.7", "1.0.7.5", true},
58 {"~> 1.0.7", "1.0.6.99", false},
59 {"~> 1.0.7", "1.0.8.0", true},
60 {"~> 1.0.9.5", "1.0.9.5", true},
61 {"~> 1.0.9.5", "1.0.9.4", false},
62 {"~> 1.0.9.5", "1.0.9.6", true},
63 {"~> 1.0.9.5", "1.0.9.5.0", true},
64 {"~> 1.0.9.5", "1.0.9.5.1", true},
65 {"~> 2.0", "2.1.0-beta", false},
66 {"~> 2.1.0-a", "2.2.0", false},
67 {"~> 2.1.0-a", "2.1.0", false},
68 {"~> 2.1.0-a", "2.1.0-beta", true},
69 {"~> 2.1.0-a", "2.2.0-alpha", false},
70 {"> 2.0", "2.1.0-beta", false},
71 {">= 2.1.0-a", "2.1.0-beta", true},
72 {">= 2.1.0-a", "2.1.1-beta", false},
73 {">= 2.0.0", "2.1.0-beta", false},
74 {">= 2.1.0-a", "2.1.1", true},
75 {">= 2.1.0-a", "2.1.1-beta", false},
76 {">= 2.1.0-a", "2.1.0", true},
77 {"<= 2.1.0-a", "2.0.0", true},
80 for _, tc := range cases {
81 c, err := NewConstraint(tc.constraint)
83 t.Fatalf("err: %s", err)
86 v, err := NewVersion(tc.version)
88 t.Fatalf("err: %s", err)
93 if actual != expected {
94 t.Fatalf("Version: %s\nConstraint: %s\nExpected: %#v",
95 tc.version, tc.constraint, expected)
100 func TestConstraintsString(t *testing.T) {
105 {">= 1.0, < 1.2", ""},
109 for _, tc := range cases {
110 c, err := NewConstraint(tc.constraint)
112 t.Fatalf("err: %s", err)
116 expected := tc.result
118 expected = tc.constraint
121 if actual != expected {
122 t.Fatalf("Constraint: %s\nExpected: %#v\nActual: %s",
123 tc.constraint, expected, actual)