versionomy 0.1.3 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -36,20 +36,20 @@
36
36
 
37
37
 
38
38
  require 'test/unit'
39
- require File.expand_path("#{File.dirname(__FILE__)}/../lib/versionomy.rb")
39
+ require ::File.expand_path("#{::File.dirname(__FILE__)}/../lib/versionomy.rb")
40
40
 
41
41
 
42
42
  module Versionomy
43
43
  module Tests # :nodoc:
44
44
 
45
- class TestStandardComparison < Test::Unit::TestCase # :nodoc:
45
+ class TestStandardComparison < ::Test::Unit::TestCase # :nodoc:
46
46
 
47
47
 
48
48
  # Test comparisons with difference in major.
49
49
 
50
50
  def test_comparison_major
51
- value1_ = Versionomy.create(:major => 2, :tiny => 1, :tiny2 => 3, :release_type => :release_candidate, :release_candidate_version => 2)
52
- value2_ = Versionomy.create(:major => 3, :release_type => :alpha)
51
+ value1_ = ::Versionomy.create(:major => 2, :tiny => 1, :tiny2 => 3, :release_type => :release_candidate, :release_candidate_version => 2)
52
+ value2_ = ::Versionomy.create(:major => 3, :release_type => :alpha)
53
53
  assert(value2_ > value1_)
54
54
  end
55
55
 
@@ -57,8 +57,8 @@ module Versionomy
57
57
  # Test comparisons with difference in minor.
58
58
 
59
59
  def test_comparison_minor
60
- value1_ = Versionomy.create(:major => 2, :tiny => 1, :tiny2 => 3, :release_type => :release_candidate, :release_candidate_version => 2)
61
- value2_ = Versionomy.create(:major => 2, :minor => 1, :release_type => :alpha)
60
+ value1_ = ::Versionomy.create(:major => 2, :tiny => 1, :tiny2 => 3, :release_type => :release_candidate, :release_candidate_version => 2)
61
+ value2_ = ::Versionomy.create(:major => 2, :minor => 1, :release_type => :alpha)
62
62
  assert(value2_ > value1_)
63
63
  end
64
64
 
@@ -66,8 +66,8 @@ module Versionomy
66
66
  # Test comparisons with difference in release type.
67
67
 
68
68
  def test_comparison_release_type
69
- value1_ = Versionomy.create(:major => 2, :release_type => :alpha, :alpha_version => 5)
70
- value2_ = Versionomy.create(:major => 2, :release_type => :release_candidate, :release_candidate_version => 2)
69
+ value1_ = ::Versionomy.create(:major => 2, :release_type => :alpha, :alpha_version => 5)
70
+ value2_ = ::Versionomy.create(:major => 2, :release_type => :release_candidate, :release_candidate_version => 2)
71
71
  assert(value2_ > value1_)
72
72
  end
73
73
 
@@ -75,8 +75,8 @@ module Versionomy
75
75
  # Test equality for a simple case.
76
76
 
77
77
  def test_equality_simple
78
- value1_ = Versionomy.create(:major => 2, :minor => 0, :release_type => :alpha, :alpha_version => 5)
79
- value2_ = Versionomy.create(:major => 2, :release_type => :alpha, :alpha_version => 5)
78
+ value1_ = ::Versionomy.create(:major => 2, :minor => 0, :release_type => :alpha, :alpha_version => 5)
79
+ value2_ = ::Versionomy.create(:major => 2, :release_type => :alpha, :alpha_version => 5)
80
80
  assert_equal(value2_, value1_)
81
81
  assert_equal(value2_.hash, value1_.hash)
82
82
  end
@@ -85,8 +85,8 @@ module Versionomy
85
85
  # Test equality from parsed values.
86
86
 
87
87
  def test_equality_parsed
88
- value1_ = Versionomy.parse("1.8.7p72")
89
- value2_ = Versionomy.parse("1.8.7.0-72.0")
88
+ value1_ = ::Versionomy.parse("1.8.7p72")
89
+ value2_ = ::Versionomy.parse("1.8.7.0-72.0")
90
90
  assert_equal(value2_, value1_)
91
91
  assert_equal(value2_.hash, value1_.hash)
92
92
  end
@@ -95,8 +95,8 @@ module Versionomy
95
95
  # Test non-equality from parsed values.
96
96
 
