ipaddress 0.5.0 → 0.6.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.
- data/CHANGELOG.rdoc +73 -0
- data/README.rdoc +120 -86
- data/Rakefile +7 -15
- data/VERSION +1 -1
- data/lib/ipaddress.rb +131 -15
- data/lib/ipaddress/extensions/extensions.rb +8 -2
- data/lib/ipaddress/ipv4.rb +132 -49
- data/lib/ipaddress/ipv6.rb +64 -18
- data/lib/ipaddress/prefix.rb +38 -1
- data/test/ipaddress/ipv4_test.rb +92 -38
- data/test/ipaddress/ipv6_test.rb +34 -10
- data/test/ipaddress/prefix_test.rb +15 -0
- data/test/ipaddress_test.rb +17 -0
- data/test/test_helper.rb +0 -5
- metadata +11 -25
- data/lib/ipaddress/ipbase.rb +0 -83
- data/test/ipaddress/ipbase_test.rb +0 -28
    
        data/test/ipaddress/ipv6_test.rb
    CHANGED
    
    | @@ -83,7 +83,7 @@ class IPv6Test < Test::Unit::TestCase | |
| 83 83 | 
             
                assert_equal 128, ip.prefix
         | 
| 84 84 | 
             
                ip.prefix = 64
         | 
| 85 85 | 
             
                assert_equal 64, ip.prefix
         | 
| 86 | 
            -
                assert_equal "2001:db8::8:800:200c:417a/64", ip. | 
| 86 | 
            +
                assert_equal "2001:db8::8:800:200c:417a/64", ip.to_string
         | 
| 87 87 | 
             
              end
         | 
| 88 88 |  | 
| 89 89 | 
             
              def test_method_mapped?
         | 
| @@ -111,18 +111,36 @@ class IPv6Test < Test::Unit::TestCase | |
| 111 111 | 
             
              end
         | 
| 112 112 |  | 
| 113 113 | 
             
              def test_method_to_s
         | 
| 114 | 
            -
                assert_equal "2001:db8::8:800:200c:417a | 
| 114 | 
            +
                assert_equal "2001:db8::8:800:200c:417a", @ip.to_s
         | 
| 115 115 | 
             
              end
         | 
| 116 116 |  | 
| 117 117 | 
             
              def test_method_to_string
         | 
| 118 | 
            +
                assert_equal "2001:db8::8:800:200c:417a/64", @ip.to_string
         | 
| 119 | 
            +
              end
         | 
| 120 | 
            +
             | 
| 121 | 
            +
              def test_method_to_string_uncompressed
         | 
| 118 122 | 
             
                str = "2001:0db8:0000:0000:0008:0800:200c:417a/64" 
         | 
| 119 | 
            -
                assert_equal str, @ip. | 
| 123 | 
            +
                assert_equal str, @ip.to_string_uncompressed
         | 
| 120 124 | 
             
              end
         | 
| 121 125 |  | 
| 122 126 | 
             
              def test_method_data
         | 
| 123 127 | 
             
                str = " \001\r\270\000\000\000\000\000\b\b\000 \fAz"
         | 
| 124 128 | 
             
                assert_equal str, @ip.data
         | 
| 125 129 | 
             
              end
         | 
| 130 | 
            +
             | 
| 131 | 
            +
             | 
| 132 | 
            +
              def test_method_reverse
         | 
| 133 | 
            +
                str = "f.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.2.0.0.0.5.0.5.0.e.f.f.3.ip6.arpa"
         | 
| 134 | 
            +
                assert_equal str, @klass.new("3ffe:505:2::f").reverse
         | 
| 135 | 
            +
              end
         | 
| 136 | 
            +
             | 
| 137 | 
            +
            #   def test_ip6_int
         | 
| 138 | 
            +
            #     assert_equal("f.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.2.0.0.0.5.0.5.0.e.f.f.3.ip6.int", IPAddress("3ffe:505:2::f").ip6_int)
         | 
