PageRenderTime 52ms CodeModel.GetById 24ms RepoModel.GetById 0ms app.codeStats 0ms

/test/ipaddress/prefix_test.rb

https://gitlab.com/intruxxer/ipaddress
Ruby | 159 lines | 132 code | 27 blank | 0 comment | 0 complexity | 6e918735c3a9ac5497ccf266f4a9f463 MD5 | raw file
  1. require 'test_helper'
  2. class Prefix32Test < Test::Unit::TestCase
  3. def setup
  4. @netmask0 = "0.0.0.0"
  5. @netmask8 = "255.0.0.0"
  6. @netmask16 = "255.255.0.0"
  7. @netmask24 = "255.255.255.0"
  8. @netmask30 = "255.255.255.252"
  9. @netmasks = [@netmask0,@netmask8,@netmask16,@netmask24,@netmask30]
  10. @prefix_hash = {
  11. "0.0.0.0" => 0,
  12. "255.0.0.0" => 8,
  13. "255.255.0.0" => 16,
  14. "255.255.255.0" => 24,
  15. "255.255.255.252" => 30}
  16. @octets_hash = {
  17. [0,0,0,0] => 0,
  18. [255,0,0,0] => 8,
  19. [255,255,0,0] => 16,
  20. [255,255,255,0] => 24,
  21. [255,255,255,252] => 30}
  22. @u32_hash = {
  23. 0 => 0,
  24. 8 => 4278190080,
  25. 16 => 4294901760,
  26. 24 => 4294967040,
  27. 30 => 4294967292}
  28. @klass = IPAddress::Prefix32
  29. end
  30. def test_attributes
  31. @prefix_hash.values.each do |num|
  32. prefix = @klass.new(num)
  33. assert_equal num, prefix.prefix
  34. end
  35. end
  36. def test_parse_netmask
  37. @prefix_hash.each do |netmask, num|
  38. prefix = @klass.parse_netmask(netmask)
  39. assert_equal num, prefix.prefix
  40. assert_instance_of @klass, prefix
  41. end
  42. end
  43. def test_method_to_ip
  44. @prefix_hash.each do |netmask, num|
  45. prefix = @klass.new(num)
  46. assert_equal netmask, prefix.to_ip
  47. end
  48. end
  49. def test_method_to_s
  50. prefix = @klass.new(8)
  51. assert_equal "8", prefix.to_s
  52. end
  53. def test_method_bits
  54. prefix = @klass.new(16)
  55. str = "1"*16 + "0"*16
  56. assert_equal str, prefix.bits
  57. end
  58. def test_method_to_u32
  59. @u32_hash.each do |num,u32|
  60. assert_equal u32, @klass.new(num).to_u32
  61. end
  62. end
  63. def test_method_plus
  64. p1 = @klass.new 8
  65. p2 = @klass.new 10
  66. assert_equal 18, p1+p2
  67. assert_equal 12, p1+4
  68. end
  69. def test_method_minus
  70. p1 = @klass.new 8
  71. p2 = @klass.new 24
  72. assert_equal 16, p1-p2
  73. assert_equal 16, p2-p1
  74. assert_equal 20, p2-4
  75. end
  76. def test_initialize
  77. assert_raise (ArgumentError) do
  78. @klass.new 33
  79. end
  80. assert_nothing_raised do
  81. @klass.new 8
  82. end
  83. assert_instance_of @klass, @klass.new(8)
  84. end
  85. def test_method_octets
  86. @octets_hash.each do |arr,pref|
  87. prefix = @klass.new(pref)
  88. assert_equal prefix.octets, arr
  89. end
  90. end
  91. def test_method_brackets
  92. @octets_hash.each do |arr,pref|
  93. prefix = @klass.new(pref)
  94. arr.each_with_index do |oct,index|
  95. assert_equal prefix[index], oct
  96. end
  97. end
  98. end
  99. def test_method_hostmask
  100. prefix = @klass.new(8)
  101. assert_equal "0.255.255.255", prefix.hostmask
  102. end
  103. end # class Prefix32Test
  104. class Prefix128Test < Test::Unit::TestCase
  105. def setup
  106. @u128_hash = {
  107. 32 => 340282366841710300949110269838224261120,
  108. 64 => 340282366920938463444927863358058659840,
  109. 96 => 340282366920938463463374607427473244160,
  110. 126 => 340282366920938463463374607431768211452}
  111. @klass = IPAddress::Prefix128
  112. end
  113. def test_initialize
  114. assert_raise (ArgumentError) do
  115. @klass.new 129
  116. end
  117. assert_nothing_raised do
  118. @klass.new 64
  119. end
  120. assert_instance_of @klass, @klass.new(64)
  121. end
  122. def test_method_bits
  123. prefix = @klass.new(64)
  124. str = "1"*64 + "0"*64
  125. assert_equal str, prefix.bits
  126. end
  127. def test_method_to_u32
  128. @u128_hash.each do |num,u128|
  129. assert_equal u128, @klass.new(num).to_u128
  130. end
  131. end
  132. end # class Prefix128Test