net-dns2 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.
Files changed (53) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +8 -0
  3. data/.travis.yml +20 -0
  4. data/CHANGELOG.md +105 -0
  5. data/Gemfile +4 -0
  6. data/README.md +155 -0
  7. data/Rakefile +94 -0
  8. data/THANKS.rdoc +24 -0
  9. data/demo/check_soa.rb +115 -0
  10. data/demo/threads.rb +22 -0
  11. data/lib/net/dns.rb +112 -0
  12. data/lib/net/dns/core_ext.rb +52 -0
  13. data/lib/net/dns/header.rb +713 -0
  14. data/lib/net/dns/names.rb +118 -0
  15. data/lib/net/dns/packet.rb +563 -0
  16. data/lib/net/dns/question.rb +188 -0
  17. data/lib/net/dns/resolver.rb +1313 -0
  18. data/lib/net/dns/resolver/socks.rb +154 -0
  19. data/lib/net/dns/resolver/timeouts.rb +75 -0
  20. data/lib/net/dns/rr.rb +366 -0
  21. data/lib/net/dns/rr/a.rb +124 -0
  22. data/lib/net/dns/rr/aaaa.rb +103 -0
  23. data/lib/net/dns/rr/classes.rb +133 -0
  24. data/lib/net/dns/rr/cname.rb +82 -0
  25. data/lib/net/dns/rr/hinfo.rb +108 -0
  26. data/lib/net/dns/rr/mr.rb +79 -0
  27. data/lib/net/dns/rr/mx.rb +92 -0
  28. data/lib/net/dns/rr/ns.rb +78 -0
  29. data/lib/net/dns/rr/null.rb +53 -0
  30. data/lib/net/dns/rr/ptr.rb +83 -0
  31. data/lib/net/dns/rr/soa.rb +78 -0
  32. data/lib/net/dns/rr/srv.rb +45 -0
  33. data/lib/net/dns/rr/txt.rb +61 -0
  34. data/lib/net/dns/rr/types.rb +193 -0
  35. data/lib/net/dns/version.rb +16 -0
  36. data/net-dns.gemspec +37 -0
  37. data/test/header_test.rb +167 -0
  38. data/test/names_test.rb +21 -0
  39. data/test/packet_test.rb +49 -0
  40. data/test/question_test.rb +83 -0
  41. data/test/resolver_test.rb +117 -0
  42. data/test/rr/a_test.rb +113 -0
  43. data/test/rr/aaaa_test.rb +109 -0
  44. data/test/rr/classes_test.rb +85 -0
  45. data/test/rr/cname_test.rb +97 -0
  46. data/test/rr/hinfo_test.rb +117 -0
  47. data/test/rr/mr_test.rb +105 -0
  48. data/test/rr/mx_test.rb +112 -0
  49. data/test/rr/ns_test.rb +86 -0
  50. data/test/rr/types_test.rb +69 -0
  51. data/test/rr_test.rb +131 -0
  52. data/test/test_helper.rb +4 -0
  53. metadata +158 -0
