test/ipaddress/ipv4_test.rb in ipaddress-0.5.0 vs test/ipaddress/ipv4_test.rb in ipaddress-0.6.0
- old
+ new
@@ -72,10 +72,18 @@
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
+ 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
@@ -93,17 +101,24 @@
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.join("/"), ip.to_s
+ 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
@@ -123,19 +138,19 @@
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_s
+ 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_s
+ assert_equal net, ip.network.to_string
end
end
def test_method_bits
ip = @klass.new("127.0.0.1")
@@ -143,53 +158,53 @@
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/24", ip.first.to_s
+ 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/24", ip.first.to_s
+ 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/24", ip.last.to_s
+ 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/24", ip.last.to_s
+ 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/29","10.0.0.2/29","10.0.0.3/29",
- "10.0.0.4/29","10.0.0.5/29","10.0.0.6/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, 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/29","10.0.0.1/29","10.0.0.2/29",
- "10.0.0.3/29","10.0.0.4/29","10.0.0.5/29",
- "10.0.0.6/29","10.0.0.7/29"]
+ 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/29","10.0.0.2/29","10.0.0.3/29",
- "10.0.0.4/29","10.0.0.5/29","10.0.0.6/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
@@ -270,11 +285,11 @@
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_s}
+ 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")
@@ -283,16 +298,34 @@
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).to_s
+ 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_s,ip2.network.to_s], (ip1 + ip2).map{|i| i.to_s}
+ 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
@@ -303,89 +336,110 @@
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_s}
+ 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_s}
+ 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_s}
+ 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_s}
+ 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_s}
+ 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_s}
+ 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_s}
+ 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_s}
+ 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_s
- assert_equal "172.16.8.0/22", @ip.supernet(22).to_s
+ 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_s, addr
+ assert_equal ip.to_string, addr
end
end
def test_classhmethod_extract
str = "foobar172.16.10.1barbaz"
- assert_equal "172.16.10.1/16", @klass.extract(str).to_s
+ 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, @klass.summarize(@ip)
+ 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).to_s
+ 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).to_s
-
+ 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_s}
+ 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_s}
+ assert_equal result, @klass.summarize(ip1,ip2,ip3,ip4).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/16", ip.to_s
+ assert_equal "172.16.10.1/16", ip.to_string
end
end # class IPv4Test