97
97
  def test_nonequality_parsed
98
- value1_ = Versionomy.parse("1.8.7b7")
99
- value2_ = Versionomy.parse("1.8.7a7")
98
+ value1_ = ::Versionomy.parse("1.8.7b7")
99
+ value2_ = ::Versionomy.parse("1.8.7a7")
100
100
  assert_not_equal(value2_, value1_)
101
101
  assert_not_equal(value2_.hash, value1_.hash)
102
102
  end
@@ -105,7 +105,7 @@ module Versionomy
105
105
  # Test equality with string.
106
106
 
107
107
  def test_equality_string
108
- value1_ = Versionomy.parse("1.8.7p72")
108
+ value1_ = ::Versionomy.parse("1.8.7p72")
109
109
  assert_operator(value1_, :==, "1.8.7p72")
110
110
  assert_operator(value1_, :==, "1.8.7.0-72.0")
111
111
  end
@@ -114,7 +114,7 @@ module Versionomy
114
114
  # Test comparison with string.
115
115
 
116
116
  def test_comparison_string
117
- value1_ = Versionomy.parse("1.8.7p72")
117
+ value1_ = ::Versionomy.parse("1.8.7p72")
118
118
  assert_operator(value1_, :<, "1.8.7p73")
119
119
  assert_operator(value1_, :<, "1.8.8pre1")
120
120
  assert_operator(value1_, :>, "1.8.7p71")
@@ -123,6 +123,19 @@ module Versionomy
123
123
  end
124
124
 
125
125
 
126
+ # Test sorting.
127
+
128
+ def test_sort
129
+ value1_ = ::Versionomy.parse("1.8.7p73")
130
+ value2_ = ::Versionomy.parse("1.8.7p72")
131
+ value3_ = ::Versionomy.parse("1.8.8pre1")
132
+ value4_ = ::Versionomy.parse("1.8.7.0")
133
+ value5_ = ::Versionomy.parse("1.8.7rc2")
134
+ assert_equal([value5_, value4_, value2_, value1_, value3_],
135
+ [value1_, value2_, value3_, value4_, value5_].sort)
136
+ end
137
+
138
+
126
139
  end
127
140
 
128
141
  end
@@ -0,0 +1,95 @@
1
+ # -----------------------------------------------------------------------------
2
+ #
3
+ # Versionomy basic tests on standard schema
4
+ #
5
+ # This file contains tests for the basic use cases on the standard schema
6
+ #
7
+ # -----------------------------------------------------------------------------
8
+ # Copyright 2008-2009 Daniel Azuma
9
+ #
10
+ # All rights reserved.
11
+ #
12
+ # Redistribution and use in source and binary forms, with or without
13
+ # modification, are permitted provided that the following conditions are met:
14
+ #
15
+ # * Redistributions of source code must retain the above copyright notice,
16
+ # this list of conditions and the following disclaimer.
17
+ # * Redistributions in binary form must reproduce the above copyright notice,
18
+ # this list of conditions and the following disclaimer in the documentation
19
+ # and/or other materials provided with the distribution.
20
+ # * Neither the name of the copyright holder, nor the names of any other
21
+ # contributors to this software, may be used to endorse or promote products
22
+ # derived from this software without specific prior written permission.
23
+ #
24
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
25
+ # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
26
+ # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
27
+ # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
28
+ # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
29
+ # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
30
+ # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
31
+ # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
32
+ # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
33
+ # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
34
+ # POSSIBILITY OF SUCH DAMAGE.
35
+ # -----------------------------------------------------------------------------
36
+
37
+
38
+ require 'test/unit'
39
+ require ::File.expand_path("#{::File.dirname(__FILE__)}/../lib/versionomy.rb")
40
+
41
+
42
+ module Versionomy
43
+ module Tests # :nodoc:
44
+
45
+ class TestStandardMisc < ::Test::Unit::TestCase # :nodoc:
46
+
47
+
48
+ # Test "prerelase?" custom method
49
+
50
+ def test_method_prereleasep
51
+ value_ = ::Versionomy.create(:major => 2, :tiny => 1, :release_type => :beta, :beta_version => 3)
52
+ assert_equal(true, value_.prerelease?)
53
+ value_ = ::Versionomy.create(:major => 2, :tiny => 1, :release_type => :final, :patchlevel => 1)
54
+ assert_equal(false, value_.prerelease?)
55
+ value_ = ::Versionomy.create(:major => 2, :tiny => 1)
56
+ assert_equal(false, value_.prerelease?)
57
+ end
58
+
59
+
60
+ # Test "relase" custom method
61
+
62
+ def test_method_release
63
+ value_ = ::Versionomy.create(:major => 1, :minor => 9, :tiny => 2, :release_type => :alpha, :alpha_version => 4)
64
+ value2_ = value_.release
65
+ assert_equal([1, 9, 2, 0, :final, 0, 0], value2_.values_array)
66
+ value_ = ::Versionomy.create(:major => 1, :minor => 9, :tiny => 2)
67
+ value2_ = value_.release
68
+ assert_equal(value_, value2_)
69
+ end
70
+
71
+
72
+ # Test marshalling
73
+
74
+ def test_marshal
75
+ value_ = ::Versionomy.create(:major => 1, :minor => 9, :tiny => 2, :release_type => :alpha, :alpha_version => 4)
76
+ str_ = ::Marshal.dump(value_)
77
+ value2_ = ::Marshal.load(str_)
78
+ assert_equal(value_, value2_)
79
+ end
80
+
81
+
82
+ # Test YAML
83
+
84
+ def test_yaml
85
+ value_ = ::Versionomy.create(:major => 1, :minor => 9, :tiny => 2, :release_type => :alpha, :alpha_version => 4)
86
+ str_ = ::YAML.dump(value_)
87
+ value2_ = ::YAML.load(str_)
88
+ assert_equal(value_, value2_)
89
+ end
90
+
91
+
92
+ end
93
+
94
+ end
95
+ end
@@ -36,19 +36,19 @@
36
36
 
