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  }