| 139 | 
            +
              #     assert_raises(ArgumentError) {
         | 
| 140 | 
            +
            #       IPAddress("192.168.2.1").ip6_int
         | 
| 141 | 
            +
              #     }
         | 
| 142 | 
            +
            #   end
         | 
| 143 | 
            +
             | 
| 126 144 |  | 
| 127 145 | 
             
              def test_method_compressed
         | 
| 128 146 | 
             
                assert_equal "1:1:1::1", @klass.new("1:1:1:0:0:0:0:1").compressed
         | 
| @@ -181,7 +199,7 @@ class IPv6Test < Test::Unit::TestCase | |
| 181 199 | 
             
                ip = @klass.parse_data str
         | 
| 182 200 | 
             
                assert_instance_of @klass, ip
         | 
| 183 201 | 
             
                assert_equal "2001:0db8:0000:0000:0008:0800:200c:417a", ip.address
         | 
| 184 | 
            -
                assert_equal "2001:db8::8:800:200c:417a/128", ip. | 
| 202 | 
            +
                assert_equal "2001:db8::8:800:200c:417a/128", ip.to_string
         | 
| 185 203 | 
             
              end
         | 
| 186 204 |  | 
| 187 205 | 
             
              def test_classhmethod_parse_u128
         | 
| @@ -201,6 +219,7 @@ class IPv6UnspecifiedTest < Test::Unit::TestCase | |
| 201 219 | 
             
              def setup
         | 
| 202 220 | 
             
                @klass = IPAddress::IPv6::Unspecified
         | 
| 203 221 | 
             
                @ip = @klass.new
         | 
| 222 | 
            +
                @s = "::"
         | 
| 204 223 | 
             
                @str = "::/128"
         | 
| 205 224 | 
             
                @string = "0000:0000:0000:0000:0000:0000:0000:0000/128"
         | 
| 206 225 | 
             
                @u128 = 0
         | 
| @@ -216,8 +235,9 @@ class IPv6UnspecifiedTest < Test::Unit::TestCase | |
| 216 235 | 
             
                assert_equal @address, @ip.compressed
         | 
| 217 236 | 
             
                assert_equal 128, @ip.prefix
         | 
| 218 237 | 
             
                assert_equal true, @ip.unspecified?
         | 
| 219 | 
            -
                assert_equal @ | 
| 220 | 
            -
                assert_equal @ | 
| 238 | 
            +
                assert_equal @s, @ip.to_s
         | 
| 239 | 
            +
                assert_equal @str, @ip.to_string
         | 
| 240 | 
            +
                assert_equal @string, @ip.to_string_uncompressed
         | 
| 221 241 | 
             
                assert_equal @u128, @ip.to_u128
         | 
| 222 242 | 
             
              end
         | 
| 223 243 |  | 
| @@ -229,6 +249,7 @@ class IPv6LoopbackTest < Test::Unit::TestCase | |
| 229 249 | 
             
              def setup
         | 
| 230 250 | 
             
                @klass = IPAddress::IPv6::Loopback
         | 
| 231 251 | 
             
                @ip = @klass.new
         | 
| 252 | 
            +
                @s = "::1"
         | 
| 232 253 | 
             
                @str = "::1/128"
         | 
| 233 254 | 
             
                @string = "0000:0000:0000:0000:0000:0000:0000:0001/128"
         | 
| 234 255 | 
             
                @u128 = 1
         | 
| @@ -244,8 +265,9 @@ class IPv6LoopbackTest < Test::Unit::TestCase | |
| 244 265 | 
             
                assert_equal @address, @ip.compressed
         | 
| 245 266 | 
             
                assert_equal 128, @ip.prefix
         | 
| 246 267 | 
             
                assert_equal true, @ip.loopback?
         | 
| 247 | 
            -
                assert_equal @ | 
| 248 | 
            -
                assert_equal @ | 
| 268 | 
            +
                assert_equal @s, @ip.to_s
         | 
| 269 | 
            +
                assert_equal @str, @ip.to_string
         | 