37
37
 
38
38
  require 'test/unit'
39
- require File.expand_path("#{File.dirname(__FILE__)}/../lib/versionomy.rb")
39
+ require ::File.expand_path("#{::File.dirname(__FILE__)}/../lib/versionomy.rb")
40
40
 
41
41
 
42
42
  module Versionomy
43
43
  module Tests # :nodoc:
44
44
 
45
- class TestStandardParse < Test::Unit::TestCase # :nodoc:
45
+ class TestStandardParse < ::Test::Unit::TestCase # :nodoc:
46
46
 
47
47
 
48
48
  # Test parsing full.
49
49
 
50
50
  def test_parsing_full_release
51
- value_ = Versionomy.parse('2.0.1.1-4.6')
51
+ value_ = ::Versionomy.parse('2.0.1.1-4.6')
52
52
  assert_equal(2, value_.major)
53
53
  assert_equal(0, value_.minor)
54
54
  assert_equal(1, value_.tiny)
@@ -63,7 +63,7 @@ module Versionomy
63
63
  # Test parsing abbreviated.
64
64
 
65
65
  def test_parsing_abbrev_release
66
- value_ = Versionomy.parse('2.0.1')
66
+ value_ = ::Versionomy.parse('2.0.1')
67
67
  assert_equal(2, value_.major)
68
68
  assert_equal(0, value_.minor)
69
69
  assert_equal(1, value_.tiny)
@@ -80,7 +80,7 @@ module Versionomy
80
80
  # Test parsing with trailing zeros.
81
81
 
82
82
  def test_parsing_trailing_zeros
83
- value_ = Versionomy.parse('2.0.0')
83
+ value_ = ::Versionomy.parse('2.0.0')
84
84
  assert_equal(2, value_.major)
85
85
  assert_equal(0, value_.minor)
86
86
  assert_equal(0, value_.tiny)
@@ -95,7 +95,7 @@ module Versionomy
95
95
  # Test parsing preview.
96
96
 
97
97
  def test_parsing_preview
98
- value_ = Versionomy.parse('2.0.1pre4')
98
+ value_ = ::Versionomy.parse('2.0.1pre4')
99
99
  assert_equal(2, value_.major)
100
100
  assert_equal(0, value_.minor)
101
101
  assert_equal(1, value_.tiny)
@@ -111,7 +111,7 @@ module Versionomy
111
111
  # Test parsing alpha.
112
112
 
113
113
  def test_parsing_alpha
114
- value_ = Versionomy.parse('2.0.1a4.1')
114
+ value_ = ::Versionomy.parse('2.0.1a4.1')
115
115
  assert_equal(2, value_.major)
