phorsfall (owner)

Revisions

gist: 108862 Download_button fork
public
Public Clone URL: git://gist.github.com/108862.git
Ruby
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
class Version < Struct.new(:version_string)
  include Comparable
 
  def [](version_string)
    new(version_string)
  end
 
  def to_a
    version_string.split(".").map { |s| s.to_i }
  end
  
  def <=>(other)
    self.to_a <=> other.to_a
  end
end
 
def bigger?(s1, s2)
  Version[s1] > Version[s2]
end
 
require 'test/unit'
 
class VersionTest < Test::Unit::TestCase
  def test_major_versions
    assert Version["2"] > Version["1"]
    assert Version["3"] < Version["4"]
  end
  
  def test_major_minor_versions
    assert Version["1.6"] > Version["1.5"]
    assert Version["1.9"] < Version["1.91"]
  end
  
  def test_major_minor_against_major
    assert Version["1.6"] > Version["1"]
    assert Version["2"] < Version["2.1"]
  end
  
  def test_long_version_numbers
    assert Version["2.3.4.1.1.1.1"] > Version["1.9.4.5.56"]
  end
  
  def test_equality
    assert_equal Version["2.0"], Version["2.0"]
    assert_not_equal Version["2.0"], Version["2.0.0"]
  end
end