| 270 | 
            +
                assert_equal @string, @ip.to_string_uncompressed
         | 
| 249 271 | 
             
                assert_equal @u128, @ip.to_u128
         | 
| 250 272 | 
             
              end
         | 
| 251 273 |  | 
| @@ -256,6 +278,7 @@ class IPv6MappedTest < Test::Unit::TestCase | |
| 256 278 | 
             
              def setup
         | 
| 257 279 | 
             
                @klass = IPAddress::IPv6::Mapped
         | 
| 258 280 | 
             
                @ip = @klass.new("::172.16.10.1")
         | 
| 281 | 
            +
                @s = "::ffff:172.16.10.1"
         | 
| 259 282 | 
             
                @str = "::ffff:172.16.10.1/128"
         | 
| 260 283 | 
             
                @string = "0000:0000:0000:0000:0000:ffff:ac10:0a01/128"
         | 
| 261 284 | 
             
                @u128 = 281473568475649
         | 
| @@ -278,8 +301,9 @@ class IPv6MappedTest < Test::Unit::TestCase | |
| 278 301 | 
             
              def test_attributes
         | 
| 279 302 | 
             
                assert_equal @address, @ip.compressed
         | 
| 280 303 | 
             
                assert_equal 128, @ip.prefix
         | 
| 281 | 
            -
                assert_equal @ | 
| 282 | 
            -
                assert_equal @ | 
| 304 | 
            +
                assert_equal @s, @ip.to_s
         | 
| 305 | 
            +
                assert_equal @str, @ip.to_string
         | 
| 306 | 
            +
                assert_equal @string, @ip.to_string_uncompressed
         | 
| 283 307 | 
             
                assert_equal @u128, @ip.to_u128
         | 
| 284 308 | 
             
              end
         | 
| 285 309 |  | 
| @@ -68,6 +68,21 @@ class Prefix32Test < Test::Unit::TestCase | |
| 68 68 | 
             
                end
         | 
| 69 69 | 
             
              end
         | 
| 70 70 |  | 
| 71 | 
            +
              def test_method_plus
         | 
| 72 | 
            +
                p1 = @klass.new 8
         | 
| 73 | 
            +
                p2 = @klass.new 10
         | 
| 74 | 
            +
                assert_equal 18, p1+p2
         | 
| 75 | 
            +
                assert_equal 12, p1+4
         | 
| 76 | 
            +
              end
         | 
| 77 | 
            +
             | 
| 78 | 
            +
              def test_method_minus
         | 
| 79 | 
            +
                p1 = @klass.new 8
         | 
| 80 | 
            +
                p2 = @klass.new 24
         | 
| 81 | 
            +
                assert_equal 16, p1-p2
         | 
| 82 | 
            +
                assert_equal 16, p2-p1
         | 
| 83 | 
            +
                assert_equal 20, p2-4
         | 
| 84 | 
            +
              end
         | 
| 85 | 
            +
             | 
| 71 86 | 
             
              def test_initialize
         | 
| 72 87 | 
             
                assert_raise (ArgumentError) do
         | 
| 73 88 | 
             
                  @klass.new 33
         | 
    
        data/test/ipaddress_test.rb
    CHANGED
    
    | @@ -33,6 +33,23 @@ class IPAddressTest < Test::Unit::TestCase | |
| 33 33 |  | 
| 34 34 | 
             
              end
         | 
| 35 35 |  | 
| 36 | 
            +
              def test_module_method_valid?
         | 
| 37 | 
            +
                assert_equal true, IPAddress::valid?("10.0.0.1")
         | 
| 38 | 
            +
                assert_equal true, IPAddress::valid?("10.0.0.0")
         | 
| 39 | 
            +
                assert_equal true, IPAddress::valid?("2002::1")
         | 
| 40 | 
            +
                assert_equal true, IPAddress::valid?("dead:beef:cafe:babe::f0ad")
         | 
| 41 | 
            +
                assert_equal false, IPAddress::valid?("10.0.0.256")
         | 