@@ -0,0 +1,21 @@
1
+ require 'test_helper'
2
+ require 'net/dns/names'
3
+
4
+ class NamesTest < Test::Unit::TestCase
5
+ include Net::DNS::Names
6
+
7
+ def test_long_names
8
+ assert_nothing_raised do
9
+ pack_name('a' * 63)
10
+ end
11
+ assert_raises ArgumentError do
12
+ pack_name('a' * 64)
13
+ end
14
+ assert_nothing_raised do
15
+ pack_name(['a' * 63, 'b' * 63, 'c' * 63, 'd' * 63].join('.'))
16
+ end
17
+ assert_raises ArgumentError do
18
+ pack_name(['a' * 63, 'b' * 63, 'c' * 63, 'd' * 63, 'e'].join('.'))
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,49 @@
1
+ require 'test_helper'
2
+ require 'net/dns/packet'
3
+
4
+ class PacketTest < Test::Unit::TestCase
5
+
6
+ def setup
7
+ @klass = Net::DNS::Packet
8
+ @domain = 'example.com'
9
+ end
10
+
11
+ def test_initialize
12
+ @record = @klass.new(@domain, Net::DNS::MX, Net::DNS::HS)
13
+ assert_instance_of @klass, @record
14
+ assert_instance_of Net::DNS::Header, @record.header
15
+ assert_instance_of Array, @record.question
16
+ assert_instance_of Net::DNS::Question, @record.question.first
17
+ assert_instance_of Array, @record.answer
18
+ assert_instance_of Array, @record.authority
19
+ assert_instance_of Array, @record.additional
20
+ end
21
+
22
+ def test_initialize_should_set_question
23
+ @question = @klass.new(@domain).question.first
24
+ assert_equal @domain, @question.qName
25
+ assert_equal Net::DNS::RR::Types.new(Net::DNS::A).to_s, @question.qType.to_s
26
+ assert_equal Net::DNS::RR::Classes.new(Net::DNS::IN).to_s, @question.qClass.to_s
27
+
28
+ @question = @klass.new(@domain, Net::DNS::MX, Net::DNS::HS).question.first
29
+ assert_equal @domain, @question.qName
30
+ assert_equal Net::DNS::RR::Types.new(Net::DNS::MX).to_s, @question.qType.to_s
31
+ assert_equal Net::DNS::RR::Classes.new(Net::DNS::HS).to_s, @question.qClass.to_s
32
+ end
33
+
34
+ def test_self_parse
35
+ packet = "\337M\201\200\000\001\000\003\000\004\000\004\006google\003com\000\000\001\000\001\300\f\000\001\000\001\000\000\001,\000\004@\351\273c\300\f\000\001\000\001\000\000\001,\000\004H\016\317c\300\f\000\001\000\001\000\000\001,\000\004@\351\247c\300\f\000\002\000\001\000\003\364\200\000\006\003ns1\300\f\300\f\000\002\000\001\000\003\364\200\000\006\003ns2\300\f\300\f\000\002\000\001\000\003\364\200\000\006\003ns3\300\f\300\f\000\002\000\001\000\003\364\200\000\006\003ns4\300\f\300X\000\001\000\001\000\003\307\273\000\004\330\357 \n\300j\000\001\000\001\000\003\307\273\000\004\330\357\"\n\300|\000\001\000\001\000\003\307\273\000\004\330\357$\n\300\216\000\001\000\001\000\003\307\273\000\004\330\357&\n"
36
+ @record = @klass.parse(packet)
37
+ assert_instance_of @klass, @record
38
+ assert_instance_of Net::DNS::Header, @record.header
39
+ assert_instance_of Array, @record.question
40
+ assert_instance_of Net::DNS::Question, @record.question.first
41
+ assert_instance_of Array, @record.answer
42
+ assert_instance_of Net::DNS::RR::A, @record.answer.first
43
+ assert_instance_of Array, @record.authority
44
+ assert_instance_of Net::DNS::RR::NS, @record.authority.first
45
+ assert_instance_of Array, @record.additional
46
+ assert_instance_of Net::DNS::RR::A, @record.additional.first
47
+ end
48
+
49
+ end
@@ -0,0 +1,83 @@
1
+ require 'test_helper'
2
+ require 'net/dns/question'
3
+
4
+ class QuestionTest < Test::Unit::TestCase
5
+
6
+ def setup
7
+ @domain = 'example.com.'
8
+ @type = 'MX'
9
+ @cls = 'HS'
10
+ @data = "\006google\003com\000\000\001\000\001"
11
+
12
+ @default = Net::DNS::Question.new(@domain)
13
+ @string = Net::DNS::Question.new(@domain,@type,@cls)
14
+ @binary = Net::DNS::Question.parse(@data)
15
+ @binary2 = Net::DNS::Question.parse(@string.data)
16
+ end
17
+
18
+ def test_simple
19
+ assert_equal(@default.qName, @domain)
20
+ assert_equal(@default.qType.to_s, "A")
21
+ assert_equal(@default.qClass.to_s, "IN")
22
+
23
+ assert_equal(@string.qName, @domain)
24
+ assert_equal(@string.qType.to_s, "MX")
25
+ assert_equal(@string.qClass.to_s, "HS")
26
+
27
+ assert_equal(@binary.qName, "google.com.")
28
+ assert_equal(@binary.qType.to_s, "A")
29
+ assert_equal(@binary.qClass.to_s, "IN")
30
+
31
+ assert_equal(@binary2.qName, @domain)
32
+ assert_equal(@binary2.qType.to_s, "MX")
33
+ assert_equal(@binary2.qClass.to_s, "HS")
34
+ end
35
+
36
+ def test_raise
37
+ # assert_raises(Net::DNS::Question::NameInvalid) do
38
+ # Net::DNS::Question.new(1)
39
+ # end
40
+ assert_raises(Net::DNS::Question::NameInvalid) do
41
+ Net::DNS::Question.new("test{")
42
+ end
43
+ assert_raises(ArgumentError) do
44
+ Net::DNS::Question.parse(Array.new)
45
+ end
46
+ assert_raises(ArgumentError) do
47
+ Net::DNS::Question.parse("test")
48
+ end
49
+ end
50
+
51
+ def test_inspect
52
+ assert_equal "google.com. IN A ",
53
+ Net::DNS::Question.new("google.com.").inspect
54
+ assert_equal "google.com. IN A ",
55
+ Net::DNS::Question.new("google.com.", Net::DNS::A).inspect
56
+ assert_equal "google.com. IN NS ",
57
+ Net::DNS::Question.new("google.com.", Net::DNS::NS).inspect
58
+ assert_equal "google.com. IN NS ",
59
+ Net::DNS::Question.new("google.com.", Net::DNS::NS).inspect
60
+ end
61
+
62
+ def test_inspect_with_name_longer_than_29_chrs
63
+ assert_equal "supercalifragilistichespiralidoso.com IN A ",
64
+ Net::DNS::Question.new("supercalifragilistichespiralidoso.com").inspect
65
+ end
66
+
67
+ def test_to_s
68
+ assert_equal "google.com. IN A ",
69
+ Net::DNS::Question.new("google.com.").to_s
70
+ assert_equal "google.com. IN A ",
71
+ Net::DNS::Question.new("google.com.", Net::DNS::A).to_s
72
+ assert_equal "google.com. IN NS ",
73
+ Net::DNS::Question.new("google.com.", Net::DNS::NS).to_s
74
+ assert_equal "google.com. IN NS ",
75
+ Net::DNS::Question.new("google.com.", Net::DNS::NS).to_s
76
+ end
77
+
78
+ def test_to_s_with_name_longer_than_29_chrs
79
+ assert_equal "supercalifragilistichespiralidoso.com IN A ",
80
+ Net::DNS::Question.new("supercalifragilistichespiralidoso.com").to_s
81
+ end
82
+
83
+ end
@@ -0,0 +1,117 @@
1
+ require 'test_helper'
2
+ require 'net/dns/resolver'
3
+
4
+ class Net::DNS::Resolver
5
+ attr_reader :config
6
+ end
7
+
8
+
9
+ class ResolverTest < Test::Unit::TestCase
10
+
11
+ def test_initialize
12
+ assert_nothing_raised { Net::DNS::Resolver.new }
13
+ end
14
+
15
+ def test_initialize_with_config
16
+ assert_nothing_raised { Net::DNS::Resolver.new({}) }
17
+ end
18
+
19
+ def test_initialize_with_multi_name_servers
20
+ resolver = Net::DNS::Resolver.new({ :config_file => File.expand_path('../../spec/fixtures/resolv.conf', __FILE__) })
21
+ assert_equal ['192.168.1.1', '192.168.1.2', '192.168.1.3', '192.168.1.4'], resolver.nameservers
22
+ end
23
+
24
+ def test_initialize_with_invalid_config_should_raise_argumenterror
25
+ assert_raises(ArgumentError) { Net::DNS::Resolver.new("") }
26
+ assert_raises(ArgumentError) { Net::DNS::Resolver.new(0) }
27
+ assert_raises(ArgumentError) { Net::DNS::Resolver.new(:foo) }
28
+ end
29
+
30
+ def test_query_with_no_nameservers_should_raise_resolvererror
31
+ assert_raises(Net::DNS::Resolver::Error) { Net::DNS::Resolver.new(:nameservers => []).query("example.com") }
32
+ end
33
+
34
+ # def test_send_to_ipv6_nameserver_should_not_raise_einval
35
+ # assert_nothing_raised { Net::DNS::Resolver.new(:nameservers => ['2001:4860:4860::8888', '2001:4860:4860::8844']).send('example.com')}
36
+ # end
37
+
38
+ # I know private methods are supposed to not be tested directly
39
+ # but since this library lacks unit tests, for now let me test them in this way.
40
+
41
+ def _make_query_packet(*args)
42
+ Net::DNS::Resolver.new.send(:make_query_packet, *args)
43
+ end
44
+
45
+ def test_make_query_packet_from_ipaddr
46
+ packet = _make_query_packet(IPAddr.new("192.168.1.1"), Net::DNS::A, cls = Net::DNS::IN)
47
+ assert_equal "1.1.168.192.in-addr.arpa", packet.question.first.qName
48
+ assert_equal Net::DNS::PTR.to_i, packet.question.first.qType.to_i
49
+ assert_equal Net::DNS::IN.to_i, packet.question.first.qClass.to_i
50
+ end
51
+
52
+ def test_make_query_packet_from_string_like_ipv4
53
+ packet = _make_query_packet("192.168.1.1", Net::DNS::A, cls = Net::DNS::IN)
54
+ assert_equal "1.1.168.192.in-addr.arpa", packet.question.first.qName
55
+ assert_equal Net::DNS::PTR.to_i, packet.question.first.qType.to_i
56
+ assert_equal Net::DNS::IN.to_i, packet.question.first.qClass.to_i
57
+ end
58
+
59
+ def test_make_query_packet_from_string_like_ipv6
60
+ packet = _make_query_packet("2001:1ac0::200:0:a5d1:6004:2", Net::DNS::A, cls = Net::DNS::IN)
61
+ assert_equal "2.0.0.0.4.0.0.6.1.d.5.a.0.0.0.0.0.0.2.0.0.0.0.0.0.c.a.1.1.0.0.2.ip6.arpa", packet.question.first.qName
62
+ assert_equal Net::DNS::PTR.to_i, packet.question.first.qType.to_i
63
+ assert_equal Net::DNS::IN.to_i, packet.question.first.qClass.to_i
64
+ end
65
+
66
+ def test_make_query_packet_from_string_like_hostname
67
+ packet = _make_query_packet("ns2.google.com", Net::DNS::A, cls = Net::DNS::IN)
68
+ assert_equal "ns2.google.com", packet.question.first.qName
69
+ assert_equal Net::DNS::A.to_i, packet.question.first.qType.to_i
70
+ assert_equal Net::DNS::IN.to_i, packet.question.first.qClass.to_i
71
+ end
72
+
73
+ def test_make_query_packet_from_string_like_hostname_with_number
74
+ packet = _make_query_packet("ns.google.com", Net::DNS::A, cls = Net::DNS::IN)
75
+ assert_equal "ns.google.com", packet.question.first.qName
76
+ assert_equal Net::DNS::A.to_i, packet.question.first.qType.to_i
77
+ assert_equal Net::DNS::IN.to_i, packet.question.first.qClass.to_i
78
+ end
79
+
80
+ def test_should_return_state_without_exception
81
+ res = Net::DNS::Resolver.new
82
+ assert_nothing_raised {res.state}
83
+ end
84
+
85
+ RubyPlatforms = [
86
+ ["darwin9.0", false], # Mac OS X
87
+ ["darwin", false], # JRuby on Mac OS X
88
+ ["linux-gnu", false],
89
+ ["mingw32", true], # ruby 1.8.6 (2008-03-03 patchlevel 114) [i386-mingw32]
90
+ ["mswin32", true], # ruby 1.8.6 (2008-03-03 patchlevel 114) [i386-mswin32]
91
+ ["mswin32", true], # ruby 1.8.6 (2008-04-22 rev 6555) [x86-jruby1.1.1]
92
+ ]
93
+
94
+ C = Object.const_get(defined?(RbConfig) ? :RbConfig : :Config)::CONFIG
95
+
96
+ def test_self_platform_windows_question
97
+ RubyPlatforms.each do |platform, is_windows|
98
+ assert_equal is_windows,
99
+ override_platform(platform) { Net::DNS::Resolver.platform_windows? },
100
+ "Expected `#{is_windows}' with platform `#{platform}'"
101
+ end
102
+ end
103
+
104
+
105
+ private
106
+
107
+ def override_platform(new_platform, &block)
108
+ raise LocalJumpError, "no block given" unless block_given?
109
+ old_platform = C["host_os"]
110
+ C["host_os"] = new_platform
111
+ result = yield
112
+ ensure
113
+ C["host_os"] = old_platform
114
+ result
115
+ end
116
+
117
+ end
@@ -0,0 +1,113 @@
1
+ require 'test_helper'
2
+ require 'net/dns/rr'
3
+
4
+ class RRATest < Test::Unit::TestCase
5
+
6
+ def setup
7
+ @rr_name = "google.com."
8
+ @rr_type = "A"
9
+ @rr_cls = "IN"
10
+ @rr_ttl = 10000
11
+ @rr_value = "64.233.187.99"
12
+ @rr_address = IPAddr.new(@rr_value)
13
+
14
+ @rr_output = "google.com. 10000 IN A 64.233.187.99"
15
+
16
+ @rr = Net::DNS::RR::A.new(:name => @rr_name, :address => @rr_address, :ttl => @rr_ttl)
17
+ end
18
+
19
+
20
+ def test_initialize_from_hash
21
+ @record = Net::DNS::RR::A.new(:name => @rr_name, :address => @rr_value, :ttl => @rr_ttl)
22
+ assert_equal @rr_output, @record.to_s
23
+ assert_equal @rr_name, @record.name
24
+ assert_equal @rr_type, @record.type
25
+ assert_equal @rr_cls, @record.cls
26
+ assert_equal @rr_ttl, @record.ttl
27
+ assert_equal @rr_address, @record.address
28
+ assert_equal @rr_value, @record.value
29
+ end
30
+
31
+ def test_initialize_from_string
32
+ @record = Net::DNS::RR::A.new("#{@rr_name} #{@rr_ttl} #{@rr_cls} #{@rr_type} #{@rr_value}")
33
+ assert_equal @rr_output, @record.to_s
34
+ assert_equal @rr_name, @record.name
35
+ assert_equal @rr_type, @record.type
36
+ assert_equal @rr_cls, @record.cls
37
+ assert_equal @rr_ttl, @record.ttl
38
+ assert_equal @rr_address, @record.address
39
+ assert_equal @rr_value, @record.value
40
+ end
41
+
42
+ def test_parse
43
+ data = "\006google\003com\000\000\001\000\001\000\000'\020\000\004@\351\273c"
44
+ @record = Net::DNS::RR.parse(data)
45
+ assert_equal @rr_output, @record.to_s
46
+ assert_equal @rr_name, @record.name
47
+ assert_equal @rr_type, @record.type
48
+ assert_equal @rr_cls, @record.cls
49
+ assert_equal @rr_ttl, @record.ttl
50
+ assert_equal @rr_address, @record.address
51
+ assert_equal @rr_value, @record.value
52
+ end
53
+
54
+
55
+ InvalidArguments = [
56
+ { :name => "google.com", :address => "255.256" },
57
+ { :name => "google.com" },
58
+ Object.new,
59
+ Array.new(7),
60
+ "10800 IN A",
61
+ "google.com. 10800 IN B",
62
+ "google.com. 10800 IM A",
63
+ ]
64
+
65
+ InvalidArguments.each_with_index do |arguments, index|
66
+ define_method "test_initialize_should_raise_with_invalid_arguments_#{index}" do
67
+ assert_raises(ArgumentError) { Net::DNS::RR::A.new(arguments) }
68
+ end
69
+ end
70
+
71
+
72
+ def test_address_getter
73
+ assert_equal @rr_address, @rr.address
74
+ end
75
+
76
+ def test_address_setter
77
+ assert_raises(ArgumentError) { @rr.address = nil }
78
+
79
+ expected = IPAddr.new("64.233.187.99")
80
+ assert_equal expected, @rr.address = "64.233.187.99"
81
+ assert_equal expected, @rr.address
82
+
83
+ expected = IPAddr.new("64.233.187.90")
84
+ assert_equal expected, @rr.address = 1089059674
85
+ assert_equal expected, @rr.address
86
+
87
+ expected = IPAddr.new("64.233.187.80")
88
+ assert_equal expected, @rr.address = IPAddr.new("64.233.187.80")
89
+ assert_equal expected, @rr.address
90
+ end
91
+
92
+
93
+ def test_value
94
+ assert_equal @rr_value, @rr.value
95
+ end
96
+
97
+
98
+ def test_inspect
99
+ assert_equal "google.com. 10000 IN A 64.233.187.99",
100
+ @rr.inspect
101
+ end
102
+
103
+ def test_to_s
104
+ assert_equal "google.com. 10000 IN A 64.233.187.99",
105
+ @rr.to_s
106
+ end
107
+
108
+ def test_to_a
109
+ assert_equal ["google.com.", 10000, "IN", "A", "64.233.187.99"],
110
+ @rr.to_a
111
+ end
112
+
113
+ end
@@ -0,0 +1,109 @@
1
+ require 'test_helper'
2
+ require 'net/dns/rr'
3
+
4
+ class RRAAAATest < Test::Unit::TestCase
5
+
6
+ def setup
7
+ @rr_name = "www.nic.it."
8
+ @rr_type = "AAAA"
9
+ @rr_cls = "IN"
10
+ @rr_ttl = 60
11
+ @rr_value = "2a00:d40:1:1::239"
12
+ @rr_address = IPAddr.new(@rr_value)
13
+
14
+ @rr_output = "www.nic.it. 60 IN AAAA 2a00:d40:1:1::239"
15
+
16
+ @rr = Net::DNS::RR::AAAA.new(:name => @rr_name, :address => @rr_address, :ttl => @rr_ttl)
17
+ end
18
+
19
+
20
+ def test_initialize_from_hash
21
+ @record = Net::DNS::RR::AAAA.new(:name => @rr_name, :address => @rr_value, :ttl => @rr_ttl)
22
+ assert_equal @rr_output, @record.to_s
23
+ assert_equal @rr_name, @record.name
24
+ assert_equal @rr_type, @record.type
25
+ assert_equal @rr_cls, @record.cls
26
+ assert_equal @rr_ttl, @record.ttl
27
+ assert_equal @rr_address, @record.address
28
+ assert_equal @rr_value, @record.value
29
+ end
30
+
31
+ def test_initialize_from_string
32
+ @record = Net::DNS::RR::AAAA.new("#{@rr_name} #{@rr_ttl} #{@rr_cls} #{@rr_type} #{@rr_value}")
33
+ assert_equal @rr_output, @record.to_s
34
+ assert_equal @rr_name, @record.name
35
+ assert_equal @rr_type, @record.type
36
+ assert_equal @rr_cls, @record.cls
37
+ assert_equal @rr_ttl, @record.ttl
38
+ assert_equal @rr_address, @record.address
39
+ assert_equal @rr_value, @record.value
40
+ end
41
+
42
+ def test_parse
43
+ data = "\003www\003nic\002it\000\000\034\000\001\000\000\000<\000\020*\000\r@\000\001\000\001\000\000\000\000\000\000\0029"
44
+ @record = Net::DNS::RR.parse(data)
45
+ assert_equal @rr_output, @record.to_s
46
+ assert_equal @rr_name, @record.name
47
+ assert_equal @rr_type, @record.type
48
+ assert_equal @rr_cls, @record.cls
49
+ assert_equal @rr_ttl, @record.ttl
50
+ assert_equal @rr_address, @record.address
51
+ assert_equal @rr_value, @record.value
52
+ end
53
+
54
+
55
+ InvalidArguments = [
56
+ { :name => "google.com", :address => "2a00" },
57
+ { :name => "google.com" },
58
+ Object.new,
59
+ Array.new(7),
60
+ "10800 IN AAAA",
61
+ # FIXME: "google.com. 10800 IN B",
62
+ # FIXME: "google.com. 10800 IM AAAA",
63
+ ]
64
+
65
+ InvalidArguments.each_with_index do |arguments, index|
66
+ define_method "test_initialize_should_raise_with_invalid_arguments_#{index}" do
67
+ assert_raises(ArgumentError) { Net::DNS::RR::AAAA.new(arguments) }
68
+ end
69
+ end
70
+
71
+
72
+ def test_address_getter
73
+ assert_equal @rr_address, @rr.address
74
+ end
75
+
76
+ def test_address_setter
77
+ assert_raises(ArgumentError) { @rr.address = nil }
78
+
79
+ expected = IPAddr.new("2a00:d40:1:1::239")
80
+ assert_equal expected, @rr.address = "2a00:d40:1:1::239"
81
+ assert_equal expected, @rr.address
82
+
83
+ expected = IPAddr.new("2a00:d40:1:1::240")
84
+ assert_equal expected, @rr.address = IPAddr.new("2a00:d40:1:1::240")
85
+ assert_equal expected, @rr.address
86
+ end
87
+
88
+
89
+ def test_value
90
+ assert_equal @rr_value, @rr.value
91
+ end
92
+
93
+
94
+ def test_inspect
95
+ assert_equal "www.nic.it. 60 IN AAAA 2a00:d40:1:1::239",
96
+ @rr.inspect
97
+ end
98
+
99
+ def test_to_s
100
+ assert_equal "www.nic.it. 60 IN AAAA 2a00:d40:1:1::239",
101
+ @rr.to_s
102
+ end
103
+
104
+ def test_to_a
105
+ assert_equal ["www.nic.it.", 60, "IN", "AAAA", "2a00:d40:1:1::239"],
106
+ @rr.to_a
107
+ end
108
+
109
+ end