github.com/aleksi/gonuts.io@v0.0.0-20130622121132-3b0f2d1999fb/gopath/src/gonuts.io/AlekSi/nut/version_test.go (about) 1 package nut_test 2 3 import ( 4 "encoding/json" 5 6 . "." 7 . "launchpad.net/gocheck" 8 ) 9 10 type V struct { 11 versions []string 12 badVersions []string 13 } 14 15 var _ = Suite(&V{}) 16 17 func (f *V) SetUpSuite(c *C) { 18 f.versions = []string{ 19 "0.0.0", "0.0.1", "0.0.2", 20 "0.1.0", "0.1.1", "0.1.2", 21 "1.0.0", "1.0.1", "1.0.2", 22 "1.1.0", "1.1.1", "1.1.2", 23 "1.1.10", "1.10.1", "10.1.1", "10.10.10", 24 } 25 f.badVersions = []string{ 26 "1.0.-1", 27 } 28 } 29 30 func (f *V) TestNew(c *C) { 31 for _, vs := range f.versions { 32 v, err := NewVersion(vs) 33 c.Check(err, IsNil) 34 c.Check(v.String(), Equals, vs) 35 } 36 37 for _, vs := range f.badVersions { 38 v, err := NewVersion(vs) 39 c.Check(err, Not(IsNil)) 40 c.Check(v.String(), Equals, "0.0.0") 41 } 42 } 43 44 func (f *V) TestLess(c *C) { 45 for i, vi := range f.versions { 46 left, err := NewVersion(vi) 47 c.Assert(err, IsNil) 48 49 for _, vj := range f.versions[:i] { 50 right, err := NewVersion(vj) 51 c.Assert(err, IsNil) 52 c.Check(left.Less(right), Equals, false, Commentf("Expected %s >= %s", left, right)) 53 } 54 for _, vj := range f.versions[i+1:] { 55 right, err := NewVersion(vj) 56 c.Assert(err, IsNil) 57 c.Check(left.Less(right), Equals, true, Commentf("Expected %s < %s", left, right)) 58 } 59 } 60 } 61 62 func (f *V) TestJSON(c *C) { 63 for _, vs := range f.versions { 64 v, err := NewVersion(vs) 65 c.Assert(err, IsNil) 66 67 b, err := json.Marshal(v) 68 c.Check(string(b), Equals, `"`+vs+`"`) 69 c.Assert(err, IsNil) 70 71 v2 := new(Version) 72 err = json.Unmarshal(b, v2) 73 c.Check(v2, DeepEquals, v) 74 c.Assert(err, IsNil) 75 } 76 }