| 42 | 
            +
                assert_equal false, IPAddress::valid?("10.0.0.0.0")
         | 
| 43 | 
            +
                assert_equal false, IPAddress::valid?("10.0.0")
         | 
| 44 | 
            +
                assert_equal false, IPAddress::valid?("10.0")
         | 
| 45 | 
            +
                assert_equal false, IPAddress::valid?("2002:::1")
         | 
| 46 | 
            +
              end
         | 
| 47 | 
            +
             | 
| 48 | 
            +
              def test_module_method_valid_ipv4_netmark?
         | 
| 49 | 
            +
                assert_equal true, IPAddress::valid_ipv4_netmask?("255.255.255.0")
         | 
| 50 | 
            +
                assert_equal false, IPAddress::valid_ipv4_netmask?("10.0.0.1")
         | 
| 51 | 
            +
              end
         | 
| 52 | 
            +
             | 
| 36 53 | 
             
            end
         | 
| 37 54 |  | 
| 38 55 |  | 
    
        data/test/test_helper.rb
    CHANGED
    
    | @@ -1,15 +1,10 @@ | |
| 1 1 | 
             
            require 'rubygems'
         | 
| 2 2 | 
             
            require 'test/unit'
         | 
| 3 | 
            -
            require 'ruby-prof'
         | 
| 4 | 
            -
             | 
| 5 3 |  | 
| 6 4 | 
             
            $LOAD_PATH.unshift(File.dirname(__FILE__))
         | 
| 7 5 | 
             
            $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
         | 
| 8 6 | 
             
            require 'ipaddress'
         | 
| 9 7 |  | 
| 10 | 
            -
            class Test::Unit::TestCase
         | 
| 11 | 
            -
            end
         | 
| 12 | 
            -
             | 
| 13 8 | 
             
            module Test::Unit
         | 
| 14 9 |  | 
| 15 10 | 
             
              class TestCase
         | 
    
        metadata
    CHANGED
    
    | @@ -1,13 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification 
         | 
| 2 2 | 
             
            name: ipaddress
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version 
         | 
| 4 | 
            -
               | 
| 5 | 
            -
              prerelease: false
         | 
| 6 | 
            -
              segments: 
         | 
| 7 | 
            -
              - 0
         | 
| 8 | 
            -
              - 5
         | 
| 9 | 
            -
              - 0
         | 
| 10 | 
            -
              version: 0.5.0
         | 
| 4 | 
            +
              version: 0.6.0
         | 
| 11 5 | 
             
            platform: ruby
         | 
| 12 6 | 
             
            authors: 
         | 
| 13 7 | 
             
            - Marco Ceresa
         | 
| @@ -15,11 +9,11 @@ autorequire: | |
| 15 9 | 
             
            bindir: bin
         | 
| 16 10 | 
             
            cert_chain: []
         | 
| 17 11 |  | 
| 18 | 
            -
            date: 2010- | 
| 12 | 
            +
            date: 2010-07-19 00:00:00 +02:00
         | 
| 19 13 | 
             
            default_executable: 
         | 
| 20 14 | 
             
            dependencies: []
         | 
| 21 15 |  | 
| 22 | 
            -
            description: 
         | 
| 16 | 
            +
            description: "      IPAddress is a Ruby library designed to make manipulation \n      of IPv4 and IPv6 addresses both powerful and simple. It mantains\n      a layer of compatibility with Ruby's own IPAddr, while \n      addressing many of its issues.\n"
         | 
| 23 17 | 
             
            email: ceresa@gmail.com
         | 
| 24 18 | 
             
            executables: []
         | 
| 25 19 |  | 
| @@ -31,18 +25,17 @@ extra_rdoc_files: | |
| 31 25 | 
             
            files: 
         | 
| 32 26 | 
             
            - .document
         | 
| 33 27 | 
             
            - .gitignore
         | 
| 28 | 
            +
            - CHANGELOG.rdoc
         | 
| 34 29 | 
             
            - LICENSE
         | 
