gopkg.in/essentialkaos/ek.v3@v3.5.1/version/version_test.go (about)

     1  package version
     2  
     3  // ////////////////////////////////////////////////////////////////////////////////// //
     4  //                                                                                    //
     5  //                     Copyright (c) 2009-2016 Essential Kaos                         //
     6  //      Essential Kaos Open Source License <http://essentialkaos.com/ekol?en>         //
     7  //                                                                                    //
     8  // ////////////////////////////////////////////////////////////////////////////////// //
     9  
    10  import (
    11  	"testing"
    12  
    13  	. "pkg.re/check.v1"
    14  )
    15  
    16  // ////////////////////////////////////////////////////////////////////////////////// //
    17  
    18  func Test(t *testing.T) { TestingT(t) }
    19  
    20  type VersionSuite struct{}
    21  
    22  // ////////////////////////////////////////////////////////////////////////////////// //
    23  
    24  var _ = Suite(&VersionSuite{})
    25  
    26  // ////////////////////////////////////////////////////////////////////////////////// //
    27  
    28  func (s *VersionSuite) TestMajor(c *C) {
    29  	c.Assert(Parse("1").Major(), Equals, 1)
    30  	c.Assert(Parse("2.0.0").Major(), Equals, 2)
    31  	c.Assert(Parse("3.4.5").Major(), Equals, 3)
    32  	c.Assert(Parse("4-beta1").Major(), Equals, 4)
    33  	c.Assert(Parse("5-beta2+exp.sha.5114f85").Major(), Equals, 5)
    34  }
    35  
    36  func (s *VersionSuite) TestMinor(c *C) {
    37  	c.Assert(Parse("1").Minor(), Equals, 0)
    38  	c.Assert(Parse("2.1").Minor(), Equals, 1)
    39  	c.Assert(Parse("3.4.5").Minor(), Equals, 4)
    40  	c.Assert(Parse("4-alpha1").Minor(), Equals, 0)
    41  	c.Assert(Parse("5-beta1+sha:5114f85").Minor(), Equals, 0)
    42  	c.Assert(Parse("6.12.1-beta2+exp.sha.5114f85").Minor(), Equals, 12)
    43  }
    44  
    45  func (s *VersionSuite) TestPatch(c *C) {
    46  	c.Assert(Parse("1").Patch(), Equals, 0)
    47  	c.Assert(Parse("2.1").Patch(), Equals, 0)
    48  	c.Assert(Parse("3.4.5").Patch(), Equals, 5)
    49  	c.Assert(Parse("4-alpha1").Patch(), Equals, 0)
    50  	c.Assert(Parse("5-beta1+sha:5114f85").Patch(), Equals, 0)
    51  	c.Assert(Parse("6.12.1-beta2+exp.sha.5114f85").Patch(), Equals, 1)
    52  }
    53  
    54  func (s *VersionSuite) TestPre(c *C) {
    55  	c.Assert(Parse("1").PreRelease(), Equals, "")
    56  	c.Assert(Parse("2.1").PreRelease(), Equals, "")
    57  	c.Assert(Parse("3.4.5").PreRelease(), Equals, "")
    58  	c.Assert(Parse("3.4.5-").PreRelease(), Equals, "")
    59  	c.Assert(Parse("4-alpha1").PreRelease(), Equals, "alpha1")
    60  	c.Assert(Parse("5-beta1+sha:5114f85").PreRelease(), Equals, "beta1")
    61  	c.Assert(Parse("6.12.1-beta2+exp.sha.5114f85").PreRelease(), Equals, "beta2")
    62  }
    63  
    64  func (s *VersionSuite) TestBuild(c *C) {
    65  	c.Assert(Parse("1").Build(), Equals, "")
    66  	c.Assert(Parse("2.1").Build(), Equals, "")
    67  	c.Assert(Parse("3.4.5").Build(), Equals, "")
    68  	c.Assert(Parse("4-alpha1+").Build(), Equals, "")
    69  	c.Assert(Parse("5-beta1+sha:5114f85").Build(), Equals, "sha:5114f85")
    70  	c.Assert(Parse("6.12.1-beta2+exp.sha.5114f85").Build(), Equals, "exp.sha.5114f85")
    71  }
    72  
    73  func (s *VersionSuite) TestString(c *C) {
    74  	c.Assert(Parse("1").String(), Equals, "1")
    75  	c.Assert(Parse("2.1").String(), Equals, "2.1")
    76  	c.Assert(Parse("3.4.5").String(), Equals, "3.4.5")
    77  	c.Assert(Parse("5-beta1+sha:5114f85").String(), Equals, "5-beta1+sha:5114f85")
    78  	c.Assert(Parse("6.12.1-beta2+exp.sha.5114f85").String(), Equals, "6.12.1-beta2+exp.sha.5114f85")
    79  }
    80  
    81  func (s *VersionSuite) TestValidation(c *C) {
    82  	var v1 *Version
    83  	var v2 = &Version{}
    84  
    85  	c.Assert(v1.Valid(), Equals, false)
    86  	c.Assert(v2.Valid(), Equals, false)
    87  	c.Assert(Parse("A").Valid(), Equals, false)
    88  	c.Assert(Parse("").Valid(), Equals, false)
    89  
    90  	c.Assert(Parse("1").Valid(), Equals, true)
    91  	c.Assert(Parse("2.1").Valid(), Equals, true)
    92  	c.Assert(Parse("3.4.5").Valid(), Equals, true)
    93  	c.Assert(Parse("5-beta1+sha:5114f85").Valid(), Equals, true)
    94  	c.Assert(Parse("6.12.1-beta2+exp.sha.5114f85").Valid(), Equals, true)
    95  }
    96  
    97  func (s *VersionSuite) TestErrors(c *C) {
    98  	var v1 *Version
    99  	var v2 = &Version{}
   100  
   101  	c.Assert(Parse("A").Major(), Equals, -1)
   102  	c.Assert(Parse("A").Minor(), Equals, -1)
   103  	c.Assert(Parse("A").Patch(), Equals, -1)
   104  	c.Assert(Parse("A").PreRelease(), Equals, "")
   105  	c.Assert(Parse("A").Build(), Equals, "")
   106  
   107  	c.Assert(Parse("").Major(), Equals, -1)
   108  	c.Assert(Parse("").Minor(), Equals, -1)
   109  	c.Assert(Parse("").Patch(), Equals, -1)
   110  	c.Assert(Parse("").PreRelease(), Equals, "")
   111  	c.Assert(Parse("").Build(), Equals, "")
   112  
   113  	c.Assert(v1.Major(), Equals, -1)
   114  	c.Assert(v1.Minor(), Equals, -1)
   115  	c.Assert(v1.Patch(), Equals, -1)
   116  	c.Assert(v1.PreRelease(), Equals, "")
   117  	c.Assert(v1.Build(), Equals, "")
   118  	c.Assert(v1.String(), Equals, "")
   119  
   120  	c.Assert(v2.Major(), Equals, -1)
   121  	c.Assert(v2.Minor(), Equals, -1)
   122  	c.Assert(v2.Patch(), Equals, -1)
   123  	c.Assert(v2.PreRelease(), Equals, "")
   124  	c.Assert(v2.Build(), Equals, "")
   125  	c.Assert(v2.String(), Equals, "")
   126  }
   127  
   128  func (s *VersionSuite) TestComparison(c *C) {
   129  	c.Assert(Parse("1").Equal(Parse("1")), Equals, true)
   130  	c.Assert(Parse("1").Equal(Parse("2")), Equals, false)
   131  	c.Assert(Parse("1").Equal(Parse("1.0")), Equals, true)
   132  	c.Assert(Parse("1").Equal(Parse("1.1")), Equals, false)
   133  	c.Assert(Parse("1").Equal(Parse("1.0.0")), Equals, true)
   134  	c.Assert(Parse("1").Equal(Parse("1.0.1")), Equals, false)
   135  	c.Assert(Parse("1").Equal(Parse("1.0.0-alpha1")), Equals, false)
   136  	c.Assert(Parse("1").Equal(Parse("1.0.0+sha:5114f85")), Equals, false)
   137  	c.Assert(Parse("1.0.0+sha:5114f85").Equal(Parse("1.0.0+sha:5114f85")), Equals, true)
   138  
   139  	c.Assert(Parse("1").Less(Parse("1")), Equals, false)
   140  	c.Assert(Parse("1").Less(Parse("1.0")), Equals, false)
   141  	c.Assert(Parse("1").Less(Parse("1.0.0")), Equals, false)
   142  	c.Assert(Parse("1").Less(Parse("2")), Equals, true)
   143  	c.Assert(Parse("1").Less(Parse("1.1")), Equals, true)
   144  	c.Assert(Parse("1").Less(Parse("1.0.1")), Equals, true)
   145  	c.Assert(Parse("1.0.1-alpha").Less(Parse("1.0.1")), Equals, true)
   146  	c.Assert(Parse("1.0.1").Less(Parse("1.0.1-alpha")), Equals, false)
   147  	c.Assert(Parse("1.0.1-alpha").Less(Parse("1.0.1-beta")), Equals, true)
   148  	c.Assert(Parse("1.0.1-gamma").Less(Parse("1.0.1-beta")), Equals, false)
   149  	c.Assert(Parse("1.0.1-alpha").Less(Parse("1.0.1-alpha1")), Equals, true)
   150  	c.Assert(Parse("1.0.1-a4").Less(Parse("1.0.1-a5")), Equals, true)
   151  	c.Assert(Parse("1.0.1-a5").Less(Parse("1.0.1-a5")), Equals, false)
   152  
   153  	c.Assert(Parse("1").Greater(Parse("1")), Equals, false)
   154  	c.Assert(Parse("1").Greater(Parse("1.0")), Equals, false)
   155  	c.Assert(Parse("1").Greater(Parse("1.0.0")), Equals, false)
   156  	c.Assert(Parse("2").Greater(Parse("1")), Equals, true)
   157  	c.Assert(Parse("1.1").Greater(Parse("1")), Equals, true)
   158  	c.Assert(Parse("1.0.1").Greater(Parse("1")), Equals, true)
   159  	c.Assert(Parse("1.0.1-alpha").Greater(Parse("1.0.1")), Equals, false)
   160  	c.Assert(Parse("1.0.1").Greater(Parse("1.0.1-alpha")), Equals, true)
   161  	c.Assert(Parse("1.0.1-alpha").Greater(Parse("1.0.1-beta")), Equals, false)
   162  	c.Assert(Parse("1.0.1-gamma").Greater(Parse("1.0.1-beta")), Equals, true)
   163  	c.Assert(Parse("1.0.1-alpha").Greater(Parse("1.0.1-alpha1")), Equals, false)
   164  	c.Assert(Parse("1.0.1-a4").Greater(Parse("1.0.1-a5")), Equals, false)
   165  	c.Assert(Parse("1.0.1-a5").Greater(Parse("1.0.1-a5")), Equals, false)
   166  
   167  	c.Assert(Parse("1").Contains(Parse("1")), Equals, true)
   168  	c.Assert(Parse("1").Contains(Parse("1.1")), Equals, true)
   169  	c.Assert(Parse("1").Contains(Parse("1.0.1")), Equals, true)
   170  	c.Assert(Parse("2").Contains(Parse("1")), Equals, false)
   171  	c.Assert(Parse("1.1").Contains(Parse("1.2")), Equals, false)
   172  	c.Assert(Parse("1.0").Contains(Parse("1.0.2")), Equals, true)
   173  	c.Assert(Parse("1.0.1").Contains(Parse("1.0.2")), Equals, false)
   174  	c.Assert(Parse("1.0.1").Contains(Parse("1.0.1-alpha")), Equals, false)
   175  }