5
. "launchpad.net/gocheck"
11
var _ = Suite(suite{})
13
func Test(t *testing.T) {
9
17
var cmpTests = []struct {
15
{"1.0.0", "1.0.0", true, false, true},
16
{"01.0.0", "1.0.0", true, false, true},
17
{"10.0.0", "9.0.0", false, false, false},
18
{"1.0.0", "1.0.1", true, true, false},
19
{"1.0.1", "1.0.0", true, false, false},
20
{"1.0.0", "1.1.0", true, true, false},
21
{"1.1.0", "1.0.0", false, false, false},
22
{"1.0.0", "2.0.0", false, true, false},
23
{"2.0.0", "1.0.0", false, false, false},
26
{"1.0.0", "1.0.0-alpha", true, false, false},
27
{"1.0.0", "1.0.1-alpha", false, true, false},
28
{"1.0.0-alpha", "1.0.0-beta", true, true, false},
29
{"1.0.0-9999", "1.0.0-beta", true, true, false},
30
{"1.0.0-99999999999", "1.0.0-199999999999.0.0", true, true, false},
31
{"1.0.0-beta.9", "1.0.0-alpha.10", true, false, false},
32
{"1.0.0-alpha.9", "1.0.0-alpha.10", true, true, false},
33
{"1.0.0-alpha", "1.0.0-alpha-x", true, true, false},
34
{"1.0.0-01", "1.0.0-1", true, false, true}, // N.B. equal but strings are not.
37
{"1.0.0", "1.0.0+build", true, true, false},
38
{"1.0.0+build", "1.0.0+crime", true, true, false},
39
{"1.0.0+build.9", "1.0.0+build.10", true, true, false},
40
{"1.0.0+build", "1.0.0+build-x", true, true, false},
42
// semantics of pre-release vs build are poorly specified.
43
{"1.0.0+build", "1.0.0-alpha+build", true, false, false},
22
{"1.0.0", "1.0.0", false, true},
23
{"01.0.0", "1.0.0", false, true},
24
{"10.0.0", "9.0.0", false, false},
25
{"1.0.0", "1.0.1", true, false},
26
{"1.0.1", "1.0.0", false, false},
27
{"1.0.0", "1.1.0", true, false},
28
{"1.1.0", "1.0.0", false, false},
29
{"1.0.0", "2.0.0", true, false},
30
{"2.0.0", "1.0.0", false, false},
46
func TestComparison(t *testing.T) {
33
func (suite) TestComparison(c *C) {
47
34
for i, test := range cmpTests {
48
36
v1, err := version.Parse(test.v1)
50
t.Fatalf("test %d; %q failed to parse: %v", i, v1, err)
52
38
v2, err := version.Parse(test.v2)
54
t.Fatalf("test %d; %q failed to parse: %v", i, v2, err)
56
compat := v1.Compatible(v2)
57
40
less := v1.Less(v2)
59
if compat != test.compat {
60
t.Errorf("test %d; %q vs %q compatibility mismatch; expected %v", i, test.v1, test.v2, test.compat)
62
if less != test.less {
63
t.Errorf("test %d; %q vs %q (%v vs %v) less mismatch; expected %v", i, test.v1, test.v2, v1, v2, test.less)
42
c.Check(less, Equals, test.less)
67
t.Errorf("test %d; %q vs %q; a==b but b < a", i, test.v1, test.v2)
44
c.Check(gt, Equals, false)
70
if gteq != !test.less {
71
t.Errorf("test %d; %q vs %q; inverted less unexpected result; expected %v", i, test.v1, test.v2, !test.less)
46
c.Check(gt, Equals, !test.less)
77
51
var parseTests = []struct {
79
expect *version.Version
54
expect version.Version
81
{"11.234.3456", &version.Version{Major: 11, Minor: 234, Patch: 3456}},
82
{"0.0.0-09az-x-y.z.foo", &version.Version{Prerelease: []string{"09az-x-y", "z", "foo"}}},
83
{"0.0.0+xyz.p-q", &version.Version{Build: []string{"xyz", "p-q"}}},
84
{"1.2.3-alpha+build", &version.Version{
88
Prerelease: []string{"alpha"},
89
Build: []string{"build"},
91
{"1.0.0+build", &version.Version{
93
Build: []string{"build"},
63
expect: version.Version{Major: 1},
68
expect: version.Version{Minor: 1},
73
expect: version.Version{Patch: 1},
78
expect: version.Version{Major: 10, Minor: 234, Patch: 3456},
83
err: "invalid version.*",
87
err: "invalid version.*",
97
func TestParse(t *testing.T) {
91
func (suite) TestParse(c *C) {
98
92
for i, test := range parseTests {
99
94
v, err := version.Parse(test.v)
101
t.Fatalf("test %d; %q parse error %v", i, v, err)
103
if !reflect.DeepEqual(v, test.expect) {
104
t.Errorf("test %d; %q expected %v got %v", i, test.v, test.expect, v)
96
c.Assert(err, ErrorMatches, test.err)
99
c.Assert(v, Equals, test.expect)
100
c.Check(v.IsDev(), Equals, test.dev)