#!/usr/bin/perl
my
$name
=
'HINFO.example'
;
my
$type
=
'HINFO'
;
my
$code
= 13;
my
@attr
=
qw( cpu os )
;
my
@data
=
qw( VAX-11/750 VMS )
;
my
@also
=
qw( )
;
my
$wire
=
'0a5641582d31312f37353003564d53'
;
my
$typecode
=
unpack
'xn'
, Net::DNS::RR->new(
type
=>
$type
)->encode;
is(
$typecode
,
$code
,
"$type RR type code = $code"
);
my
$hash
= {};
@{
$hash
}{
@attr
} =
@data
;
for
my
$rr
( Net::DNS::RR->new(
name
=>
$name
,
type
=>
$type
,
%$hash
) ) {
my
$string
=
$rr
->string;
my
$rr2
= Net::DNS::RR->new(
$string
);
is(
$rr2
->string,
$string
,
'new/string transparent'
);
is(
$rr2
->encode,
$rr
->encode,
'new($string) and new(%hash) equivalent'
);
foreach
(
@attr
) {
is(
$rr
->
$_
,
$hash
->{
$_
},
"expected result from rr->$_()"
);
}
foreach
(
@also
) {
is(
$rr2
->
$_
,
$rr
->
$_
,
"additional attribute rr->$_()"
);
}
my
$encoded
=
$rr
->encode;
my
$decoded
= Net::DNS::RR->decode( \
$encoded
);
my
$hex1
=
unpack
'H*'
,
$encoded
;
my
$hex2
=
unpack
'H*'
,
$decoded
->encode;
my
$hex3
=
unpack
'H*'
,
$rr
->rdata;
is(
$hex2
,
$hex1
,
'encode/decode transparent'
);
is(
$hex3
,
$wire
,
'encoded RDATA matches example'
);
}
for
my
$rr
( Net::DNS::RR->new(
". $type"
) ) {
foreach
(
@attr
) {
ok( !
$rr
->
$_
(),
"'$_' attribute of empty RR undefined"
);
}
}
exit
;