| 35 30 | 
             
            - README.rdoc
         | 
| 36 31 | 
             
            - Rakefile
         | 
| 37 32 | 
             
            - VERSION
         | 
| 38 33 | 
             
            - lib/ipaddress.rb
         | 
| 39 34 | 
             
            - lib/ipaddress/extensions/extensions.rb
         | 
| 40 | 
            -
            - lib/ipaddress/ipbase.rb
         | 
| 41 35 | 
             
            - lib/ipaddress/ipv4.rb
         | 
| 42 36 | 
             
            - lib/ipaddress/ipv6.rb
         | 
| 43 37 | 
             
            - lib/ipaddress/prefix.rb
         | 
| 44 38 | 
             
            - test/ipaddress/extensions/extensions_test.rb
         | 
| 45 | 
            -
            - test/ipaddress/ipbase_test.rb
         | 
| 46 39 | 
             
            - test/ipaddress/ipv4_test.rb
         | 
| 47 40 | 
             
            - test/ipaddress/ipv6_test.rb
         | 
| 48 41 | 
             
            - test/ipaddress/prefix_test.rb
         | 
| @@ -58,35 +51,28 @@ rdoc_options: | |
| 58 51 | 
             
            require_paths: 
         | 
| 59 52 | 
             
            - lib
         | 
| 60 53 | 
             
            required_ruby_version: !ruby/object:Gem::Requirement 
         | 
| 61 | 
            -
              none: false
         | 
| 62 54 | 
             
              requirements: 
         | 
| 63 55 | 
             
              - - ">="
         | 
| 64 56 | 
             
                - !ruby/object:Gem::Version 
         | 
| 65 | 
            -
                  hash: 3
         | 
| 66 | 
            -
                  segments: 
         | 
| 67 | 
            -
                  - 0
         | 
| 68 57 | 
             
                  version: "0"
         | 
| 58 | 
            +
              version: 
         | 
| 69 59 | 
             
            required_rubygems_version: !ruby/object:Gem::Requirement 
         | 
| 70 | 
            -
              none: false
         | 
| 71 60 | 
             
              requirements: 
         | 
| 72 61 | 
             
              - - ">="
         | 
| 73 62 | 
             
                - !ruby/object:Gem::Version 
         | 
| 74 | 
            -
                  hash: 3
         | 
| 75 | 
            -
                  segments: 
         | 
| 76 | 
            -
                  - 0
         | 
| 77 63 | 
             
                  version: "0"
         | 
| 64 | 
            +
              version: 
         | 
| 78 65 | 
             
            requirements: []
         | 
| 79 66 |  | 
| 80 67 | 
             
            rubyforge_project: 
         | 
| 81 | 
            -
            rubygems_version: 1.3. | 
| 68 | 
            +
            rubygems_version: 1.3.5
         | 
| 82 69 | 
             
            signing_key: 
         | 
| 83 70 | 
             
            specification_version: 3
         | 
| 84 71 | 
             
            summary: IPv4/IPv6 addresses manipulation library
         | 
| 85 72 | 
             
            test_files: 
         | 
| 86 | 
            -
            - test/ipaddress/prefix_test.rb
         | 
| 87 | 
            -
            - test/ipaddress/ipbase_test.rb
         | 
| 88 | 
            -
            - test/ipaddress/ipv4_test.rb
         | 
| 89 | 
            -
            - test/ipaddress/extensions/extensions_test.rb
         | 
| 90 | 
            -
            - test/ipaddress/ipv6_test.rb
         | 
| 91 73 | 
             
            - test/test_helper.rb
         | 
| 92 74 | 
             
            - test/ipaddress_test.rb
         | 
| 75 | 
            +
            - test/ipaddress/prefix_test.rb
         | 
| 76 | 
            +
            - test/ipaddress/ipv6_test.rb
         | 
| 77 | 
            +
            - test/ipaddress/extensions/extensions_test.rb
         | 
