diff options
| author | bluemonk <ceresa@gmail.com> | 2011-04-21 11:19:24 +0200 |
|---|---|---|
| committer | bluemonk <ceresa@gmail.com> | 2011-04-21 11:19:24 +0200 |
| commit | 9caa3c8505e0a3563f6e54077d9674628e04864c (patch) | |
| tree | 6a9a5e3aba5ca511ac0d6e6905a6cfa2b0be5e96 /test/ipaddress | |
| parent | c95e3e6a5dde0aadc7d433efe372c282fbb3913b (diff) | |
| download | ipaddress-ruby-stdlib.tar.gz | |
All the library in one file to facilitate ruby-stdlib integrationruby-stdlib
Diffstat (limited to 'test/ipaddress')
| -rw-r--r-- | test/ipaddress/extensions/extensions_test.rb | 18 | ||||
| -rw-r--r-- | test/ipaddress/ipv4_test.rb | 510 | ||||
| -rw-r--r-- | test/ipaddress/ipv6_test.rb | 356 | ||||
| -rw-r--r-- | test/ipaddress/prefix_test.rb | 159 |
4 files changed, 0 insertions, 1043 deletions
diff --git a/test/ipaddress/extensions/extensions_test.rb b/test/ipaddress/extensions/extensions_test.rb deleted file mode 100644 index 06b0a2c..0000000 --- a/test/ipaddress/extensions/extensions_test.rb +++ /dev/null @@ -1,18 +0,0 @@ -require 'test_helper' - -class ExtensionsTest < Test::Unit::TestCase - - def test_method_power_of_2? - assert_equal true, 16.power_of_2? - assert_equal false, 20.power_of_2? - end - - def test_method_closest_power_of_2 - assert_equal 8, 6.closest_power_of_2 - assert_equal 16, 13.closest_power_of_2 - assert_equal 32, 24.closest_power_of_2 - end - -end - - diff --git a/test/ipaddress/ipv4_test.rb b/test/ipaddress/ipv4_test.rb deleted file mode 100644 index 8cb3b8f..0000000 --- a/test/ipaddress/ipv4_test.rb +++ /dev/null @@ -1,510 +0,0 @@ -require 'test_helper' - -class IPv4Test < Test::Unit::TestCase - - def setup - @klass = IPAddress::IPv4 - - @valid_ipv4 = { - "0.0.0.0/0" => ["0.0.0.0", 0], - "10.0.0.0" => ["10.0.0.0", 32], - "10.0.0.1" => ["10.0.0.1", 32], - "10.0.0.1/24" => ["10.0.0.1", 24], - "10.0.0.1/255.255.255.0" => ["10.0.0.1", 24]} - - @invalid_ipv4 = ["10.0.0.256", - "10.0.0.0.0", - "10.0.0", - "10.0"] - - @valid_ipv4_range = ["10.0.0.1-254", - "10.0.1-254.0", - "10.1-254.0.0"] - - @netmask_values = { - "0.0.0.0/0" => "0.0.0.0", - "10.0.0.0/8" => "255.0.0.0", - "172.16.0.0/16" => "255.255.0.0", - "192.168.0.0/24" => "255.255.255.0", - "192.168.100.4/30" => "255.255.255.252"} - - @decimal_values ={ - "0.0.0.0/0" => 0, - "10.0.0.0/8" => 167772160, - "172.16.0.0/16" => 2886729728, - "192.168.0.0/24" => 3232235520, - "192.168.100.4/30" => 3232261124} - - @ip = @klass.new("172.16.10.1/24") - @network = @klass.new("172.16.10.0/24") - - @broadcast = { - "10.0.0.0/8" => "10.255.255.255/8", - "172.16.0.0/16" => "172.16.255.255/16", - "192.168.0.0/24" => "192.168.0.255/24", - "192.168.100.4/30" => "192.168.100.7/30"} - - @networks = { - "10.5.4.3/8" => "10.0.0.0/8", - "172.16.5.4/16" => "172.16.0.0/16", - "192.168.4.3/24" => "192.168.4.0/24", - "192.168.100.5/30" => "192.168.100.4/30"} - - @class_a = @klass.new("10.0.0.1/8") - @class_b = @klass.new("172.16.0.1/16") - @class_c = @klass.new("192.168.0.1/24") - - @classful = { - "10.1.1.1" => 8, - "150.1.1.1" => 16, - "200.1.1.1" => 24 } - - end - - def test_initialize - @valid_ipv4.keys.each do |i| - ip = @klass.new(i) - assert_instance_of @klass, ip - end - assert_instance_of IPAddress::Prefix32, @ip.prefix - assert_raise (ArgumentError) do - @klass.new - end - assert_nothing_raised do - @klass.new "10.0.0.0/8" - end - end - - def test_initialize_format_error - @invalid_ipv4.each do |i| - assert_raise(ArgumentError) {@klass.new(i)} - end - assert_raise (ArgumentError) {@klass.new("10.0.0.0/asd")} - end - - def test_initialize_without_prefix - assert_nothing_raised do - @klass.new("10.10.0.0") - end - ip = @klass.new("10.10.0.0") - assert_instance_of IPAddress::Prefix32, ip.prefix - assert_equal 32, ip.prefix.to_i - end - - def test_attributes - @valid_ipv4.each do |arg,attr| - ip = @klass.new(arg) - assert_equal attr.first, ip.address - assert_equal attr.last, ip.prefix.to_i - end - end - - def test_octets - ip = @klass.new("10.1.2.3/8") - assert_equal ip.octets, [10,1,2,3] - end - - def test_initialize_should_require_ip - assert_raise(ArgumentError) { @klass.new } - end - - def test_method_data - assert_equal "\254\020\n\001", @ip.data - end - - def test_method_to_string - @valid_ipv4.each do |arg,attr| - ip = @klass.new(arg) - assert_equal attr.join("/"), ip.to_string - end - end - - def test_method_to_s - @valid_ipv4.each do |arg,attr| - ip = @klass.new(arg) - assert_equal attr.first, ip.to_s - end - end - - def test_netmask - @netmask_values.each do |addr,mask| - ip = @klass.new(addr) - assert_equal mask, ip.netmask - end - end - - def test_method_to_u32 - @decimal_values.each do |addr,int| - ip = @klass.new(addr) - assert_equal int, ip.to_u32 - end - end - - def test_method_network? - assert_equal true, @network.network? - assert_equal false, @ip.network? - end - - def test_method_broadcast - @broadcast.each do |addr,bcast| - ip = @klass.new(addr) - assert_instance_of @klass, ip.broadcast - assert_equal bcast, ip.broadcast.to_string - end - end - - def test_method_network - @networks.each do |addr,net| - ip = @klass.new addr - assert_instance_of @klass, ip.network - assert_equal net, ip.network.to_string - end - end - - def test_method_bits - ip = @klass.new("127.0.0.1") - assert_equal "01111111000000000000000000000001", ip.bits - end - - def test_method_first - ip = @klass.new("192.168.100.0/24") - assert_instance_of @klass, ip.first - assert_equal "192.168.100.1", ip.first.to_s - ip = @klass.new("192.168.100.50/24") - assert_instance_of @klass, ip.first - assert_equal "192.168.100.1", ip.first.to_s - end - - def test_method_last - ip = @klass.new("192.168.100.0/24") - assert_instance_of @klass, ip.last - assert_equal "192.168.100.254", ip.last.to_s - ip = @klass.new("192.168.100.50/24") - assert_instance_of @klass, ip.last - assert_equal "192.168.100.254", ip.last.to_s - end - - def test_method_each_host - ip = @klass.new("10.0.0.1/29") - arr = [] - ip.each_host {|i| arr << i.to_s} - expected = ["10.0.0.1","10.0.0.2","10.0.0.3", - "10.0.0.4","10.0.0.5","10.0.0.6"] - assert_equal expected, arr - end - - def test_method_each - ip = @klass.new("10.0.0.1/29") - arr = [] - ip.each {|i| arr << i.to_s} - expected = ["10.0.0.0","10.0.0.1","10.0.0.2", - "10.0.0.3","10.0.0.4","10.0.0.5", - "10.0.0.6","10.0.0.7"] - assert_equal expected, arr - end - - def test_method_size - ip = @klass.new("10.0.0.1/29") - assert_equal 8, ip.size - end - - def test_method_hosts - ip = @klass.new("10.0.0.1/29") - expected = ["10.0.0.1","10.0.0.2","10.0.0.3", - "10.0.0.4","10.0.0.5","10.0.0.6"] - assert_equal expected, ip.hosts.map {|i| i.to_s} - end - - def test_method_network_u32 - assert_equal 2886732288, @ip.network_u32 - end - - def test_method_broadcast_u32 - assert_equal 2886732543, @ip.broadcast_u32 - end - - def test_method_include? - ip = @klass.new("192.168.10.100/24") - addr = @klass.new("192.168.10.102/24") - assert_equal true, ip.include?(addr) - assert_equal false, ip.include?(@klass.new("172.16.0.48")) - ip = @klass.new("10.0.0.0/8") - assert_equal true, ip.include?(@klass.new("10.0.0.0/9")) - assert_equal true, ip.include?(@klass.new("10.1.1.1/32")) - assert_equal true, ip.include?(@klass.new("10.1.1.1/9")) - assert_equal false, ip.include?(@klass.new("172.16.0.0/16")) - assert_equal false, ip.include?(@klass.new("10.0.0.0/7")) - assert_equal false, ip.include?(@klass.new("5.5.5.5/32")) - assert_equal false, ip.include?(@klass.new("11.0.0.0/8")) - ip = @klass.new("13.13.0.0/13") - assert_equal false, ip.include?(@klass.new("13.16.0.0/32")) - end - - def test_method_include_all? - ip = @klass.new("192.168.10.100/24") - addr1 = @klass.new("192.168.10.102/24") - addr2 = @klass.new("192.168.10.103/24") - assert_equal true, ip.include_all?(addr1,addr2) - assert_equal false, ip.include_all?(addr1, @klass.new("13.16.0.0/32")) - end - - def test_method_ipv4? - assert_equal true, @ip.ipv4? - end - - def test_method_ipv6? - assert_equal false, @ip.ipv6? - end - - def test_method_private? - assert_equal true, @klass.new("192.168.10.50/24").private? - assert_equal true, @klass.new("192.168.10.50/16").private? - assert_equal true, @klass.new("172.16.77.40/24").private? - assert_equal true, @klass.new("172.16.10.50/14").private? - assert_equal true, @klass.new("10.10.10.10/10").private? - assert_equal true, @klass.new("10.0.0.0/8").private? - assert_equal false, @klass.new("192.168.10.50/12").private? - assert_equal false, @klass.new("3.3.3.3").private? - assert_equal false, @klass.new("10.0.0.0/7").private? - assert_equal false, @klass.new("172.32.0.0/12").private? - assert_equal false, @klass.new("172.16.0.0/11").private? - assert_equal false, @klass.new("192.0.0.2/24").private? - end - - def test_method_octet - assert_equal 172, @ip[0] - assert_equal 16, @ip[1] - assert_equal 10, @ip[2] - assert_equal 1, @ip[3] - end - - def test_method_a? - assert_equal true, @class_a.a? - assert_equal false, @class_b.a? - assert_equal false, @class_c.a? - end - - def test_method_b? - assert_equal true, @class_b.b? - assert_equal false, @class_a.b? - assert_equal false, @class_c.b? - end - - def test_method_c? - assert_equal true, @class_c.c? - assert_equal false, @class_a.c? - assert_equal false, @class_b.c? - end - - def test_method_to_ipv6 - assert_equal "ac10:0a01", @ip.to_ipv6 - end - - def test_method_reverse - assert_equal "1.10.16.172.in-addr.arpa", @ip.reverse - end - - def test_method_comparabble - ip1 = @klass.new("10.1.1.1/8") - ip2 = @klass.new("10.1.1.1/16") - ip3 = @klass.new("172.16.1.1/14") - ip4 = @klass.new("10.1.1.1/8") - - # ip1 should be major than ip2 - assert_equal true, ip1 > ip2 - assert_equal false, ip1 < ip2 - assert_equal false, ip2 > ip1 - # ip2 should be minor than ip3 - assert_equal true, ip2 < ip3 - assert_equal false, ip2 > ip3 - # ip1 should be minor than ip3 - assert_equal true, ip1 < ip3 - assert_equal false, ip1 > ip3 - assert_equal false, ip3 < ip1 - # ip1 should be equal to itself - assert_equal true, ip1 == ip1 - # ip1 should be equal to ip4 - assert_equal true, ip1 == ip4 - # test sorting - arr = ["10.1.1.1/16","10.1.1.1/8","172.16.1.1/14"] - assert_equal arr, [ip1,ip2,ip3].sort.map{|s| s.to_string} - end - - def test_method_minus - ip1 = @klass.new("10.1.1.1/8") - ip2 = @klass.new("10.1.1.10/8") - assert_equal 9, ip2 - ip1 - assert_equal 9, ip1 - ip2 - end - - def test_method_plus - ip1 = @klass.new("172.16.10.1/24") - ip2 = @klass.new("172.16.11.2/24") - assert_equal ["172.16.10.0/23"], (ip1+ip2).map{|i| i.to_string} - - ip2 = @klass.new("172.16.12.2/24") - assert_equal [ip1.network.to_string, ip2.network.to_string], - (ip1 + ip2).map{|i| i.to_string} - - ip1 = @klass.new("10.0.0.0/23") - ip2 = @klass.new("10.0.2.0/24") - assert_equal ["10.0.0.0/23","10.0.2.0/24"], (ip1+ip2).map{|i| i.to_string} - - ip1 = @klass.new("10.0.0.0/23") - ip2 = @klass.new("10.0.2.0/24") - assert_equal ["10.0.0.0/23","10.0.2.0/24"], (ip2+ip1).map{|i| i.to_string} - - ip1 = @klass.new("10.0.0.0/16") - ip2 = @klass.new("10.0.2.0/24") - assert_equal ["10.0.0.0/16"], (ip1+ip2).map{|i| i.to_string} - - ip1 = @klass.new("10.0.0.0/23") - ip2 = @klass.new("10.1.0.0/24") - assert_equal ["10.0.0.0/23","10.1.0.0/24"], (ip1+ip2).map{|i| i.to_string} - - end - - def test_method_netmask_equal - ip = @klass.new("10.1.1.1/16") - assert_equal 16, ip.prefix.to_i - ip.netmask = "255.255.255.0" - assert_equal 24, ip.prefix.to_i - end - - def test_method_subnet - assert_raise(ArgumentError) {@ip.subnet(0)} - assert_raise(ArgumentError) {@ip.subnet(257)} - - arr = ["172.16.10.0/27", "172.16.10.32/27", "172.16.10.64/27", - "172.16.10.96/27", "172.16.10.128/27", "172.16.10.160/27", - "172.16.10.192/27", "172.16.10.224/27"] - assert_equal arr, @network.subnet(8).map {|s| s.to_string} - arr = ["172.16.10.0/27", "172.16.10.32/27", "172.16.10.64/27", - "172.16.10.96/27", "172.16.10.128/27", "172.16.10.160/27", - "172.16.10.192/26"] - assert_equal arr, @network.subnet(7).map {|s| s.to_string} - arr = ["172.16.10.0/27", "172.16.10.32/27", "172.16.10.64/27", - "172.16.10.96/27", "172.16.10.128/26", "172.16.10.192/26"] - assert_equal arr, @network.subnet(6).map {|s| s.to_string} - arr = ["172.16.10.0/27", "172.16.10.32/27", "172.16.10.64/27", - "172.16.10.96/27", "172.16.10.128/25"] - assert_equal arr, @network.subnet(5).map {|s| s.to_string} - arr = ["172.16.10.0/26", "172.16.10.64/26", "172.16.10.128/26", - "172.16.10.192/26"] - assert_equal arr, @network.subnet(4).map {|s| s.to_string} - arr = ["172.16.10.0/26", "172.16.10.64/26", "172.16.10.128/25"] - assert_equal arr, @network.subnet(3).map {|s| s.to_string} - arr = ["172.16.10.0/25", "172.16.10.128/25"] - assert_equal arr, @network.subnet(2).map {|s| s.to_string} - arr = ["172.16.10.0/24"] - assert_equal arr, @network.subnet(1).map {|s| s.to_string} - end - - def test_method_supernet - assert_raise(ArgumentError) {@ip.supernet(0)} - assert_raise(ArgumentError) {@ip.supernet(24)} - assert_equal "172.16.10.0/23", @ip.supernet(23).to_string - assert_equal "172.16.8.0/22", @ip.supernet(22).to_string - end - - def test_classmethod_parse_u32 - @decimal_values.each do |addr,int| - ip = @klass.parse_u32(int) - ip.prefix = addr.split("/").last.to_i - assert_equal ip.to_string, addr - end - end - - def test_classhmethod_extract - str = "foobar172.16.10.1barbaz" - assert_equal "172.16.10.1", @klass.extract(str).to_s - end - - def test_classmethod_summarize - - # Should return self if only one network given - assert_equal [@ip.network], @klass.summarize(@ip) - - # Summarize homogeneous networks - ip1 = @klass.new("172.16.10.1/24") - ip2 = @klass.new("172.16.11.2/24") - assert_equal ["172.16.10.0/23"], @klass.summarize(ip1,ip2).map{|i| i.to_string} - - ip1 = @klass.new("10.0.0.1/24") - ip2 = @klass.new("10.0.1.1/24") - ip3 = @klass.new("10.0.2.1/24") - ip4 = @klass.new("10.0.3.1/24") - assert_equal ["10.0.0.0/22"], @klass.summarize(ip1,ip2,ip3,ip4).map{|i| i.to_string} - assert_equal ["10.0.0.0/22"], @klass.summarize(ip4,ip3,ip2,ip1).map{|i| i.to_string} - - # Summarize non homogeneous networks - ip1 = @klass.new("10.0.0.0/23") - ip2 = @klass.new("10.0.2.0/24") - assert_equal ["10.0.0.0/23","10.0.2.0/24"], @klass.summarize(ip1,ip2).map{|i| i.to_string} - - ip1 = @klass.new("10.0.0.0/16") - ip2 = @klass.new("10.0.2.0/24") - assert_equal ["10.0.0.0/16"], @klass.summarize(ip1,ip2).map{|i| i.to_string} - - ip1 = @klass.new("10.0.0.0/23") - ip2 = @klass.new("10.1.0.0/24") - assert_equal ["10.0.0.0/23","10.1.0.0/24"], @klass.summarize(ip1,ip2).map{|i| i.to_string} - - ip1 = @klass.new("10.0.0.0/23") - ip2 = @klass.new("10.0.2.0/23") - ip3 = @klass.new("10.0.4.0/24") - ip4 = @klass.new("10.0.6.0/24") - assert_equal ["10.0.0.0/22","10.0.4.0/24","10.0.6.0/24"], - @klass.summarize(ip1,ip2,ip3,ip4).map{|i| i.to_string} - - ip1 = @klass.new("10.0.1.1/24") - ip2 = @klass.new("10.0.2.1/24") - ip3 = @klass.new("10.0.3.1/24") - ip4 = @klass.new("10.0.4.1/24") - result = ["10.0.1.0/24","10.0.2.0/23","10.0.4.0/24"] - assert_equal result, @klass.summarize(ip1,ip2,ip3,ip4).map{|i| i.to_string} - assert_equal result, @klass.summarize(ip4,ip3,ip2,ip1).map{|i| i.to_string} - - ip1 = @klass.new("10.0.1.1/24") - ip2 = @klass.new("10.10.2.1/24") - ip3 = @klass.new("172.16.0.1/24") - ip4 = @klass.new("172.16.1.1/24") - result = ["10.0.1.0/24","10.10.2.0/24","172.16.0.0/23"] - assert_equal result, @klass.summarize(ip1,ip2,ip3,ip4).map{|i| i.to_string} - - ips = [@klass.new("10.0.0.12/30"), - @klass.new("10.0.100.0/24")] - result = ["10.0.0.12/30", "10.0.100.0/24"] - assert_equal result, @klass.summarize(*ips).map{|i| i.to_string} - - ips = [@klass.new("172.16.0.0/31"), - @klass.new("10.10.2.1/32")] - result = ["10.10.2.1/32", "172.16.0.0/31"] - assert_equal result, @klass.summarize(*ips).map{|i| i.to_string} - - ips = [@klass.new("172.16.0.0/32"), - @klass.new("10.10.2.1/32")] - result = ["10.10.2.1/32", "172.16.0.0/32"] - assert_equal result, @klass.summarize(*ips).map{|i| i.to_string} - - end - - def test_classmethod_parse_data - ip = @klass.parse_data "\254\020\n\001" - assert_instance_of @klass, ip - assert_equal "172.16.10.1", ip.address - assert_equal "172.16.10.1/32", ip.to_string - end - - def test_classmethod_parse_classful - @classful.each do |ip,prefix| - res = @klass.parse_classful(ip) - assert_equal prefix, res.prefix - assert_equal "#{ip}/#{prefix}", res.to_string - end - assert_raise(ArgumentError){ @klass.parse_classful("192.168.256.257") } - end - -end # class IPv4Test - - diff --git a/test/ipaddress/ipv6_test.rb b/test/ipaddress/ipv6_test.rb deleted file mode 100644 index 84be76c..0000000 --- a/test/ipaddress/ipv6_test.rb +++ /dev/null @@ -1,356 +0,0 @@ -require 'test_helper' - -class IPv6Test < Test::Unit::TestCase - - def setup - @klass = IPAddress::IPv6 - - @compress_addr = { - "2001:db8:0000:0000:0008:0800:200c:417a" => "2001:db8::8:800:200c:417a", - "2001:db8:0:0:8:800:200c:417a" => "2001:db8::8:800:200c:417a", - "ff01:0:0:0:0:0:0:101" => "ff01::101", - "0:0:0:0:0:0:0:1" => "::1", - "0:0:0:0:0:0:0:0" => "::"} - - @valid_ipv6 = { # Kindly taken from the python IPy library - "FEDC:BA98:7654:3210:FEDC:BA98:7654:3210" => 338770000845734292534325025077361652240, - "1080:0000:0000:0000:0008:0800:200C:417A" => 21932261930451111902915077091070067066, - "1080:0:0:0:8:800:200C:417A" => 21932261930451111902915077091070067066, - "1080:0::8:800:200C:417A" => 21932261930451111902915077091070067066, - "1080::8:800:200C:417A" => 21932261930451111902915077091070067066, - "FF01:0:0:0:0:0:0:43" => 338958331222012082418099330867817087043, - "FF01:0:0::0:0:43" => 338958331222012082418099330867817087043, - "FF01::43" => 338958331222012082418099330867817087043, - "0:0:0:0:0:0:0:1" => 1, - "0:0:0::0:0:1" => 1, - "::1" => 1, - "0:0:0:0:0:0:0:0" => 0, - "0:0:0::0:0:0" => 0, - "::" => 0, - "1080:0:0:0:8:800:200C:417A" => 21932261930451111902915077091070067066, - "1080::8:800:200C:417A" => 21932261930451111902915077091070067066} - - @invalid_ipv6 = [":1:2:3:4:5:6:7", - ":1:2:3:4:5:6:7"] - - @ip = @klass.new "2001:db8::8:800:200c:417a/64" - @network = @klass.new "2001:db8:8:800::/64" - @arr = [8193,3512,0,0,8,2048,8204,16762] - @hex = "20010db80000000000080800200c417a" - end - - def test_attribute_address - addr = "2001:0db8:0000:0000:0008:0800:200c:417a" - assert_equal addr, @ip.address - end - - def test_initialize - assert_instance_of @klass, @ip - @valid_ipv6.keys.each do |ip| - assert_nothing_raised {@klass.new ip} - end - @invalid_ipv6.each do |ip| - assert_raise(ArgumentError) {@klass.new ip} - end - assert_equal 64, @ip.prefix - - assert_raise(ArgumentError) { - @klass.new "::10.1.1.1" - } - end - - def test_attribute_groups - assert_equal @arr, @ip.groups - end - - def test_method_hexs - arr = "2001:0db8:0000:0000:0008:0800:200c:417a".split(":") - assert_equal arr, @ip.hexs - end - - def test_method_to_i - @valid_ipv6.each do |ip,num| - assert_equal num, @klass.new(ip).to_i - end - end - - def test_method_bits - bits = "0010000000000001000011011011100000000000000000000" + - "000000000000000000000000000100000001000000000000010000" + - "0000011000100000101111010" - assert_equal bits, @ip.bits - end - - def test_method_prefix=() - ip = @klass.new "2001:db8::8:800:200c:417a" - assert_equal 128, ip.prefix - ip.prefix = 64 - assert_equal 64, ip.prefix - assert_equal "2001:db8::8:800:200c:417a/64", ip.to_string - end - - def test_method_mapped? - assert_equal false, @ip.mapped? - ip6 = @klass.new "::ffff:1234:5678" - assert_equal true, ip6.mapped? - end - - def test_method_literal - str = "2001-0db8-0000-0000-0008-0800-200c-417a.ipv6-literal.net" - assert_equal str, @ip.literal - end - - def test_method_group - @arr.each_with_index do |val,index| - assert_equal val, @ip[index] - end - end - - def test_method_ipv4? - assert_equal false, @ip.ipv4? - end - - def test_method_ipv6? - assert_equal true, @ip.ipv6? - end - - def test_method_network? - assert_equal true, @network.network? - assert_equal false, @ip.network? - end - - def test_method_network_u128 - assert_equal 42540766411282592856903984951653826560, @ip.network_u128 - end - - def test_method_include? - assert_equal true, @ip.include?(@ip) - # test prefix on same address - included = @klass.new "2001:db8::8:800:200c:417a/128" - not_included = @klass.new "2001:db8::8:800:200c:417a/46" - assert_equal true, @ip.include?(included) - assert_equal false, @ip.include?(not_included) - # test address on same prefix - included = @klass.new "2001:db8::8:800:200c:0/64" - not_included = @klass.new "2001:db8:1::8:800:200c:417a/64" - assert_equal true, @ip.include?(included) - assert_equal false, @ip.include?(not_included) - # general test - included = @klass.new "2001:db8::8:800:200c:1/128" - not_included = @klass.new "2001:db8:1::8:800:200c:417a/76" - assert_equal true, @ip.include?(included) - assert_equal false, @ip.include?(not_included) - end - - def test_method_to_hex - assert_equal @hex, @ip.to_hex - end - - def test_method_to_s - assert_equal "2001:db8::8:800:200c:417a", @ip.to_s - end - - def test_method_to_string - assert_equal "2001:db8::8:800:200c:417a/64", @ip.to_string - end - - def test_method_to_string_uncompressed - str = "2001:0db8:0000:0000:0008:0800:200c:417a/64" - assert_equal str, @ip.to_string_uncompressed - end - - def test_method_data - str = " \001\r\270\000\000\000\000\000\b\b\000 \fAz" - assert_equal str, @ip.data - end - - def test_method_reverse - 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" - assert_equal str, @klass.new("3ffe:505:2::f").reverse - end - - def test_method_compressed - assert_equal "1:1:1::1", @klass.new("1:1:1:0:0:0:0:1").compressed - assert_equal "1:0:1::1", @klass.new("1:0:1:0:0:0:0:1").compressed - assert_equal "1:0:0:1::1", @klass.new("1:0:0:1:0:0:0:1").compressed - assert_equal "1::1:0:0:1", @klass.new("1:0:0:0:1:0:0:1").compressed - assert_equal "1::1", @klass.new("1:0:0:0:0:0:0:1").compressed - end - - def test_method_unspecified? - assert_equal true, @klass.new("::").unspecified? - assert_equal false, @ip.unspecified? - end - - def test_method_loopback? - assert_equal true, @klass.new("::1").loopback? - assert_equal false, @ip.loopback? - end - - def test_classmethod_expand - compressed = "2001:db8:0:cd30::" - expanded = "2001:0db8:0000:cd30:0000:0000:0000:0000" - assert_equal expanded, @klass.expand(compressed) - assert_not_equal expanded, @klass.expand("2001:0db8:0:cd3") - assert_not_equal expanded, @klass.expand("2001:0db8::cd30") - assert_not_equal expanded, @klass.expand("2001:0db8::cd3") - end - - def test_classmethod_compress - compressed = "2001:db8:0:cd30::" - expanded = "2001:0db8:0000:cd30:0000:0000:0000:0000" - assert_equal compressed, @klass.compress(expanded) - assert_not_equal compressed, @klass.compress("2001:0db8:0:cd3") - assert_not_equal compressed, @klass.compress("2001:0db8::cd30") - assert_not_equal compressed, @klass.compress("2001:0db8::cd3") - end - - def test_classmethod_parse_data - str = " \001\r\270\000\000\000\000\000\b\b\000 \fAz" - ip = @klass.parse_data str - assert_instance_of @klass, ip - assert_equal "2001:0db8:0000:0000:0008:0800:200c:417a", ip.address - assert_equal "2001:db8::8:800:200c:417a/128", ip.to_string - end - - def test_classhmethod_parse_u128 - @valid_ipv6.each do |ip,num| - assert_equal @klass.new(ip).to_s, @klass.parse_u128(num).to_s - end - end - - def test_classmethod_parse_hex - assert_equal @ip.to_s, @klass.parse_hex(@hex,64).to_s - end - -end # class IPv6Test - -class IPv6UnspecifiedTest < Test::Unit::TestCase - - def setup - @klass = IPAddress::IPv6::Unspecified - @ip = @klass.new - @s = "::" - @str = "::/128" - @string = "0000:0000:0000:0000:0000:0000:0000:0000/128" - @u128 = 0 - @address = "::" - end - - def test_initialize - assert_nothing_raised {@klass.new} - assert_instance_of @klass, @ip - end - - def test_attributes - assert_equal @address, @ip.compressed - assert_equal 128, @ip.prefix - assert_equal true, @ip.unspecified? - assert_equal @s, @ip.to_s - assert_equal @str, @ip.to_string - assert_equal @string, @ip.to_string_uncompressed - assert_equal @u128, @ip.to_u128 - end - - def test_method_ipv6? - assert_equal true, @ip.ipv6? - end - -end # class IPv6UnspecifiedTest - - -class IPv6LoopbackTest < Test::Unit::TestCase - - def setup - @klass = IPAddress::IPv6::Loopback - @ip = @klass.new - @s = "::1" - @str = "::1/128" - @string = "0000:0000:0000:0000:0000:0000:0000:0001/128" - @u128 = 1 - @address = "::1" - end - - def test_initialize - assert_nothing_raised {@klass.new} - assert_instance_of @klass, @ip - end - - def test_attributes - assert_equal @address, @ip.compressed - assert_equal 128, @ip.prefix - assert_equal true, @ip.loopback? - assert_equal @s, @ip.to_s - assert_equal @str, @ip.to_string - assert_equal @string, @ip.to_string_uncompressed - assert_equal @u128, @ip.to_u128 - end - - def test_method_ipv6? - assert_equal true, @ip.ipv6? - end - -end # class IPv6LoopbackTest - -class IPv6MappedTest < Test::Unit::TestCase - - def setup - @klass = IPAddress::IPv6::Mapped - @ip = @klass.new("::172.16.10.1") - @s = "::ffff:172.16.10.1" - @str = "::ffff:172.16.10.1/128" - @string = "0000:0000:0000:0000:0000:ffff:ac10:0a01/128" - @u128 = 281473568475649 - @address = "::ffff:ac10:a01" - - @valid_mapped = {'::13.1.68.3' => 281470899930115, - '0:0:0:0:0:ffff:129.144.52.38' => 281472855454758, - '::ffff:129.144.52.38' => 281472855454758} - - @valid_mapped_ipv6 = {'::0d01:4403' => 281470899930115, - '0:0:0:0:0:ffff:8190:3426' => 281472855454758, - '::ffff:8190:3426' => 281472855454758} - - @valid_mapped_ipv6_conversion = {'::0d01:4403' => "13.1.68.3", - '0:0:0:0:0:ffff:8190:3426' => "129.144.52.38", - '::ffff:8190:3426' => "129.144.52.38"} - - end - - def test_initialize - assert_nothing_raised {@klass.new("::172.16.10.1")} - assert_instance_of @klass, @ip - @valid_mapped.each do |ip, u128| - assert_nothing_raised {@klass.new ip} - assert_equal u128, @klass.new(ip).to_u128 - end - @valid_mapped_ipv6.each do |ip, u128| - assert_nothing_raised {@klass.new ip} - assert_equal u128, @klass.new(ip).to_u128 - end - end - - def test_mapped_from_ipv6_conversion - @valid_mapped_ipv6_conversion.each do |ip6,ip4| - assert_equal ip4, @klass.new(ip6).ipv4.to_s - end - end - - def test_attributes - assert_equal @address, @ip.compressed - assert_equal 128, @ip.prefix - assert_equal @s, @ip.to_s - assert_equal @str, @ip.to_string - assert_equal @string, @ip.to_string_uncompressed - assert_equal @u128, @ip.to_u128 - end - - def test_method_ipv6? - assert_equal true, @ip.ipv6? - end - - def test_mapped? - assert_equal true, @ip.mapped? - end - -end # class IPv6MappedTest diff --git a/test/ipaddress/prefix_test.rb b/test/ipaddress/prefix_test.rb deleted file mode 100644 index bff812e..0000000 --- a/test/ipaddress/prefix_test.rb +++ /dev/null @@ -1,159 +0,0 @@ -require 'test_helper' - -class Prefix32Test < Test::Unit::TestCase - - def setup - @netmask0 = "0.0.0.0" - @netmask8 = "255.0.0.0" - @netmask16 = "255.255.0.0" - @netmask24 = "255.255.255.0" - @netmask30 = "255.255.255.252" - @netmasks = [@netmask0,@netmask8,@netmask16,@netmask24,@netmask30] - - @prefix_hash = { - "0.0.0.0" => 0, - "255.0.0.0" => 8, - "255.255.0.0" => 16, - "255.255.255.0" => 24, - "255.255.255.252" => 30} - - @octets_hash = { - [0,0,0,0] => 0, - [255,0,0,0] => 8, - [255,255,0,0] => 16, - [255,255,255,0] => 24, - [255,255,255,252] => 30} - - @u32_hash = { - 0 => 0, - 8 => 4278190080, - 16 => 4294901760, - 24 => 4294967040, - 30 => 4294967292} - - @klass = IPAddress::Prefix32 - end - - def test_attributes - @prefix_hash.values.each do |num| - prefix = @klass.new(num) - assert_equal num, prefix.prefix - end - end - - def test_parse_netmask - @prefix_hash.each do |netmask, num| - prefix = @klass.parse_netmask(netmask) - assert_equal num, prefix.prefix - assert_instance_of @klass, prefix - end - end - - def test_method_to_ip - @prefix_hash.each do |netmask, num| - prefix = @klass.new(num) - assert_equal netmask, prefix.to_ip - end - end - - def test_method_to_s - prefix = @klass.new(8) - assert_equal "8", prefix.to_s - end - - def test_method_bits - prefix = @klass.new(16) - str = "1"*16 + "0"*16 - assert_equal str, prefix.bits - end - - def test_method_to_u32 - @u32_hash.each do |num,u32| - assert_equal u32, @klass.new(num).to_u32 - end - end - - def test_method_plus - p1 = @klass.new 8 - p2 = @klass.new 10 - assert_equal 18, p1+p2 - assert_equal 12, p1+4 - end - - def test_method_minus - p1 = @klass.new 8 - p2 = @klass.new 24 - assert_equal 16, p1-p2 - assert_equal 16, p2-p1 - assert_equal 20, p2-4 - end - - def test_initialize - assert_raise (ArgumentError) do - @klass.new 33 - end - assert_nothing_raised do - @klass.new 8 - end - assert_instance_of @klass, @klass.new(8) - end - - def test_method_octets - @octets_hash.each do |arr,pref| - prefix = @klass.new(pref) - assert_equal prefix.octets, arr - end - end - - def test_method_brackets - @octets_hash.each do |arr,pref| - prefix = @klass.new(pref) - arr.each_with_index do |oct,index| - assert_equal prefix[index], oct - end - end - end - - def test_method_hostmask - prefix = @klass.new(8) - assert_equal "0.255.255.255", prefix.hostmask - end - -end # class Prefix32Test - - -class Prefix128Test < Test::Unit::TestCase - - def setup - @u128_hash = { - 32 => 340282366841710300949110269838224261120, - 64 => 340282366920938463444927863358058659840, - 96 => 340282366920938463463374607427473244160, - 126 => 340282366920938463463374607431768211452} - - @klass = IPAddress::Prefix128 - end - - def test_initialize - assert_raise (ArgumentError) do - @klass.new 129 - end - assert_nothing_raised do - @klass.new 64 - end - assert_instance_of @klass, @klass.new(64) - end - - def test_method_bits - prefix = @klass.new(64) - str = "1"*64 + "0"*64 - assert_equal str, prefix.bits - end - - def test_method_to_u32 - @u128_hash.each do |num,u128| - assert_equal u128, @klass.new(num).to_u128 - end - end - -end # class Prefix128Test |
