ipv4_address 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
data/.document ADDED
@@ -0,0 +1,5 @@
1
+ README.rdoc
2
+ lib/**/*.rb
3
+ bin/*
4
+ features/**/*.feature
5
+ LICENSE
data/.gitignore ADDED
@@ -0,0 +1,5 @@
1
+ *.sw?
2
+ .DS_Store
3
+ coverage
4
+ rdoc
5
+ pkg
data/LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2009 Marcin Nowicki
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.rdoc ADDED
@@ -0,0 +1,18 @@
1
+ = ipv4_address
2
+
3
+ Description goes here.
4
+
5
+ == Note on Patches/Pull Requests
6
+
7
+ * Fork the project.
8
+ * Make your feature addition or bug fix.
9
+ * Add tests for it. This is important so I don't break it in a
10
+ future version unintentionally.
11
+ * Commit, do not mess with rakefile, version, or history.
12
+ (if you want to have your own version, that is fine but
13
+ bump version in a commit by itself I can ignore when I pull)
14
+ * Send me a pull request. Bonus points for topic branches.
15
+
16
+ == Copyright
17
+
18
+ Copyright (c) 2009 Marcin Nowicki. See LICENSE for details.
data/Rakefile ADDED
@@ -0,0 +1,48 @@
1
+ require 'rubygems'
2
+ require 'rake'
3
+
4
+ begin
5
+ require 'jeweler'
6
+ Jeweler::Tasks.new do |gem|
7
+ gem.name = "ipv4_address"
8
+ gem.summary = %Q{Recognition of ipv4 addresses}
9
+ gem.description = %Q{Recognize ipv4 addresses in many ways}
10
+ gem.email = "pr0d1r2@gmail.com"
11
+ gem.homepage = "http://github.com/Pr0d1r2/ipv4_address"
12
+ gem.authors = ["Marcin Nowicki"]
13
+ gem.add_development_dependency "rspec"
14
+ # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
15
+ end
16
+ rescue LoadError
17
+ puts "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler"
18
+ end
19
+
20
+ require 'spec/rake/spectask'
21
+ Spec::Rake::SpecTask.new(:spec) do |spec|
22
+ spec.libs << 'lib' << 'spec'
23
+ spec.spec_files = FileList['spec/**/*_spec.rb']
24
+ end
25
+
26
+ Spec::Rake::SpecTask.new(:rcov) do |spec|
27
+ spec.libs << 'lib' << 'spec'
28
+ spec.pattern = 'spec/**/*_spec.rb'
29
+ spec.rcov = true
30
+ end
31
+
32
+ task :spec => :check_dependencies
33
+
34
+ task :default => :spec
35
+
36
+ require 'rake/rdoctask'
37
+ Rake::RDocTask.new do |rdoc|
38
+ if File.exist?('VERSION')
39
+ version = File.read('VERSION')
40
+ else
41
+ version = ""
42
+ end
43
+
44
+ rdoc.rdoc_dir = 'rdoc'
45
+ rdoc.title = "ipv4_address #{version}"
46
+ rdoc.rdoc_files.include('README*')
47
+ rdoc.rdoc_files.include('lib/**/*.rb')
48
+ end
@@ -0,0 +1,144 @@
1
+ require 'ipaddr'
2
+
3
+ class IPv4Address < IPAddr
4
+
5
+ # by IANA
6
+ RESERVED = ['128.0.0.0/16', '191.255.0.0/16', '192.0.0.0/24', '223.255.255.0/24']
7
+ PRIVATE = ['10.0.0.0/8', '172.16.0.0/12', '192.168.0.0/16']
8
+ LOOPBACK = ['127.0.0.0/8']
9
+ LINK_LOCAL = ['169.254.0.0/16']
10
+ DOCUMENTATION = ['192.0.2.0/24']
11
+ IPV6_RELAY = ['192.88.99.0/24']
12
+ BENCHMARK = ['198.18.0.0/15']
13
+ MULTICAST = ['224.0.0.0/4']
14
+
15
+ def reserved?
16
+ exist_in_pool?(RESERVED)
17
+ end
18
+
19
+ def self.reserved?(addr)
20
+ begin
21
+ new(addr).reserved?
22
+ rescue
23
+ false
24
+ end
25
+ end
26
+
27
+ def private?
28
+ exist_in_pool?(PRIVATE)
29
+ end
30
+
31
+ def self.private?(addr)
32
+ begin
33
+ new(addr).private?
34
+ rescue
35
+ false
36
+ end
37
+ end
38
+
39
+ def loopback?
40
+ exist_in_pool?(LOOPBACK)
41
+ end
42
+
43
+ def self.loopback?(addr)
44
+ begin
45
+ new(addr).loopback?
46
+ rescue
47
+ false
48
+ end
49
+ end
50
+
51
+ def link_local?
52
+ exist_in_pool?(LINK_LOCAL)
53
+ end
54
+
55
+ def self.link_local?(addr)
56
+ begin
57
+ new(addr).link_local?
58
+ rescue
59
+ false
60
+ end
61
+ end
62
+
63
+ def documentation?
64
+ exist_in_pool?(DOCUMENTATION)
65
+ end
66
+
67
+ def self.documentation?(addr)
68
+ begin
69
+ new(addr).documentation?
70
+ rescue
71
+ false
72
+ end
73
+ end
74
+
75
+ def ipv6_relay?
76
+ exist_in_pool?(IPV6_RELAY)
77
+ end
78
+
79
+ def self.ipv6_relay?(addr)
80
+ begin
81
+ new(addr).ipv6_relay?
82
+ rescue
83
+ false
84
+ end
85
+ end
86
+
87
+ def benchmark?
88
+ exist_in_pool?(BENCHMARK)
89
+ end
90
+
91
+ def self.benchmark?(addr)
92
+ begin
93
+ new(addr).benchmark?
94
+ rescue
95
+ false
96
+ end
97
+ end
98
+
99
+ def multicast?
100
+ exist_in_pool?(MULTICAST)
101
+ end
102
+
103
+ def self.multicast?(addr)
104
+ begin
105
+ new(addr).multicast?
106
+ rescue
107
+ false
108
+ end
109
+ end
110
+
111
+ def internet_routable?
112
+ !reserved? &&
113
+ !private? &&
114
+ !loopback? &&
115
+ !link_local? &&
116
+ !documentation? &&
117
+ !ipv6_relay? &&
118
+ !benchmark? &&
119
+ !multicast?
120
+ end
121
+
122
+ def self.internet_routable?(addr)
123
+ is?(to_s) && new(addr).internet_routable?
124
+ end
125
+
126
+ def self.is?(addr)
127
+ begin
128
+ IPAddr.new(addr)
129
+ true
130
+ rescue
131
+ false
132
+ end
133
+ end
134
+
135
+ private
136
+
137
+ def exist_in_pool?(collection)
138
+ collection.collect do |address_scope|
139
+ return true if IPAddr.new(address_scope).include?(self)
140
+ end
141
+ false
142
+ end
143
+
144
+ end
@@ -0,0 +1,504 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
+
3
+ describe IPv4Address do
4
+
5
+ describe 'self.reserved?' do
6
+ it 'should be true when is in reserved pool' do
7
+ %w(
8
+ 128.0.0.1
9
+ 191.255.0.1
10
+ 192.0.0.1
11
+ 223.255.255.1
12
+ ).each do |address|
13
+ IPv4Address.reserved?(address).should be_true
14
+ end
15
+ end
16
+
17
+ it 'should be false when is not in reserved pool' do
18
+ %w(
19
+ 74.125.127.83
20
+ 0.0.0.0
21
+ 10.0.0.1
22
+ 14.0.0.1
23
+ 127.0.0.1
24
+ 169.254.0.1
25
+ 172.16.0.1
26
+ 192.0.2.1
27
+ 192.88.99.1
28
+ 192.168.0.1
29
+ 198.18.0.1
30
+ 224.0.0.1
31
+ 240.0.0.1
32
+ 255.255.255.255
33
+ 256.0.0.0
34
+ 255.256.0.0
35
+ 255.255.256.0
36
+ 255.255.255.256
37
+ 999.999.999.999
38
+ string
39
+ ).each do |address|
40
+ IPv4Address.reserved?(address).should be_false
41
+ end
42
+ end
43
+ end
44
+
45
+ describe 'self.private?' do
46
+ it 'should be true when address is in private pool' do
47
+ %w(
48
+ 10.0.0.1
49
+ 172.16.0.1
50
+ 192.168.0.1
51
+ ).each do |address|
52
+ IPv4Address.private?(address).should be_true
53
+ end
54
+ end
55
+
56
+ it 'should be false when is not in private pool' do
57
+ %w(
58
+ 74.125.127.83
59
+ 0.0.0.0
60
+ 14.0.0.1
61
+ 127.0.0.1
62
+ 128.0.0.1
63
+ 169.254.0.1
64
+ 191.255.0.1
65
+ 192.0.0.1
66
+ 192.0.2.1
67
+ 192.88.99.1
68
+ 198.18.0.1
69
+ 223.255.255.1
70
+ 224.0.0.1
71
+ 240.0.0.1
72
+ 255.255.255.255
73
+ 256.0.0.0
74
+ 255.256.0.0
75
+ 255.255.256.0
76
+ 255.255.255.256
77
+ 999.999.999.999
78
+ string
79
+ ).each do |address|
80
+ IPv4Address.private?(address).should be_false
81
+ end
82
+ end
83
+ end
84
+
85
+ describe 'self.loopback?' do
86
+ it 'should be true when is not in loopback pool' do
87
+ %w(
88
+ 127.0.0.1
89
+ ).each do |address|
90
+ IPv4Address.loopback?(address).should be_true
91
+ end
92
+ end
93
+
94
+ it 'should be false when is not in loopback pool' do
95
+ %w(
96
+ 74.125.127.83
97
+ 0.0.0.0
98
+ 10.0.0.1
99
+ 14.0.0.1
100
+ 128.0.0.1
101
+ 169.254.0.1
102
+ 172.16.0.1
103
+ 191.255.0.1
104
+ 192.0.0.1
105
+ 192.0.2.1
106
+ 192.88.99.1
107
+ 192.168.0.1
108
+ 198.18.0.1
109
+ 223.255.255.1
110
+ 224.0.0.1
111
+ 240.0.0.1
112
+ 255.255.255.255
113
+ 256.0.0.0
114
+ 255.256.0.0
115
+ 255.255.256.0
116
+ 255.255.255.256
117
+ 999.999.999.999
118
+ string
119
+ ).each do |address|
120
+ IPv4Address.loopback?(address).should be_false
121
+ end
122
+ end
123
+ end
124
+
125
+ describe 'self.link_local?' do
126
+ it 'should be true when is not in link_local pool' do
127
+ %w(
128
+ 169.254.0.1
129
+ ).each do |address|
130
+ IPv4Address.link_local?(address).should be_true
131
+ end
132
+ end
133
+
134
+ it 'should be false when is not in link_local pool' do
135
+ %w(
136
+ 74.125.127.83
137
+ 0.0.0.0
138
+ 10.0.0.1
139
+ 14.0.0.1
140
+ 127.0.0.1
141
+ 128.0.0.1
142
+ 172.16.0.1
143
+ 191.255.0.1
144
+ 192.0.0.1
145
+ 192.0.2.1
146
+ 192.88.99.1
147
+ 192.168.0.1
148
+ 198.18.0.1
149
+ 223.255.255.1
150
+ 224.0.0.1
151
+ 240.0.0.1
152
+ 255.255.255.255
153
+ 256.0.0.0
154
+ 255.256.0.0
155
+ 255.255.256.0
156
+ 255.255.255.256
157
+ 999.999.999.999
158
+ string
159
+ ).each do |address|
160
+ IPv4Address.link_local?(address).should be_false
161
+ end
162
+ end
163
+ end
164
+
165
+
166
+ describe 'self.documentation?' do
167
+ it 'should be true when is not in documentation pool' do
168
+ %w(
169
+ 192.0.2.1
170
+ ).each do |address|
171
+ IPv4Address.documentation?(address).should be_true
172
+ end
173
+ end
174
+
175
+ it 'should be false when is not in documentation pool' do
176
+ %w(
177
+ 74.125.127.83
178
+ 0.0.0.0
179
+ 10.0.0.1
180
+ 14.0.0.1
181
+ 127.0.0.1
182
+ 128.0.0.1
183
+ 169.254.0.1
184
+ 172.16.0.1
185
+ 191.255.0.1
186
+ 192.0.0.1
187
+ 192.88.99.1
188
+ 192.168.0.1
189
+ 198.18.0.1
190
+ 223.255.255.1
191
+ 224.0.0.1
192
+ 240.0.0.1
193
+ 255.255.255.255
194
+ 256.0.0.0
195
+ 255.256.0.0
196
+ 255.255.256.0
197
+ 255.255.255.256
198
+ 999.999.999.999
199
+ string
200
+ ).each do |address|
201
+ IPv4Address.documentation?(address).should be_false
202
+ end
203
+ end
204
+ end
205
+
206
+ describe 'self.ipv6_relay?' do
207
+ it 'should be true when is not in ipv6_relay pool' do
208
+ %w(
209
+ 192.88.99.1
210
+ ).each do |address|
211
+ IPv4Address.ipv6_relay?(address).should be_true
212
+ end
213
+ end
214
+
215
+ it 'should be false when is not in ipv6_relay pool' do
216
+ %w(
217
+ 74.125.127.83
218
+ 0.0.0.0
219
+ 10.0.0.1
220
+ 14.0.0.1
221
+ 127.0.0.1
222
+ 128.0.0.1
223
+ 169.254.0.1
224
+ 172.16.0.1
225
+ 191.255.0.1
226
+ 192.0.0.1
227
+ 192.0.2.1
228
+ 192.168.0.1
229
+ 198.18.0.1
230
+ 223.255.255.1
231
+ 224.0.0.1
232
+ 240.0.0.1
233
+ 255.255.255.255
234
+ 256.0.0.0
235
+ 255.256.0.0
236
+ 255.255.256.0
237
+ 255.255.255.256
238
+ 999.999.999.999
239
+ string
240
+ ).each do |address|
241
+ IPv4Address.ipv6_relay?(address).should be_false
242
+ end
243
+ end
244
+ end
245
+
246
+ describe 'self.benchmark?' do
247
+ it 'should be true when is not in benchmark pool' do
248
+ %w(
249
+ 198.18.0.1
250
+ ).each do |address|
251
+ IPv4Address.benchmark?(address).should be_true
252
+ end
253
+ end
254
+
255
+ it 'should be false when is not in benchmark pool' do
256
+ %w(
257
+ 74.125.127.83
258
+ 0.0.0.0
259
+ 10.0.0.1
260
+ 14.0.0.1
261
+ 127.0.0.1
262
+ 128.0.0.1
263
+ 169.254.0.1
264
+ 172.16.0.1
265
+ 191.255.0.1
266
+ 192.0.0.1
267
+ 192.0.2.1
268
+ 192.88.99.1
269
+ 192.168.0.1
270
+ 223.255.255.1
271
+ 224.0.0.1
272
+ 240.0.0.1
273
+ 255.255.255.255
274
+ 256.0.0.0
275
+ 255.256.0.0
276
+ 255.255.256.0
277
+ 255.255.255.256
278
+ 999.999.999.999
279
+ string
280
+ ).each do |address|
281
+ IPv4Address.benchmark?(address).should be_false
282
+ end
283
+ end
284
+ end
285
+
286
+ describe 'self.multicast?' do
287
+ it 'should be true when is not in multicast pool' do
288
+ %w(
289
+ 224.0.0.1
290
+ ).each do |address|
291
+ IPv4Address.multicast?(address).should be_true
292
+ end
293
+ end
294
+
295
+ it 'should be false when is not in multicast pool' do
296
+ %w(
297
+ 74.125.127.83
298
+ 0.0.0.0
299
+ 10.0.0.1
300
+ 14.0.0.1
301
+ 127.0.0.1
302
+ 128.0.0.1
303
+ 169.254.0.1
304
+ 172.16.0.1
305
+ 191.255.0.1
306
+ 192.0.0.1
307
+ 192.0.2.1
308
+ 192.88.99.1
309
+ 192.168.0.1
310
+ 198.18.0.1
311
+ 223.255.255.1
312
+ 240.0.0.1
313
+ 255.255.255.255
314
+ 256.0.0.0
315
+ 255.256.0.0
316
+ 255.255.256.0
317
+ 255.255.255.256
318
+ 999.999.999.999
319
+ string
320
+ ).each do |address|
321
+ IPv4Address.multicast?(address).should be_false
322
+ end
323
+ end
324
+ end
325
+
326
+ describe 'self.is?' do
327
+ it 'should be true when is an ipv4 address' do
328
+ %w(
329
+ 74.125.127.83
330
+ 0.0.0.0
331
+ 10.0.0.1
332
+ 14.0.0.1
333
+ 127.0.0.1
334
+ 128.0.0.1
335
+ 169.254.0.1
336
+ 172.16.0.1
337
+ 191.255.0.1
338
+ 192.0.0.1
339
+ 192.0.2.1
340
+ 192.88.99.1
341
+ 192.168.0.1
342
+ 198.18.0.1
343
+ 223.255.255.1
344
+ 224.0.0.1
345
+ 240.0.0.1
346
+ 255.255.255.255
347
+ ).each do |address|
348
+ IPv4Address.is?(address).should be_true
349
+ end
350
+ end
351
+
352
+ it 'should be false when is not an ipv4 address' do
353
+ %w(
354
+ 256.0.0.0
355
+ 255.256.0.0
356
+ 255.255.256.0
357
+ 255.255.255.256
358
+ 999.999.999.999
359
+ string
360
+ ).each do |address|
361
+ IPv4Address.is?(address).should be_false
362
+ end
363
+ end
364
+ end
365
+
366
+ describe 'self.internet_routable?' do
367
+ before(:each) do
368
+ @ipv4_address = mock(IPv4Address, :internet_routable? => false)
369
+ end
370
+
371
+ it 'should be true when given string is an ip address and it is internet routable' do
372
+ IPv4Address.should_receive(:is?).with('IPv4Address').and_return(true)
373
+ @ipv4_address.should_receive(:internet_routable?).and_return(true)
374
+ IPv4Address.should_receive(:new).with(:addr).and_return(@ipv4_address)
375
+ IPv4Address.internet_routable?(:addr).should be_true
376
+ end
377
+
378
+ it 'should be false when string is an ip address but it is not internet routable' do
379
+ IPv4Address.should_receive(:is?).with('IPv4Address').and_return(true)
380
+ @ipv4_address.should_receive(:internet_routable?).and_return(false)
381
+ IPv4Address.should_receive(:new).with(:addr).and_return(@ipv4_address)
382
+ IPv4Address.internet_routable?(:addr).should be_false
383
+ end
384
+
385
+ it 'should be false when' do
386
+ IPv4Address.should_receive(:is?).with('IPv4Address').and_return(false)
387
+ IPv4Address.internet_routable?(:addr).should be_false
388
+ end
389
+ end
390
+
391
+ describe 'instance method' do
392
+ before(:each) do
393
+ @ipv4_address = IPv4Address.new
394
+ end
395
+
396
+ describe 'internet_routable?' do
397
+ before(:each) do
398
+ @ipv4_address.stub!(
399
+ :reserved? => false,
400
+ :private? => false,
401
+ :loopback? => false,
402
+ :link_local? => false,
403
+ :documentation? => false,
404
+ :ipv6_relay? => false,
405
+ :benchmark? => false,
406
+ :multicast? => false
407
+ )
408
+ end
409
+
410
+ it 'should be true when address is not in any pools' do
411
+ @ipv4_address.should_receive(:reserved?).and_return(false)
412
+ @ipv4_address.should_receive(:private?).and_return(false)
413
+ @ipv4_address.should_receive(:loopback?).and_return(false)
414
+ @ipv4_address.should_receive(:link_local?).and_return(false)
415
+ @ipv4_address.should_receive(:documentation?).and_return(false)
416
+ @ipv4_address.should_receive(:ipv6_relay?).and_return(false)
417
+ @ipv4_address.should_receive(:benchmark?).and_return(false)
418
+ @ipv4_address.should_receive(:multicast?).and_return(false)
419
+ @ipv4_address.internet_routable?.should be_true
420
+ end
421
+
422
+ it 'should be false when address is in reserved pool' do
423
+ @ipv4_address.should_receive(:reserved?).and_return(true)
424
+ @ipv4_address.internet_routable?.should be_false
425
+ end
426
+
427
+ it 'should be false when address is in pool' do
428
+ @ipv4_address.should_receive(:private?).and_return(true)
429
+ @ipv4_address.internet_routable?.should be_false
430
+ end
431
+
432
+ it 'should be false when address is in loopback pool' do
433
+ @ipv4_address.should_receive(:loopback?).and_return(true)
434
+ @ipv4_address.internet_routable?.should be_false
435
+ end
436
+
437
+ it 'should be false when address is in link_local pool' do
438
+ @ipv4_address.should_receive(:link_local?).and_return(true)
439
+ @ipv4_address.internet_routable?.should be_false
440
+ end
441
+
442
+ it 'should be false when address is in documentation pool' do
443
+ @ipv4_address.should_receive(:documentation?).and_return(true)
444
+ @ipv4_address.internet_routable?.should be_false
445
+ end
446
+
447
+ it 'should be false when address is in ipv6_relay pool' do
448
+ @ipv4_address.should_receive(:ipv6_relay?).and_return(true)
449
+ @ipv4_address.internet_routable?.should be_false
450
+ end
451
+
452
+ it 'should be false when address is in benchmark pool' do
453
+ @ipv4_address.should_receive(:benchmark?).and_return(true)
454
+ @ipv4_address.internet_routable?.should be_false
455
+ end
456
+
457
+ it 'should be false when address is in multicast pool' do
458
+ @ipv4_address.should_receive(:multicast?).and_return(true)
459
+ @ipv4_address.internet_routable?.should be_false
460
+ end
461
+ end
462
+
463
+ it 'reserved? should check_existance in proper pool' do
464
+ @ipv4_address.should_receive(:exist_in_pool?).with(IPv4Address::RESERVED)
465
+ @ipv4_address.reserved?
466
+ end
467
+
468
+ it 'private? should check_existance in proper pool' do
469
+ @ipv4_address.should_receive(:exist_in_pool?).with(IPv4Address::PRIVATE)
470
+ @ipv4_address.private?
471
+ end
472
+
473
+ it 'loopback? should check_existance in proper pool' do
474
+ @ipv4_address.should_receive(:exist_in_pool?).with(IPv4Address::LOOPBACK)
475
+ @ipv4_address.loopback?
476
+ end
477
+
478
+ it 'link_local? should check_existance in proper pool' do
479
+ @ipv4_address.should_receive(:exist_in_pool?).with(IPv4Address::LINK_LOCAL)
480
+ @ipv4_address.link_local?
481
+ end
482
+
483
+ it 'documentation? should check_existance in proper pool' do
484
+ @ipv4_address.should_receive(:exist_in_pool?).with(IPv4Address::DOCUMENTATION)
485
+ @ipv4_address.documentation?
486
+ end
487
+
488
+ it 'ipv6_relay? should check_existance in proper pool' do
489
+ @ipv4_address.should_receive(:exist_in_pool?).with(IPv4Address::IPV6_RELAY)
490
+ @ipv4_address.ipv6_relay?
491
+ end
492
+
493
+ it 'benchmark? should check_existance in proper pool' do
494
+ @ipv4_address.should_receive(:exist_in_pool?).with(IPv4Address::BENCHMARK)
495
+ @ipv4_address.benchmark?
496
+ end
497
+
498
+ it 'multicast? should check_existance in proper pool' do
499
+ @ipv4_address.should_receive(:exist_in_pool?).with(IPv4Address::MULTICAST)
500
+ @ipv4_address.multicast?
501
+ end
502
+ end
503
+
504
+ end
@@ -0,0 +1,9 @@
1
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
2
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
3
+ require 'ipv4_address'
4
+ require 'spec'
5
+ require 'spec/autorun'
6
+
7
+ Spec::Runner.configure do |config|
8
+
9
+ end
metadata ADDED
@@ -0,0 +1,73 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ipv4_address
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Marcin Nowicki
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-10-05 00:00:00 +02:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: rspec
17
+ type: :development
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: "0"
24
+ version:
25
+ description: Recognize ipv4 addresses in many ways
26
+ email: pr0d1r2@gmail.com
27
+ executables: []
28
+
29
+ extensions: []
30
+
31
+ extra_rdoc_files:
32
+ - LICENSE
33
+ - README.rdoc
34
+ files:
35
+ - .document
36
+ - .gitignore
37
+ - LICENSE
38
+ - README.rdoc
39
+ - Rakefile
40
+ - lib/ipv4_address.rb
41
+ - spec/ipv4_address_spec.rb
42
+ - spec/spec_helper.rb
43
+ has_rdoc: true
44
+ homepage: http://github.com/Pr0d1r2/ipv4_address
45
+ licenses: []
46
+
47
+ post_install_message:
48
+ rdoc_options:
49
+ - --charset=UTF-8
50
+ require_paths:
51
+ - lib
52
+ required_ruby_version: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - ">="
55
+ - !ruby/object:Gem::Version
56
+ version: "0"
57
+ version:
58
+ required_rubygems_version: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ version: "0"
63
+ version:
64
+ requirements: []
65
+
66
+ rubyforge_project:
67
+ rubygems_version: 1.3.5
68
+ signing_key:
69
+ specification_version: 2
70
+ summary: Recognition of ipv4 addresses
71
+ test_files:
72
+ - spec/ipv4_address_spec.rb
73
+ - spec/spec_helper.rb