116
116
  assert_equal(0, value_.minor)
117
117
  assert_equal(1, value_.tiny)
@@ -127,7 +127,7 @@ module Versionomy
127
127
  # Test parsing beta.
128
128
 
129
129
  def test_parsing_beta
130
- value_ = Versionomy.parse('2.52.1b4.0')
130
+ value_ = ::Versionomy.parse('2.52.1b4.0')
131
131
  assert_equal(2, value_.major)
132
132
  assert_equal(52, value_.minor)
133
133
  assert_equal(1, value_.tiny)
@@ -143,20 +143,20 @@ module Versionomy
143
143
  # Test parsing beta alternates
144
144
 
145
145
  def test_parsing_beta_alternates
146
- assert_equal(Versionomy.parse('2.52.1 beta4'), '2.52.1b4')
147
- assert_equal(Versionomy.parse('2.52.1-b4'), '2.52.1b4')
148
- assert_equal(Versionomy.parse('2.52.1.b4'), '2.52.1b4')
149
- assert_equal(Versionomy.parse('2.52.1B4'), '2.52.1b4')
150
- assert_equal(Versionomy.parse('2.52.1BETA4'), '2.52.1b4')
151
- assert_equal(Versionomy.parse('2.52.1 Beta4'), '2.52.1b4')
152
- assert_equal(Versionomy.parse('2.52.1 eta4'), '2.52.1')
146
+ assert_equal(::Versionomy.parse('2.52.1 beta4'), '2.52.1b4')
147
+ assert_equal(::Versionomy.parse('2.52.1-b4'), '2.52.1b4')
148
+ assert_equal(::Versionomy.parse('2.52.1.b4'), '2.52.1b4')
149
+ assert_equal(::Versionomy.parse('2.52.1B4'), '2.52.1b4')
150
+ assert_equal(::Versionomy.parse('2.52.1BETA4'), '2.52.1b4')
151
+ assert_equal(::Versionomy.parse('2.52.1 Beta4'), '2.52.1b4')
152
+ assert_equal(::Versionomy.parse('2.52.1 eta4', :extra_characters => :ignore), '2.52.1')
153
153
  end
154
154
 
155
155
 
156
156
  # Test parsing release candidate.
157
157
 
158
158
  def test_parsing_release_candidate
159
- value_ = Versionomy.parse('0.2rc0')
159
+ value_ = ::Versionomy.parse('0.2rc0')
160
160
  assert_equal(0, value_.major)
161
161
  assert_equal(2, value_.minor)
162
162
  assert_equal(0, value_.tiny)
@@ -173,7 +173,7 @@ module Versionomy
173
173
  # Test unparsing a value that requires lookback.
174
174
 
175
175
  def test_unparsing_with_lookback
176
- value_ = Versionomy.parse('2.0')
176
+ value_ = ::Versionomy.parse('2.0')
177
177
  value2_ = value_.change(:tiny2 => 1)
178
178
  assert_equal(1, value2_.tiny2)
179
179
  assert_equal('2.0.0.1', value2_.unparse)
@@ -186,7 +186,7 @@ module Versionomy
186
186
  # Test delimiter changes in a multi-form field.
187
187
 
188
188
  def test_multi_form_delimiter_changes
189
- value_ = Versionomy.parse('2.0 preview 1')
189
+ value_ = ::Versionomy.parse('2.0 preview 1')
190
190
  assert_equal('2.0 preview 1', value_.to_s)
191
191
  value2_ = value_.change(:release_type => :final)
192
192
  assert_equal('2.0', value2_.to_s)
@@ -199,11 +199,31 @@ module Versionomy
199
199
 
200
200
  def test_patchlevel_separators
201
201
  expected_ = [1,9,1,0,:final,243,0]
