construqt-ipaddress 0.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,448 @@
1
+ require 'test_helper'
2
+
3
+ class IPv6Test < Test::Unit::TestCase
4
+
5
+ def setup
6
+ @klass = IPAddress::IPv6
7
+
8
+ @compress_addr = {
9
+ "2001:db8:0000:0000:0008:0800:200c:417a" => "2001:db8::8:800:200c:417a",
10
+ "2001:db8:0:0:8:800:200c:417a" => "2001:db8::8:800:200c:417a",
11
+ "ff01:0:0:0:0:0:0:101" => "ff01::101",
12
+ "0:0:0:0:0:0:0:1" => "::1",
13
+ "0:0:0:0:0:0:0:0" => "::"}
14
+
15
+ @valid_ipv6 = { # Kindly taken from the python IPy library
16
+ "FEDC:BA98:7654:3210:FEDC:BA98:7654:3210" => 338770000845734292534325025077361652240,
17
+ "1080:0000:0000:0000:0008:0800:200C:417A" => 21932261930451111902915077091070067066,
18
+ "1080:0:0:0:8:800:200C:417A" => 21932261930451111902915077091070067066,
19
+ "1080:0::8:800:200C:417A" => 21932261930451111902915077091070067066,
20
+ "1080::8:800:200C:417A" => 21932261930451111902915077091070067066,
21
+ "FF01:0:0:0:0:0:0:43" => 338958331222012082418099330867817087043,
22
+ "FF01:0:0::0:0:43" => 338958331222012082418099330867817087043,
23
+ "FF01::43" => 338958331222012082418099330867817087043,
24
+ "0:0:0:0:0:0:0:1" => 1,
25
+ "0:0:0::0:0:1" => 1,
26
+ "::1" => 1,
27
+ "0:0:0:0:0:0:0:0" => 0,
28
+ "0:0:0::0:0:0" => 0,
29
+ "::" => 0,
30
+ "::/0" => 0,
31
+ "1080:0:0:0:8:800:200C:417A" => 21932261930451111902915077091070067066,
32
+ "1080::8:800:200C:417A" => 21932261930451111902915077091070067066}
33
+
34
+ @invalid_ipv6 = [":1:2:3:4:5:6:7",
35
+ ":1:2:3:4:5:6:7",
36
+ "2002:516:2:200",
37
+ "dd"]
38
+
39
+ @networks = {
40
+ "2001:db8:1:1:1:1:1:1/32" => "2001:db8::/32",
41
+ "2001:db8:1:1:1:1:1::/32" => "2001:db8::/32",
42
+ "2001:db8::1/64" => "2001:db8::/64"}
43
+
44
+ @ip = @klass.new "2001:db8::8:800:200c:417a/64"
45
+ @network = @klass.new "2001:db8:8:800::/64"
46
+ @arr = [8193,3512,0,0,8,2048,8204,16762]
47
+ @hex = "20010db80000000000080800200c417a"
48
+ end
49
+
50
+ def test_attribute_address
51
+ addr = "2001:0db8:0000:0000:0008:0800:200c:417a"
52
+ assert_equal addr, @ip.address
53
+ end
54
+
55
+ def test_initialize
56
+ assert_instance_of @klass, @ip
57
+ @valid_ipv6.keys.each do |ip|
58
+ assert_nothing_raised {@klass.new ip}
59
+ end
60
+ @invalid_ipv6.each do |ip|
61
+ assert_raise(ArgumentError) {@klass.new ip}
62
+ end
63
+ assert_equal 64, @ip.prefix
64
+
65
+ assert_raise(ArgumentError) {
66
+ @klass.new "::10.1.1.1"
67
+ }
68
+ end
69
+
70
+ def test_attribute_groups
71
+ assert_equal @arr, @ip.groups
72
+ end
73
+
74
+ def test_method_hexs
75
+ arr = "2001:0db8:0000:0000:0008:0800:200c:417a".split(":")
76
+ assert_equal arr, @ip.hexs
77
+ end
78
+
79
+ def test_method_to_i
80
+ @valid_ipv6.each do |ip,num|
81
+ assert_equal num, @klass.new(ip).to_i
82
+ end
83
+ end
84
+
85
+ def test_method_bits
86
+ bits = "0010000000000001000011011011100000000000000000000" +
87
+ "000000000000000000000000000100000001000000000000010000" +
88
+ "0000011000100000101111010"
89
+ assert_equal bits, @ip.bits
90
+ end
91
+
92
+ def test_method_prefix=()
93
+ ip = @klass.new "2001:db8::8:800:200c:417a"
94
+ assert_equal 128, ip.prefix
95
+ ip.prefix = 64
96
+ assert_equal 64, ip.prefix
97
+ assert_equal "2001:db8::8:800:200c:417a/64", ip.to_string
98
+ end
99
+
100
+ def test_method_mapped?
101
+ assert_equal false, @ip.mapped?
102
+ ip6 = @klass.new "::ffff:1234:5678"
103
+ assert_equal true, ip6.mapped?
104
+ end
105
+
106
+ def test_method_literal
107
+ str = "2001-0db8-0000-0000-0008-0800-200c-417a.ipv6-literal.net"
108
+ assert_equal str, @ip.literal
109
+ end
110
+
111
+ def test_method_group
112
+ @arr.each_with_index do |val,index|
113
+ assert_equal val, @ip[index]
114
+ end
115
+ end
116
+
117
+ def test_method_ipv4?
118
+ assert_equal false, @ip.ipv4?
119
+ end
120
+
121
+ def test_method_ipv6?
122
+ assert_equal true, @ip.ipv6?
123
+ end
124
+
125
+ def test_method_network?
126
+ assert_equal true, @network.network?
127
+ assert_equal false, @ip.network?
128
+ end
129
+
130
+ def test_method_network_u128
131
+ assert_equal 42540766411282592856903984951653826560, @ip.network_u128
132
+ end
133
+
134
+ def test_method_broadcast_u128
135
+ assert_equal 42540766411282592875350729025363378175, @ip.broadcast_u128
136
+ end
137
+
138
+ def test_method_size
139
+ ip = @klass.new("2001:db8::8:800:200c:417a/64")
140
+ assert_equal 2**64, ip.size
141
+ ip = @klass.new("2001:db8::8:800:200c:417a/32")
142
+ assert_equal 2**96, ip.size
143
+ ip = @klass.new("2001:db8::8:800:200c:417a/120")
144
+ assert_equal 2**8, ip.size
145
+ ip = @klass.new("2001:db8::8:800:200c:417a/124")
146
+ assert_equal 2**4, ip.size
147
+ end
148
+
149
+ def test_method_include?
150
+ assert_equal true, @ip.include?(@ip)
151
+ # test prefix on same address
152
+ included = @klass.new "2001:db8::8:800:200c:417a/128"
153
+ not_included = @klass.new "2001:db8::8:800:200c:417a/46"
154
+ assert_equal true, @ip.include?(included)
155
+ assert_equal false, @ip.include?(not_included)
156
+ # test address on same prefix
157
+ included = @klass.new "2001:db8::8:800:200c:0/64"
158
+ not_included = @klass.new "2001:db8:1::8:800:200c:417a/64"
159
+ assert_equal true, @ip.include?(included)
160
+ assert_equal false, @ip.include?(not_included)
161
+ # general test
162
+ included = @klass.new "2001:db8::8:800:200c:1/128"
163
+ not_included = @klass.new "2001:db8:1::8:800:200c:417a/76"
164
+ assert_equal true, @ip.include?(included)
165
+ assert_equal false, @ip.include?(not_included)
166
+ end
167
+
168
+ def test_method_to_hex
169
+ assert_equal @hex, @ip.to_hex
170
+ end
171
+
172
+ def test_method_to_s
173
+ assert_equal "2001:db8::8:800:200c:417a", @ip.to_s
174
+ end
175
+
176
+ def test_method_to_string
177
+ assert_equal "2001:db8::8:800:200c:417a/64", @ip.to_string
178
+ end
179
+
180
+ def test_method_to_string_uncompressed
181
+ str = "2001:0db8:0000:0000:0008:0800:200c:417a/64"
182
+ assert_equal str, @ip.to_string_uncompressed
183
+ end
184
+
185
+ def test_method_data
186
+ if RUBY_VERSION < "2.0"
187
+ str = " \001\r\270\000\000\000\000\000\b\b\000 \fAz"
188
+ else
189
+ str = " \x01\r\xB8\x00\x00\x00\x00\x00\b\b\x00 \fAz".b
190
+ end
191
+ assert_equal str, @ip.data
192
+ end
193
+
194
+ def test_method_reverse
195
+ 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"
196
+ assert_equal str, @klass.new("3ffe:505:2::f").reverse
197
+ end
198
+
199
+ def test_method_rev_domains
200
+ assert_equal ["e.ip6.arpa", "f.ip6.arpa"], @klass.new("f000:f100::/3").rev_domains
201
+ assert_equal ["2.a.e.f.ip6.arpa", "3.a.e.f.ip6.arpa"], @klass.new("fea3:f120::/15").rev_domains
202
+ assert_equal ["2.2.1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.1.f.0.0.0.f.ip6.arpa",
203
+ "3.2.1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.1.f.0.0.0.f.ip6.arpa"],
204
+ @klass.new("f000:f100::1234/125").rev_domains
205
+ end
206
+
207
+ def test_method_compressed
208
+ assert_equal "1:1:1::1", @klass.new("1:1:1:0:0:0:0:1").compressed
209
+ assert_equal "1:0:1::1", @klass.new("1:0:1:0:0:0:0:1").compressed
210
+ assert_equal "1::1:1:1:2:3:1", @klass.new("1:0:1:1:1:2:3:1").compressed
211
+ assert_equal "1::1:1:0:2:3:1", @klass.new("1:0:1:1::2:3:1").compressed
212
+ assert_equal "1:0:0:1::1", @klass.new("1:0:0:1:0:0:0:1").compressed
213
+ assert_equal "1::1:0:0:1", @klass.new("1:0:0:0:1:0:0:1").compressed
214
+ assert_equal "1::1", @klass.new("1:0:0:0:0:0:0:1").compressed
215
+ #assert_equal "1:1::1:2:0:0:1", @klass.new("1:1:0:1:2::1").compressed
216
+ end
217
+
218
+ def test_method_unspecified?
219
+ assert_equal true, @klass.new("::").unspecified?
220
+ assert_equal false, @ip.unspecified?
221
+ end
222
+
223
+ def test_method_loopback?
224
+ assert_equal true, @klass.new("::1").loopback?
225
+ assert_equal false, @ip.loopback?
226
+ end
227
+
228
+ def test_method_network
229
+ @networks.each do |addr,net|
230
+ ip = @klass.new addr
231
+ assert_instance_of @klass, ip.network
232
+ assert_equal net, ip.network.to_string
233
+ end
234
+ end
235
+
236
+ def test_method_each
237
+ ip = @klass.new("2001:db8::4/125")
238
+ arr = []
239
+ ip.each {|i| arr << i.compressed}
240
+ expected = ["2001:db8::","2001:db8::1","2001:db8::2",
241
+ "2001:db8::3","2001:db8::4","2001:db8::5",
242
+ "2001:db8::6","2001:db8::7"]
243
+ assert_equal expected, arr
244
+ end
245
+
246
+ def test_method_each_net
247
+ ip = @klass.new("fd01:db8::4/3")
248
+ arr = []
249
+ ip.each_net {|i| arr << i.to_string}
250
+ expected = ["e000::/3","f000::/3"]
251
+ assert_equal expected, arr
252
+ end
253
+
254
+ def test_method_compare
255
+ ip1 = @klass.new("2001:db8:1::1/64")
256
+ ip2 = @klass.new("2001:db8:2::1/64")
257
+ ip3 = @klass.new("2001:db8:1::2/64")
258
+ ip4 = @klass.new("2001:db8:1::1/65")
259
+
260
+ # ip2 should be greater than ip1
261
+ assert_equal true, ip2 > ip1
262
+ assert_equal false, ip1 > ip2
263
+ assert_equal false, ip2 < ip1
264
+ # ip3 should be less than ip2
265
+ assert_equal true, ip2 > ip3
266
+ assert_equal false, ip2 < ip3
267
+ # ip1 should be less than ip3
268
+ assert_equal true, ip1 < ip3
269
+ assert_equal false, ip1 > ip3
270
+ assert_equal false, ip3 < ip1
271
+ # ip1 should be equal to itself
272
+ assert_equal true, ip1 == ip1
273
+ # ip4 should be greater than ip1
274
+ assert_equal true, ip1 < ip4
275
+ assert_equal false, ip1 > ip4
276
+ # test sorting
277
+ arr = ["2001:db8:1::1/64","2001:db8:1::1/65",
278
+ "2001:db8:1::2/64","2001:db8:2::1/64"]
279
+ assert_equal arr, [ip1,ip2,ip3,ip4].sort.map{|s| s.to_string}
280
+ end
281
+
282
+ def test_classmethod_expand
283
+ compressed = "2001:db8:0:cd30::"
284
+ expanded = "2001:0db8:0000:cd30:0000:0000:0000:0000"
285
+ assert_equal expanded, @klass.expand(compressed)
286
+ assert_not_equal expanded, @klass.expand("2001:0db8:0::cd3")
287
+ assert_not_equal expanded, @klass.expand("2001:0db8::cd30")
288
+ assert_not_equal expanded, @klass.expand("2001:0db8::cd3")
289
+ end
290
+
291
+ def test_classmethod_compress
292
+ compressed = "2001:db8:0:cd30::"
293
+ expanded = "2001:0db8:0000:cd30:0000:0000:0000:0000"
294
+ assert_equal compressed, @klass.compress(expanded)
295
+ assert_not_equal compressed, @klass.compress("2001:0db8:0::cd3")
296
+ assert_not_equal compressed, @klass.compress("2001:0db8::cd30")
297
+ assert_not_equal compressed, @klass.compress("2001:0db8::cd3")
298
+ end
299
+
300
+ def test_classmethod_parse_data
301
+ str = " \001\r\270\000\000\000\000\000\b\b\000 \fAz"
302
+ ip = @klass.parse_data str
303
+ assert_instance_of @klass, ip
304
+ assert_equal "2001:0db8:0000:0000:0008:0800:200c:417a", ip.address
305
+ assert_equal "2001:db8::8:800:200c:417a/128", ip.to_string
306
+ end
307
+
308
+ def test_classhmethod_parse_u128
309
+ @valid_ipv6.each do |ip,num|
310
+ assert_equal @klass.new(ip).to_s, @klass.parse_u128(num).to_s
311
+ end
312
+ end
313
+
314
+ def test_classmethod_parse_hex
315
+ assert_equal @ip.to_s, @klass.parse_hex(@hex,64).to_s
316
+ end
317
+
318
+ end # class IPv6Test
319
+
320
+ class IPv6UnspecifiedTest < Test::Unit::TestCase
321
+
322
+ def setup
323
+ @klass = IPAddress::IPv6::Unspecified
324
+ @ip = @klass.new
325
+ @s = "::"
326
+ @str = "::/128"
327
+ @string = "0000:0000:0000:0000:0000:0000:0000:0000/128"
328
+ @u128 = 0
329
+ @address = "::"
330
+ end
331
+
332
+ def test_initialize
333
+ assert_nothing_raised {@klass.new}
334
+ assert_instance_of @klass, @ip
335
+ end
336
+
337
+ def test_attributes
338
+ assert_equal @address, @ip.compressed
339
+ assert_equal 128, @ip.prefix
340
+ assert_equal true, @ip.unspecified?
341
+ assert_equal @s, @ip.to_s
342
+ assert_equal @str, @ip.to_string
343
+ assert_equal @string, @ip.to_string_uncompressed
344
+ assert_equal @u128, @ip.to_u128
345
+ end
346
+
347
+ def test_method_ipv6?
348
+ assert_equal true, @ip.ipv6?
349
+ end
350
+
351
+ end # class IPv6UnspecifiedTest
352
+
353
+
354
+ class IPv6LoopbackTest < Test::Unit::TestCase
355
+
356
+ def setup
357
+ @klass = IPAddress::IPv6::Loopback
358
+ @ip = @klass.new
359
+ @s = "::1"
360
+ @str = "::1/128"
361
+ @string = "0000:0000:0000:0000:0000:0000:0000:0001/128"
362
+ @u128 = 1
363
+ @address = "::1"
364
+ end
365
+
366
+ def test_initialize
367
+ assert_nothing_raised {@klass.new}
368
+ assert_instance_of @klass, @ip
369
+ end
370
+
371
+ def test_attributes
372
+ assert_equal @address, @ip.compressed
373
+ assert_equal 128, @ip.prefix
374
+ assert_equal true, @ip.loopback?
375
+ assert_equal @s, @ip.to_s
376
+ assert_equal @str, @ip.to_string
377
+ assert_equal @string, @ip.to_string_uncompressed
378
+ assert_equal @u128, @ip.to_u128
379
+ end
380
+
381
+ def test_method_ipv6?
382
+ assert_equal true, @ip.ipv6?
383
+ end
384
+
385
+ end # class IPv6LoopbackTest
386
+
387
+ class IPv6MappedTest < Test::Unit::TestCase
388
+
389
+ def setup
390
+ @klass = IPAddress::IPv6::Mapped
391
+ @ip = @klass.new("::172.16.10.1")
392
+ @s = "::ffff:172.16.10.1"
393
+ @str = "::ffff:172.16.10.1/128"
394
+ @string = "0000:0000:0000:0000:0000:ffff:ac10:0a01/128"
395
+ @u128 = 281473568475649
396
+ @address = "::ffff:ac10:a01"
397
+
398
+ @valid_mapped = {'::13.1.68.3' => 281470899930115,
399
+ '0:0:0:0:0:ffff:129.144.52.38' => 281472855454758,
400
+ '::ffff:129.144.52.38' => 281472855454758}
401
+
402
+ @valid_mapped_ipv6 = {'::0d01:4403' => 281470899930115,
403
+ '0:0:0:0:0:ffff:8190:3426' => 281472855454758,
404
+ '::ffff:8190:3426' => 281472855454758}
405
+
406
+ @valid_mapped_ipv6_conversion = {'::0d01:4403' => "13.1.68.3",
407
+ '0:0:0:0:0:ffff:8190:3426' => "129.144.52.38",
408
+ '::ffff:8190:3426' => "129.144.52.38"}
409
+
410
+ end
411
+
412
+ def test_initialize
413
+ assert_nothing_raised {@klass.new("::172.16.10.1")}
414
+ assert_instance_of @klass, @ip
415
+ @valid_mapped.each do |ip, u128|
416
+ assert_nothing_raised {@klass.new ip}
417
+ assert_equal u128, @klass.new(ip).to_u128
418
+ end
419
+ @valid_mapped_ipv6.each do |ip, u128|
420
+ assert_nothing_raised {@klass.new ip}
421
+ assert_equal u128, @klass.new(ip).to_u128
422
+ end
423
+ end
424
+
425
+ def test_mapped_from_ipv6_conversion
426
+ @valid_mapped_ipv6_conversion.each do |ip6,ip4|
427
+ assert_equal ip4, @klass.new(ip6).ipv4.to_s
428
+ end
429
+ end
430
+
431
+ def test_attributes
432
+ assert_equal @address, @ip.compressed
433
+ assert_equal 128, @ip.prefix
434
+ assert_equal @s, @ip.to_s
435
+ assert_equal @str, @ip.to_string
436
+ assert_equal @string, @ip.to_string_uncompressed
437
+ assert_equal @u128, @ip.to_u128
438
+ end
439
+
440
+ def test_method_ipv6?
441
+ assert_equal true, @ip.ipv6?
442
+ end
443
+
444
+ def test_mapped?
445
+ assert_equal true, @ip.mapped?
446
+ end
447
+
448
+ end # class IPv6MappedTest
@@ -0,0 +1,159 @@
1
+ require 'test_helper'
2
+
3
+ class Prefix32Test < Test::Unit::TestCase
4
+
5
+ def setup
6
+ @netmask0 = "0.0.0.0"
7
+ @netmask8 = "255.0.0.0"
8
+ @netmask16 = "255.255.0.0"
9
+ @netmask24 = "255.255.255.0"
10
+ @netmask30 = "255.255.255.252"
11
+ @netmasks = [@netmask0,@netmask8,@netmask16,@netmask24,@netmask30]
12
+
13
+ @prefix_hash = {
14
+ "0.0.0.0" => 0,
15
+ "255.0.0.0" => 8,
16
+ "255.255.0.0" => 16,
17
+ "255.255.255.0" => 24,
18
+ "255.255.255.252" => 30}
19
+
20
+ @octets_hash = {
21
+ [0,0,0,0] => 0,
22
+ [255,0,0,0] => 8,
23
+ [255,255,0,0] => 16,
24
+ [255,255,255,0] => 24,
25
+ [255,255,255,252] => 30}
26
+
27
+ @u32_hash = {
28
+ 0 => 0,
29
+ 8 => 4278190080,
30
+ 16 => 4294901760,
31
+ 24 => 4294967040,
32
+ 30 => 4294967292}
33
+
34
+ @klass = IPAddress::Prefix32
35
+ end
36
+
37
+ def test_attributes
38
+ @prefix_hash.values.each do |num|
39
+ prefix = @klass.new(num)
40
+ assert_equal num, prefix.prefix
41
+ end
42
+ end
43
+
44
+ def test_parse_netmask
45
+ @prefix_hash.each do |netmask, num|
46
+ prefix = @klass.parse_netmask(netmask)
47
+ assert_equal num, prefix.prefix
48
+ assert_instance_of @klass, prefix
49
+ end
50
+ end
51
+
52
+ def test_method_to_ip
53
+ @prefix_hash.each do |netmask, num|
54
+ prefix = @klass.new(num)
55
+ assert_equal netmask, prefix.to_ip
56
+ end
57
+ end
58
+
59
+ def test_method_to_s
60
+ prefix = @klass.new(8)
61
+ assert_equal "8", prefix.to_s
62
+ end
63
+
64
+ def test_method_bits
65
+ prefix = @klass.new(16)
66
+ str = "1"*16 + "0"*16
67
+ assert_equal str, prefix.bits
68
+ end
69
+
70
+ def test_method_to_u32
71
+ @u32_hash.each do |num,u32|
72
+ assert_equal u32, @klass.new(num).to_u32
73
+ end
74
+ end
75
+
76
+ def test_method_plus
77
+ p1 = @klass.new 8
78
+ p2 = @klass.new 10
79
+ assert_equal 18, p1+p2
80
+ assert_equal 12, p1+4
81
+ end
82
+
83
+ def test_method_minus
84
+ p1 = @klass.new 8
85
+ p2 = @klass.new 24
86
+ assert_equal 16, p1-p2
87
+ assert_equal 16, p2-p1
88
+ assert_equal 20, p2-4
89
+ end
90
+
91
+ def test_initialize
92
+ assert_raise (ArgumentError) do
93
+ @klass.new 33
94
+ end
95
+ assert_nothing_raised do
96
+ @klass.new 8
97
+ end
98
+ assert_instance_of @klass, @klass.new(8)
99
+ end
100
+
101
+ def test_method_octets
102
+ @octets_hash.each do |arr,pref|
103
+ prefix = @klass.new(pref)
104
+ assert_equal prefix.octets, arr
105
+ end
106
+ end
107
+
108
+ def test_method_brackets
109
+ @octets_hash.each do |arr,pref|
110
+ prefix = @klass.new(pref)
111
+ arr.each_with_index do |oct,index|
112
+ assert_equal prefix[index], oct
113
+ end
114
+ end
115
+ end
116
+
117
+ def test_method_hostmask
118
+ prefix = @klass.new(8)
119
+ assert_equal "0.255.255.255", prefix.hostmask
120
+ end
121
+
122
+ end # class Prefix32Test
123
+
124
+
125
+ class Prefix128Test < Test::Unit::TestCase
126
+
127
+ def setup
128
+ @u128_hash = {
129
+ 32 => 340282366841710300949110269838224261120,
130
+ 64 => 340282366920938463444927863358058659840,
131
+ 96 => 340282366920938463463374607427473244160,
132
+ 126 => 340282366920938463463374607431768211452}
133
+
134
+ @klass = IPAddress::Prefix128
135
+ end
136
+
137
+ def test_initialize
138
+ assert_raise (ArgumentError) do
139
+ @klass.new 129
140
+ end
141
+ assert_nothing_raised do
142
+ @klass.new 64
143
+ end
144
+ assert_instance_of @klass, @klass.new(64)
145
+ end
146
+
147
+ def test_method_bits
148
+ prefix = @klass.new(64)
149
+ str = "1"*64 + "0"*64
150
+ assert_equal str, prefix.bits
151
+ end
152
+
153
+ def test_method_to_u32
154
+ @u128_hash.each do |num,u128|
155
+ assert_equal u128, @klass.new(num).to_u128
156
+ end
157
+ end
158
+
159
+ end # class Prefix128Test