| 78 | 
            +
            - test/ipaddress/ipv4_test.rb
         | 
    
        data/lib/ipaddress/ipbase.rb
    DELETED
    
    | @@ -1,83 +0,0 @@ | |
| 1 | 
            -
            require 'ipaddress/extensions/extensions'
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            module IPAddress
         | 
| 4 | 
            -
             | 
| 5 | 
            -
              # 
         | 
| 6 | 
            -
              # Checks if the given string is a valid IP address,
         | 
| 7 | 
            -
              # either IPv4 or IPv6
         | 
| 8 | 
            -
              #
         | 
| 9 | 
            -
              # Example:
         | 
| 10 | 
            -
              #
         | 
| 11 | 
            -
              #   IPAddress::valid? "2002::1"
         | 
| 12 | 
            -
              #     #=> true
         | 
| 13 | 
            -
              #
         | 
| 14 | 
            -
              #   IPAddress::valid? "10.0.0.256"   
         | 
| 15 | 
            -
              #     #=> false
         | 
| 16 | 
            -
              #
         | 
| 17 | 
            -
              def self.valid?(addr)
         | 
| 18 | 
            -
                valid_ipv4?(addr) || valid_ipv6?(addr)
         | 
| 19 | 
            -
              end
         | 
| 20 | 
            -
             | 
| 21 | 
            -
              #
         | 
| 22 | 
            -
              # Checks if the given string is a valid IPv4 address
         | 
| 23 | 
            -
              #
         | 
| 24 | 
            -
              # Example:
         | 
| 25 | 
            -
              #
         | 
| 26 | 
            -
              #   IPAddress::valid_ipv4? "2002::1"
         | 
| 27 | 
            -
              #     #=> false
         | 
| 28 | 
            -
              #
         | 
| 29 | 
            -
              #   IPAddress::valid_ipv4? "172.16.10.1"
         | 
| 30 | 
            -
              #     #=> true
         | 
| 31 | 
            -
              #
         | 
| 32 | 
            -
              def self.valid_ipv4?(addr)
         | 