202
- assert_equal(expected_, Versionomy.parse('1.9.1-p243').values_array)
203
- assert_equal(expected_, Versionomy.parse('1.9.1p243').values_array)
204
- assert_equal(expected_, Versionomy.parse('1.9.1.p243').values_array)
205
- assert_equal(expected_, Versionomy.parse('1.9.1 p243').values_array)
206
- assert_equal(expected_, Versionomy.parse('1.9.1-243').values_array)
202
+ assert_equal(expected_, ::Versionomy.parse('1.9.1-p243').values_array)
203
+ assert_equal(expected_, ::Versionomy.parse('1.9.1p243').values_array)
204
+ assert_equal(expected_, ::Versionomy.parse('1.9.1.p243').values_array)
205
+ assert_equal(expected_, ::Versionomy.parse('1.9.1 p243').values_array)
206
+ assert_equal(expected_, ::Versionomy.parse('1.9.1-243').values_array)
207
+ end
208
+
209
+
210
+ # Test setting delimiters on unparse, including testing for illegal delimiters
211
+
212
+ def test_unparse_with_custom_delimiters
213
+ value_ = ::Versionomy.parse('1.2b3')
214
+ assert_equal('1.2.b.3', value_.unparse(:release_type_delim => '.', :release_type_postdelim => '.'))
215
+ assert_equal('1.2b3', value_.unparse(:release_type_delim => '=', :release_type_postdelim => '*'))
216
+ value_ = ::Versionomy.parse('1.2-4')
217
+ assert_equal('1.2-4', value_.unparse(:release_type_delim => '.', :release_type_postdelim => '.'))
218
+ end
219
+
220
+
221
+ # Test parse errors
222
+
223
+ def test_parsing_errors
224
+ assert_raise(::Versionomy::Errors::ParseError) do
225
+ ::Versionomy.parse('2.52.1 eta4')
226
+ end
207
227
  end
208
228
 
209
229
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: versionomy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Azuma
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-10-29 00:00:00 -07:00
12
+ date: 2009-11-05 00:00:00 -08:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -20,7 +20,7 @@ dependencies:
20
20
  requirements:
21
21
  - - ">="
22
22
  - !ruby/object:Gem::Version
23
- version: 0.2.2
23
+ version: 0.3.0
24
24
  version:
25
25
  description: Versionomy is a generalized version number library. It provides tools to represent, manipulate, parse, and compare version numbers in the wide variety of versioning schemes in use.
26
26
  email: dazuma@gmail.com
@@ -32,12 +32,16 @@ extra_rdoc_files:
32
32
  - README.rdoc
33
33
  - History.rdoc
34
34
  files:
35
+ - lib/versionomy/conversion/base.rb
36
+ - lib/versionomy/conversion/parsing.rb
37
+ - lib/versionomy/conversion/rubygems.rb
38
+ - lib/versionomy/conversion.rb
35
39
  - lib/versionomy/errors.rb
36
40
  - lib/versionomy/format/base.rb
37
41
  - lib/versionomy/format/delimiter.rb
42
+ - lib/versionomy/format/rubygems.rb
43
+ - lib/versionomy/format/standard.rb
38
44
  - lib/versionomy/format.rb
39
- - lib/versionomy/formats/standard.rb
40
- - lib/versionomy/formats.rb
41
45
  - lib/versionomy/interface.rb
42
46
  - lib/versionomy/schema/field.rb
43
47
  - lib/versionomy/schema/wrapper.rb
@@ -47,10 +51,13 @@ files:
47
51
  - lib/versionomy.rb
48
52
  - tests/tc_custom_format.rb
49
53
  - tests/tc_readme_examples.rb
54
+ - tests/tc_rubygems_basic.rb
55
+ - tests/tc_rubygems_conversions.rb
50
56
  - tests/tc_standard_basic.rb
51
57
  - tests/tc_standard_bump.rb
52
58
  - tests/tc_standard_change.rb
53
59
  - tests/tc_standard_comparison.rb
60
+ - tests/tc_standard_misc.rb
54
61
  - tests/tc_standard_parse.rb
55
62
  - History.rdoc
56
63
  - README.rdoc
@@ -86,8 +93,11 @@ summary: Versionomy is a generalized version number library.
86
93
  test_files:
87
94
  - tests/tc_custom_format.rb
88
95
  - tests/tc_readme_examples.rb
96
+ - tests/tc_rubygems_basic.rb
97
+ - tests/tc_rubygems_conversions.rb
89
98
  - tests/tc_standard_basic.rb
90
99
  - tests/tc_standard_bump.rb
91
100
  - tests/tc_standard_change.rb
92
101
  - tests/tc_standard_comparison.rb
102
+ - tests/tc_standard_misc.rb
93
103
  - tests/tc_standard_parse.rb