ipaddress 0.8.0 → 0.8.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +18 -0
- data/.rock.yml +5 -0
- data/CHANGELOG.rdoc +15 -0
- data/Gemfile +3 -0
- data/{LICENSE → LICENSE.txt} +1 -1
- data/README.rdoc +106 -69
- data/Rakefile +2 -19
- data/ipaddress.gemspec +20 -49
- data/lib/ipaddress.rb +35 -10
- data/lib/ipaddress/ipv4.rb +124 -14
- data/lib/ipaddress/ipv6.rb +9 -0
- data/lib/ipaddress/mongoid.rb +75 -0
- data/lib/ipaddress/prefix.rb +2 -2
- data/lib/ipaddress/version.rb +3 -0
- data/test/ipaddress/ipv4_test.rb +91 -23
- data/test/ipaddress/ipv6_test.rb +27 -23
- data/test/ipaddress/mongoid_test.rb +70 -0
- data/test/ipaddress/prefix_test.rb +4 -10
- data/test/ipaddress_test.rb +34 -7
- data/test/test_helper.rb +10 -3
- metadata +64 -28
- data/VERSION +0 -1
data/lib/ipaddress/prefix.rb
CHANGED
@@ -214,8 +214,8 @@ module IPAddress
|
|
214
214
|
# #=> 64
|
215
215
|
#
|
216
216
|
def initialize(num=128)
|
217
|
-
unless (
|
218
|
-
raise ArgumentError, "Prefix must be in range
|
217
|
+
unless (0..128).include? num.to_i
|
218
|
+
raise ArgumentError, "Prefix must be in range 0..128, got: #{num}"
|
219
219
|
end
|
220
220
|
super(num.to_i)
|
221
221
|
end
|
data/test/ipaddress/ipv4_test.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'test_helper'
|
2
2
|
|
3
|
-
class IPv4Test < Test
|
3
|
+
class IPv4Test < Minitest::Test
|
4
4
|
|
5
5
|
def setup
|
6
6
|
@klass = IPAddress::IPv4
|
@@ -26,7 +26,8 @@ class IPv4Test < Test::Unit::TestCase
|
|
26
26
|
"10.0.0.0/8" => "255.0.0.0",
|
27
27
|
"172.16.0.0/16" => "255.255.0.0",
|
28
28
|
"192.168.0.0/24" => "255.255.255.0",
|
29
|
-
"192.168.100.4/30" => "255.255.255.252"
|
29
|
+
"192.168.100.4/30" => "255.255.255.252",
|
30
|
+
"192.168.12.4/32" => "255.255.255.255"}
|
30
31
|
|
31
32
|
@decimal_values ={
|
32
33
|
"0.0.0.0/0" => 0,
|
@@ -34,7 +35,13 @@ class IPv4Test < Test::Unit::TestCase
|
|
34
35
|
"172.16.0.0/16" => 2886729728,
|
35
36
|
"192.168.0.0/24" => 3232235520,
|
36
37
|
"192.168.100.4/30" => 3232261124}
|
37
|
-
|
38
|
+
|
39
|
+
@hex_values = {
|
40
|
+
"10.0.0.0" => "0a000000",
|
41
|
+
"172.16.5.4" => "ac100504",
|
42
|
+
"192.168.100.4" => "c0a86404",
|
43
|
+
}
|
44
|
+
|
38
45
|
@ip = @klass.new("172.16.10.1/24")
|
39
46
|
@network = @klass.new("172.16.10.0/24")
|
40
47
|
|
@@ -42,13 +49,17 @@ class IPv4Test < Test::Unit::TestCase
|
|
42
49
|
"10.0.0.0/8" => "10.255.255.255/8",
|
43
50
|
"172.16.0.0/16" => "172.16.255.255/16",
|
44
51
|
"192.168.0.0/24" => "192.168.0.255/24",
|
45
|
-
"192.168.100.4/30" => "192.168.100.7/30"
|
52
|
+
"192.168.100.4/30" => "192.168.100.7/30",
|
53
|
+
"192.168.12.3/31" => "255.255.255.255/31",
|
54
|
+
"10.0.0.1/32" => "10.0.0.1/32"}
|
46
55
|
|
47
56
|
@networks = {
|
48
57
|
"10.5.4.3/8" => "10.0.0.0/8",
|
49
58
|
"172.16.5.4/16" => "172.16.0.0/16",
|
50
59
|
"192.168.4.3/24" => "192.168.4.0/24",
|
51
|
-
"192.168.100.5/30" => "192.168.100.4/30"
|
60
|
+
"192.168.100.5/30" => "192.168.100.4/30",
|
61
|
+
"192.168.1.3/31" => "192.168.1.2/31",
|
62
|
+
"192.168.2.5/32" => "192.168.2.5/32"}
|
52
63
|
|
53
64
|
@class_a = @klass.new("10.0.0.1/8")
|
54
65
|
@class_b = @klass.new("172.16.0.1/16")
|
@@ -58,6 +69,11 @@ class IPv4Test < Test::Unit::TestCase
|
|
58
69
|
"10.1.1.1" => 8,
|
59
70
|
"150.1.1.1" => 16,
|
60
71
|
"200.1.1.1" => 24 }
|
72
|
+
|
73
|
+
@in_range = {
|
74
|
+
"10.32.0.1" => ["10.32.0.253", 253],
|
75
|
+
"192.0.0.0" => ["192.1.255.255", 131072]
|
76
|
+
}
|
61
77
|
|
62
78
|
end
|
63
79
|
|
@@ -67,25 +83,19 @@ class IPv4Test < Test::Unit::TestCase
|
|
67
83
|
assert_instance_of @klass, ip
|
68
84
|
end
|
69
85
|
assert_instance_of IPAddress::Prefix32, @ip.prefix
|
70
|
-
|
86
|
+
assert_raises (ArgumentError) do
|
71
87
|
@klass.new
|
72
88
|
end
|
73
|
-
assert_nothing_raised do
|
74
|
-
@klass.new "10.0.0.0/8"
|
75
|
-
end
|
76
89
|
end
|
77
90
|
|
78
91
|
def test_initialize_format_error
|
79
92
|
@invalid_ipv4.each do |i|
|
80
|
-
|
93
|
+
assert_raises(ArgumentError) {@klass.new(i)}
|
81
94
|
end
|
82
|
-
|
95
|
+
assert_raises (ArgumentError) {@klass.new("10.0.0.0/asd")}
|
83
96
|
end
|
84
97
|
|
85
98
|
def test_initialize_without_prefix
|
86
|
-
assert_nothing_raised do
|
87
|
-
@klass.new("10.10.0.0")
|
88
|
-
end
|
89
99
|
ip = @klass.new("10.10.0.0")
|
90
100
|
assert_instance_of IPAddress::Prefix32, ip.prefix
|
91
101
|
assert_equal 32, ip.prefix.to_i
|
@@ -105,11 +115,15 @@ class IPv4Test < Test::Unit::TestCase
|
|
105
115
|
end
|
106
116
|
|
107
117
|
def test_initialize_should_require_ip
|
108
|
-
|
118
|
+
assert_raises(ArgumentError) { @klass.new }
|
109
119
|
end
|
110
120
|
|
111
121
|
def test_method_data
|
112
|
-
|
122
|
+
if RUBY_VERSION < "2.0"
|
123
|
+
assert_equal "\254\020\n\001", @ip.data
|
124
|
+
else
|
125
|
+
assert_equal "\xAC\x10\n\x01".b, @ip.data
|
126
|
+
end
|
113
127
|
end
|
114
128
|
|
115
129
|
def test_method_to_string
|
@@ -140,10 +154,22 @@ class IPv4Test < Test::Unit::TestCase
|
|
140
154
|
end
|
141
155
|
end
|
142
156
|
|
157
|
+
def test_method_to_hex
|
158
|
+
@hex_values.each do |addr,hex|
|
159
|
+
ip = @klass.new(addr)
|
160
|
+
assert_equal hex, ip.to_hex
|
161
|
+
end
|
162
|
+
end
|
163
|
+
|
143
164
|
def test_method_network?
|
144
165
|
assert_equal true, @network.network?
|
145
166
|
assert_equal false, @ip.network?
|
146
167
|
end
|
168
|
+
|
169
|
+
def test_one_address_network
|
170
|
+
network = @klass.new("172.16.10.1/32")
|
171
|
+
assert_equal false, network.network?
|
172
|
+
end
|
147
173
|
|
148
174
|
def test_method_broadcast
|
149
175
|
@broadcast.each do |addr,bcast|
|
@@ -173,6 +199,12 @@ class IPv4Test < Test::Unit::TestCase
|
|
173
199
|
ip = @klass.new("192.168.100.50/24")
|
174
200
|
assert_instance_of @klass, ip.first
|
175
201
|
assert_equal "192.168.100.1", ip.first.to_s
|
202
|
+
ip = @klass.new("192.168.100.50/32")
|
203
|
+
assert_instance_of @klass, ip.first
|
204
|
+
assert_equal "192.168.100.50", ip.first.to_s
|
205
|
+
ip = @klass.new("192.168.100.50/31")
|
206
|
+
assert_instance_of @klass, ip.first
|
207
|
+
assert_equal "192.168.100.50", ip.first.to_s
|
176
208
|
end
|
177
209
|
|
178
210
|
def test_method_last
|
@@ -182,6 +214,12 @@ class IPv4Test < Test::Unit::TestCase
|
|
182
214
|
ip = @klass.new("192.168.100.50/24")
|
183
215
|
assert_instance_of @klass, ip.last
|
184
216
|
assert_equal "192.168.100.254", ip.last.to_s
|
217
|
+
ip = @klass.new("192.168.100.50/32")
|
218
|
+
assert_instance_of @klass, ip.last
|
219
|
+
assert_equal "192.168.100.50", ip.last.to_s
|
220
|
+
ip = @klass.new("192.168.100.50/31")
|
221
|
+
assert_instance_of @klass, ip.last
|
222
|
+
assert_equal "192.168.100.51", ip.last.to_s
|
185
223
|
end
|
186
224
|
|
187
225
|
def test_method_each_host
|
@@ -378,8 +416,8 @@ class IPv4Test < Test::Unit::TestCase
|
|
378
416
|
end
|
379
417
|
|
380
418
|
def test_method_split
|
381
|
-
|
382
|
-
|
419
|
+
assert_raises(ArgumentError) {@ip.split(0)}
|
420
|
+
assert_raises(ArgumentError) {@ip.split(257)}
|
383
421
|
|
384
422
|
assert_equal @ip.network, @ip.split(1).first
|
385
423
|
|
@@ -409,9 +447,8 @@ class IPv4Test < Test::Unit::TestCase
|
|
409
447
|
end
|
410
448
|
|
411
449
|
def test_method_subnet
|
412
|
-
|
413
|
-
|
414
|
-
assert_nothing_raised {@ip.subnet(30)}
|
450
|
+
assert_raises(ArgumentError) {@network.subnet(23)}
|
451
|
+
assert_raises(ArgumentError) {@network.subnet(33)}
|
415
452
|
arr = ["172.16.10.0/26", "172.16.10.64/26", "172.16.10.128/26",
|
416
453
|
"172.16.10.192/26"]
|
417
454
|
assert_equal arr, @network.subnet(26).map {|s| s.to_string}
|
@@ -422,7 +459,7 @@ class IPv4Test < Test::Unit::TestCase
|
|
422
459
|
end
|
423
460
|
|
424
461
|
def test_method_supernet
|
425
|
-
|
462
|
+
assert_raises(ArgumentError) {@ip.supernet(24)}
|
426
463
|
assert_equal "0.0.0.0/0", @ip.supernet(0).to_string
|
427
464
|
assert_equal "0.0.0.0/0", @ip.supernet(-2).to_string
|
428
465
|
assert_equal "172.16.10.0/23", @ip.supernet(23).to_string
|
@@ -524,9 +561,40 @@ class IPv4Test < Test::Unit::TestCase
|
|
524
561
|
assert_equal prefix, res.prefix
|
525
562
|
assert_equal "#{ip}/#{prefix}", res.to_string
|
526
563
|
end
|
527
|
-
|
564
|
+
assert_raises(ArgumentError){ @klass.parse_classful("192.168.256.257") }
|
528
565
|
end
|
529
566
|
|
567
|
+
def test_network_split
|
568
|
+
@classful.each do |ip,net|
|
569
|
+
x = @klass.new("#{ip}/#{net}")
|
570
|
+
assert_equal x.split(1).length, 1
|
571
|
+
assert_equal x.split(2).length, 2
|
572
|
+
assert_equal x.split(32).length, 32
|
573
|
+
assert_equal x.split(256).length, 256
|
574
|
+
end
|
575
|
+
end
|
576
|
+
|
577
|
+
def test_in_range
|
578
|
+
@in_range.each do |s,d|
|
579
|
+
ip = @klass.new(s)
|
580
|
+
assert_equal ip.to(d[0]).length, d[1]
|
581
|
+
end
|
582
|
+
end
|
583
|
+
|
584
|
+
def test_octect_updates
|
585
|
+
ip = @klass.new("10.0.1.15/32")
|
586
|
+
ip[1] = 15
|
587
|
+
assert_equal "10.15.1.15/32", ip.to_string
|
588
|
+
|
589
|
+
ip = @klass.new("172.16.100.1")
|
590
|
+
ip[3] = 200
|
591
|
+
assert_equal "172.16.100.200/32", ip.to_string
|
592
|
+
|
593
|
+
ip = @klass.new("192.168.199.0/24")
|
594
|
+
ip[2] = 200
|
595
|
+
assert_equal "192.168.200.0/24", ip.to_string
|
596
|
+
end
|
597
|
+
|
530
598
|
end # class IPv4Test
|
531
599
|
|
532
600
|
|
data/test/ipaddress/ipv6_test.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'test_helper'
|
2
2
|
|
3
|
-
class IPv6Test < Test
|
3
|
+
class IPv6Test < Minitest::Test
|
4
4
|
|
5
5
|
def setup
|
6
6
|
@klass = IPAddress::IPv6
|
@@ -31,7 +31,9 @@ class IPv6Test < Test::Unit::TestCase
|
|
31
31
|
"1080::8:800:200C:417A" => 21932261930451111902915077091070067066}
|
32
32
|
|
33
33
|
@invalid_ipv6 = [":1:2:3:4:5:6:7",
|
34
|
-
":1:2:3:4:5:6:7"
|
34
|
+
":1:2:3:4:5:6:7",
|
35
|
+
"2002:516:2:200",
|
36
|
+
"dd"]
|
35
37
|
|
36
38
|
@networks = {
|
37
39
|
"2001:db8:1:1:1:1:1:1/32" => "2001:db8::/32",
|
@@ -51,15 +53,12 @@ class IPv6Test < Test::Unit::TestCase
|
|
51
53
|
|
52
54
|
def test_initialize
|
53
55
|
assert_instance_of @klass, @ip
|
54
|
-
@valid_ipv6.keys.each do |ip|
|
55
|
-
assert_nothing_raised {@klass.new ip}
|
56
|
-
end
|
57
56
|
@invalid_ipv6.each do |ip|
|
58
|
-
|
57
|
+
assert_raises(ArgumentError) {@klass.new ip}
|
59
58
|
end
|
60
59
|
assert_equal 64, @ip.prefix
|
61
60
|
|
62
|
-
|
61
|
+
assert_raises(ArgumentError) {
|
63
62
|
@klass.new "::10.1.1.1"
|
64
63
|
}
|
65
64
|
end
|
@@ -180,7 +179,11 @@ class IPv6Test < Test::Unit::TestCase
|
|
180
179
|
end
|
181
180
|
|
182
181
|
def test_method_data
|
183
|
-
|
182
|
+
if RUBY_VERSION < "2.0"
|
183
|
+
str = " \001\r\270\000\000\000\000\000\b\b\000 \fAz"
|
184
|
+
else
|
185
|
+
str = " \x01\r\xB8\x00\x00\x00\x00\x00\b\b\x00 \fAz".b
|
186
|
+
end
|
184
187
|
assert_equal str, @ip.data
|
185
188
|
end
|
186
189
|
|
@@ -257,18 +260,18 @@ class IPv6Test < Test::Unit::TestCase
|
|
257
260
|
compressed = "2001:db8:0:cd30::"
|
258
261
|
expanded = "2001:0db8:0000:cd30:0000:0000:0000:0000"
|
259
262
|
assert_equal expanded, @klass.expand(compressed)
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
+
refute_equal expanded, @klass.expand("2001:0db8:0::cd3")
|
264
|
+
refute_equal expanded, @klass.expand("2001:0db8::cd30")
|
265
|
+
refute_equal expanded, @klass.expand("2001:0db8::cd3")
|
263
266
|
end
|
264
267
|
|
265
268
|
def test_classmethod_compress
|
266
269
|
compressed = "2001:db8:0:cd30::"
|
267
270
|
expanded = "2001:0db8:0000:cd30:0000:0000:0000:0000"
|
268
271
|
assert_equal compressed, @klass.compress(expanded)
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
+
refute_equal compressed, @klass.compress("2001:0db8:0::cd3")
|
273
|
+
refute_equal compressed, @klass.compress("2001:0db8::cd30")
|
274
|
+
refute_equal compressed, @klass.compress("2001:0db8::cd3")
|
272
275
|
end
|
273
276
|
|
274
277
|
def test_classmethod_parse_data
|
@@ -289,9 +292,15 @@ class IPv6Test < Test::Unit::TestCase
|
|
289
292
|
assert_equal @ip.to_s, @klass.parse_hex(@hex,64).to_s
|
290
293
|
end
|
291
294
|
|
295
|
+
def test_group_updates
|
296
|
+
ip = @klass.new("2001:db8::8:800:200c:417a/64")
|
297
|
+
ip[2] = '1234'
|
298
|
+
assert_equal "2001:db8:4d2:0:8:800:200c:417a/64", ip.to_string
|
299
|
+
end
|
300
|
+
|
292
301
|
end # class IPv6Test
|
293
302
|
|
294
|
-
class IPv6UnspecifiedTest < Test
|
303
|
+
class IPv6UnspecifiedTest < Minitest::Test
|
295
304
|
|
296
305
|
def setup
|
297
306
|
@klass = IPAddress::IPv6::Unspecified
|
@@ -304,7 +313,6 @@ class IPv6UnspecifiedTest < Test::Unit::TestCase
|
|
304
313
|
end
|
305
314
|
|
306
315
|
def test_initialize
|
307
|
-
assert_nothing_raised {@klass.new}
|
308
316
|
assert_instance_of @klass, @ip
|
309
317
|
end
|
310
318
|
|
@@ -325,7 +333,7 @@ class IPv6UnspecifiedTest < Test::Unit::TestCase
|
|
325
333
|
end # class IPv6UnspecifiedTest
|
326
334
|
|
327
335
|
|
328
|
-
class IPv6LoopbackTest < Test
|
336
|
+
class IPv6LoopbackTest < Minitest::Test
|
329
337
|
|
330
338
|
def setup
|
331
339
|
@klass = IPAddress::IPv6::Loopback
|
@@ -338,7 +346,6 @@ class IPv6LoopbackTest < Test::Unit::TestCase
|
|
338
346
|
end
|
339
347
|
|
340
348
|
def test_initialize
|
341
|
-
assert_nothing_raised {@klass.new}
|
342
349
|
assert_instance_of @klass, @ip
|
343
350
|
end
|
344
351
|
|
@@ -358,7 +365,7 @@ class IPv6LoopbackTest < Test::Unit::TestCase
|
|
358
365
|
|
359
366
|
end # class IPv6LoopbackTest
|
360
367
|
|
361
|
-
class IPv6MappedTest < Test
|
368
|
+
class IPv6MappedTest < Minitest::Test
|
362
369
|
|
363
370
|
def setup
|
364
371
|
@klass = IPAddress::IPv6::Mapped
|
@@ -384,14 +391,11 @@ class IPv6MappedTest < Test::Unit::TestCase
|
|
384
391
|
end
|
385
392
|
|
386
393
|
def test_initialize
|
387
|
-
assert_nothing_raised {@klass.new("::172.16.10.1")}
|
388
394
|
assert_instance_of @klass, @ip
|
389
395
|
@valid_mapped.each do |ip, u128|
|
390
|
-
assert_nothing_raised {@klass.new ip}
|
391
396
|
assert_equal u128, @klass.new(ip).to_u128
|
392
397
|
end
|
393
398
|
@valid_mapped_ipv6.each do |ip, u128|
|
394
|
-
assert_nothing_raised {@klass.new ip}
|
395
399
|
assert_equal u128, @klass.new(ip).to_u128
|
396
400
|
end
|
397
401
|
end
|
@@ -418,5 +422,5 @@ class IPv6MappedTest < Test::Unit::TestCase
|
|
418
422
|
def test_mapped?
|
419
423
|
assert_equal true, @ip.mapped?
|
420
424
|
end
|
421
|
-
|
425
|
+
|
422
426
|
end # class IPv6MappedTest
|
@@ -0,0 +1,70 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
require 'ipaddress/mongoid'
|
3
|
+
|
4
|
+
class MongoidTest < Minitest::Test
|
5
|
+
|
6
|
+
def setup
|
7
|
+
@valid_host4 = "172.16.10.1"
|
8
|
+
@valid_host6 = "2001:0db8:0000:0000:0008:0800:200c:417a"
|
9
|
+
@valid_host6_compressed = IPAddress::IPv6.compress(@valid_host6)
|
10
|
+
@valid_network4 = "#{@valid_host4}/24"
|
11
|
+
@valid_network6 = "#{@valid_host6}/96"
|
12
|
+
@valid_network6_compressed = "#{@valid_host6_compressed}/96"
|
13
|
+
@host4 = IPAddress.parse(@valid_host4)
|
14
|
+
@host6 = IPAddress.parse(@valid_host6)
|
15
|
+
@network4 = IPAddress.parse(@valid_network4)
|
16
|
+
@network6 = IPAddress.parse(@valid_network6)
|
17
|
+
@invalid_values = [nil, "", "invalid"]
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_mongoize
|
21
|
+
# Instance method should be delegated to class method
|
22
|
+
assert_equal @host4.mongoize, IPAddress.mongoize(@host4)
|
23
|
+
assert_equal @network4.mongoize, IPAddress.mongoize(@network4)
|
24
|
+
|
25
|
+
# Hosts addresses should be stored without prefix
|
26
|
+
assert_equal @valid_host4, IPAddress.mongoize(@host4)
|
27
|
+
assert_equal @valid_host6, IPAddress.mongoize(@host6)
|
28
|
+
assert_equal @valid_host4, IPAddress.mongoize("#{@host4}/32")
|
29
|
+
assert_equal @valid_host6, IPAddress.mongoize("#{@host6}/128")
|
30
|
+
|
31
|
+
# Network addresses should be stored with their prefix
|
32
|
+
assert_equal @valid_network4, IPAddress.mongoize(@network4)
|
33
|
+
assert_equal @valid_network6, IPAddress.mongoize(@network6)
|
34
|
+
|
35
|
+
# IPv6 addresses should always be stored uncompressed
|
36
|
+
assert_equal @valid_host6, IPAddress.mongoize(@valid_host6_compressed)
|
37
|
+
assert_equal @valid_network6, IPAddress.mongoize(@valid_network6_compressed)
|
38
|
+
|
39
|
+
@invalid_values.each do |invalid_value|
|
40
|
+
# Invalid addresses should serialize to nil
|
41
|
+
assert_equal nil, IPAddress.mongoize(invalid_value)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def test_demongoize
|
46
|
+
# Valid stored values should be loaded with expected IPAddress type
|
47
|
+
assert_instance_of IPAddress::IPv4, IPAddress.demongoize(@valid_host4)
|
48
|
+
assert_instance_of IPAddress::IPv6, IPAddress.demongoize(@valid_host6)
|
49
|
+
assert_instance_of IPAddress::IPv4, IPAddress.demongoize(@valid_network4)
|
50
|
+
assert_instance_of IPAddress::IPv6, IPAddress.demongoize(@valid_network6)
|
51
|
+
|
52
|
+
# Valid stored values should be loaded as the original IPAddress object
|
53
|
+
assert_equal @host4, IPAddress.demongoize(@valid_host4)
|
54
|
+
assert_equal @host6, IPAddress.demongoize(@valid_host6)
|
55
|
+
assert_equal @network4, IPAddress.demongoize(@valid_network4)
|
56
|
+
assert_equal @network6, IPAddress.demongoize(@valid_network6)
|
57
|
+
|
58
|
+
@invalid_values.each do |invalid_value|
|
59
|
+
# Invalid stored value should be loaded as nil
|
60
|
+
assert_equal nil, IPAddress.demongoize(invalid_value)
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
def test_evolve
|
65
|
+
# evolve should delegate to mongoize
|
66
|
+
assert_equal IPAddress.mongoize(@valid_host4), IPAddress.evolve(@valid_host4)
|
67
|
+
assert_equal IPAddress.mongoize(@valid_network4), IPAddress.evolve(@valid_network4)
|
68
|
+
end
|
69
|
+
|
70
|
+
end
|