| 33 | 
            -
                if /\A(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\Z/ =~ addr
         | 
| 34 | 
            -
                  return $~.captures.all? {|i| i.to_i < 256}
         | 
| 35 | 
            -
                end
         | 
| 36 | 
            -
                false
         | 
| 37 | 
            -
              end
         | 
| 38 | 
            -
              
         | 
| 39 | 
            -
              #
         | 
| 40 | 
            -
              # Checks if the argument is a valid IPv4 netmark
         | 
| 41 | 
            -
              # expressed in dotted decimal format.
         | 
| 42 | 
            -
              #
         | 
| 43 | 
            -
              #   IPAddress.valid_ipv4_netmask? "255.255.0.0"
         | 
| 44 | 
            -
              #     #=> true
         | 
| 45 | 
            -
              #
         | 
| 46 | 
            -
              def self.valid_ipv4_netmask?(addr)
         | 
| 47 | 
            -
                arr = addr.split(".").map{|i| i.to_i}.pack("CCCC").unpack("B*").first.scan(/01/)
         | 
| 48 | 
            -
                arr.empty? && valid_ipv4?(addr)
         | 
| 49 | 
            -
              rescue
         | 
| 50 | 
            -
                return false
         | 
| 51 | 
            -
              end
         | 
| 52 | 
            -
              
         | 
| 53 | 
            -
              #
         | 
| 54 | 
            -
              # Checks if the given string is a valid IPv6 address
         | 
| 55 | 
            -
              #
         | 
| 56 | 
            -
              # Example:
         | 
| 57 | 
            -
              #
         | 
| 58 | 
            -
              #   IPAddress::valid_ipv6? "2002::1"
         | 
| 59 | 
            -
              #     #=> true
         | 
| 60 | 
            -
              #
         | 
| 61 | 
            -
              #   IPAddress::valid_ipv6? "2002::DEAD::BEEF"
         | 
| 62 | 
            -
              #     #=> false
         | 
| 63 | 
            -
              #
         | 
| 64 | 
            -
              def self.valid_ipv6?(addr)
         | 
| 65 | 
            -
                # IPv6 (normal)
         | 
| 66 | 
            -
                return true if /\A[\dA-Fa-f]{1,4}(:[\dA-Fa-f]{1,4})*\Z/ =~ addr
         | 
| 67 | 
            -
                return true if /\A[\dA-Fa-f]{1,4}(:[\dA-Fa-f]{1,4})*::([\dA-Fa-f]{1,4}(:[\dA-Fa-f]{1,4})*)?\Z/ =~ addr
         | 
| 68 | 
            -
                return true if /\A::([\dA-Fa-f]{1,4}(:[\dA-Fa-f]{1,4})*)?\Z/ =~ addr
         | 
| 69 | 
            -
                # IPv6 (IPv4 compat)
         | 
| 70 | 
            -
                return true if /\A[\dA-Fa-f]{1,4}(:[\dA-Fa-f]{1,4})*:/ =~ addr && valid_ipv4?($')
         | 
| 71 | 
            -
                return true if /\A[\dA-Fa-f]{1,4}(:[\dA-Fa-f]{1,4})*::([\dA-Fa-f]{1,4}(:[\dA-Fa-f]{1,4})*:)?/ =~ addr && valid_ipv4?($')
         | 
| 72 | 
            -
                return true if /\A::([\dA-Fa-f]{1,4}(:[\dA-Fa-f]{1,4})*:)?/ =~ addr && valid_ipv4?($')
         | 
| 73 | 
            -
                false
         | 
| 74 | 
            -
                end
         | 
| 75 | 
            -
             | 
| 76 | 
            -
              class IPBase; end
         | 
| 77 | 
            -
              
         | 
| 78 | 
            -
            end # module IPAddress
         | 
| 79 | 
            -
             | 
| 80 | 
            -
             | 
| 81 | 
            -
             | 
| 82 | 
            -
             | 
| 83 | 
            -
             | 
| @@ -1,28 +0,0 @@ | |
| 1 | 
            -
            require 'test_helper'
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            class IpaddressTest < Test::Unit::TestCase
         | 
| 4 | 
            -
             | 
| 5 | 
            -
              must "be valid ip" do
         | 
| 6 | 
            -
                assert_equal true, IPAddress::valid?("10.0.0.1")
         | 
| 7 | 
            -
                assert_equal true, IPAddress::valid?("10.0.0.0")
         | 
| 8 | 
            -
                assert_equal true, IPAddress::valid?("2002::1")
         | 
| 9 | 
            -
                assert_equal true, IPAddress::valid?("dead:beef:cafe:babe::f0ad")
         | 
| 10 | 
            -
              end
         | 
| 11 | 
            -
             | 
| 12 | 
            -
              must "be valid netmask" do
         | 
| 13 | 
            -
                assert_equal true, IPAddress::valid_ipv4_netmask?("255.255.255.0")
         | 
| 14 | 
            -
              end
         | 
| 15 | 
            -
             | 
| 16 | 
            -
              must "be invalid netmask" do
         | 
| 17 | 
            -
                assert_equal false, IPAddress::valid_ipv4_netmask?("10.0.0.1")
         | 
| 18 | 
            -
              end
         | 
| 19 | 
            -
             
         | 
| 20 | 
            -
              must "be invalid" do
         | 
| 21 | 
            -
                assert_equal false, IPAddress::valid?("10.0.0.256")
         | 
| 22 | 
            -
                assert_equal false, IPAddress::valid?("10.0.0.0.0")
         | 
| 23 | 
            -
                assert_equal false, IPAddress::valid?("10.0.0")
         | 
| 24 | 
            -
                assert_equal false, IPAddress::valid?("10.0")
         | 
| 25 | 
            -
                assert_equal false, IPAddress::valid?("2002:::1")
         | 
| 26 | 
            -
              end
         | 
| 27 | 
            -
             | 
| 28 | 
            -
            end
         |