# Before `make install' is performed this script should be runnable with # `make test'. After `make install' it should work as `perl test.pl' ######################### We start with some black magic to print on failure. # Change 1..1 below to 1..last_test_to_print . # (It may become useful if the test is moved to ./t subdirectory.) BEGIN { $| = 1; print "1..8\n"; } END {print "not ok 1\n" unless $loaded;} #use diagnostics; use Net::DNS::ToolKit qw( get16 put16 getIPv6 ipv6_aton ipv6_n2x get1char parse_char ); use Net::DNS::Codes qw(:constants); use Net::DNS::ToolKit::RR::AAAA; use Net::DNS::ToolKit::Debug qw(print_buf); $loaded = 1; print "ok 1\n"; ######################### End of black magic. # Insert your test code below (better if it prints "ok 13" # (correspondingly "not ok 13") depending on the success of chunk 13 # of the test code): $test = 2; sub ok { print "ok $test\n"; ++$test; } ## This is what we must test # ($newoff,$name,$type,$class,$ttl,$rdlength, # $rdata,...) = $get->XYZ(\$buffer,$offset); # # ($newoff,@dnptrs)=$put->XYZ(\$buffer,$offset,\@dnptrs, # $name,$type,$class,$ttl,$rdlength,$rdata,...); # # $name,$TYPE,$CLASS,$TTL,$rdlength,$IPaddr) # = $parse->XYZ($name,$type,$class,$ttl,$rdlength, # $rdata,...); ## test 2 add stuff to buffer my $buffer = ''; my @array = (5,4,3,2,1); my $module = 'Net::DNS::ToolKit::RR::AAAA'; my $expoff = &NS_IN6ADDRSZ + &NS_INT16SZ; my $IP6addr = 'AFE:B01:C02:D03:E04:F05:906:807'; my $ipv6addr = ipv6_aton($IP6addr); my ($rv,@retary) = $module->put(\$buffer,0,\@array,$ipv6addr); print "offset is: $rv, exp: $expoff\nnot " unless $rv == $expoff; &ok; ## test 3 verify that array came back print "array is wrong size\nnot " unless @array == @retary; &ok; ## test 4 check that this is really the array we sent foreach(0..$#array) { next if $array[$_] == $retary[$_]; print "array contents are different\nnot "; last; } &ok; ## test 5 verify buffer contents the hard way my @exp = (0,16,0xa,0xfe,0xb,1,0xc,2,0xd,3,0xe,4,0xf,5,9,6,8,7); # 0 : 0000_0000 0x00 0 16 bit int # 1 : 0001_0000 0x10 16 rdlength # 2 : 0000_1010 0x0A 10 ipv6 address, 16 bytes # 3 : 1111_1110 0xFE 254 # 4 : 0000_1011 0x0B 11 # 5 : 0000_0001 0x01 1 # 6 : 0000_1100 0x0C 12 # 7 : 0000_0010 0x02 2 # 8 : 0000_1101 0x0D 13 # 9 : 0000_0011 0x03 3 # 10 : 0000_1110 0x0E 14 # 11 : 0000_0100 0x04 4 # 12 : 0000_1111 0x0F 15 # 13 : 0000_0101 0x05 5 # 14 : 0000_1001 0x09 9 # 15 : 0000_0110 0x06 6 # 16 : 0000_1000 0x08 8 # 17 : 0000_0111 0x07 7 #print_buf(\$buffer); foreach(0..$expoff -1) { my $char = get1char(\$buffer,$_); if ($char != $exp[$_]) { printf "exp: %02X, got: %02X\nnot ",$exp[$_],$char; last; } } &ok; ## test 6 get IP6addr back ($rv, my $taddr) = $module->get(\$buffer,0); my $Taddr = ipv6_n2x($taddr); print "got: $Taddr, exp: $IP6addr\nnot " unless $Taddr eq $IP6addr; &ok; ## test 7 check offset returned print "offset got: $rv, exp: $expoff\nnot " unless $rv == $expoff; &ok; ## test 8 check parse my $prv = $module->parse($taddr); print "parse failed .. got: $prv, exp: $IP6addr\nnot " unless $prv eq $IP6addr; &ok;