t/10-dnsvi.t
changeset 56 f5b2f3282e7d
parent 33 7d0fac2ec585
child 61 bedb2cce973e
equal deleted inserted replaced
48:d8a3e745d34e 56:f5b2f3282e7d
    17     local $/ = undef;
    17     local $/ = undef;
    18     open(my $x, '<', shift);
    18     open(my $x, '<', shift);
    19     return <$x>;
    19     return <$x>;
    20 }
    20 }
    21 
    21 
    22 # the results must match the t/samples/? files
    22 # the expect must match the t/samples/? files
    23 my %result = (
    23 my %expect = (
    24     axfr => {
    24     axfr => {
    25         RRSETS => 64,
    25         RRSETS => 64,
    26         SOA    => 1,
    26         SOA    => 1,
    27         NS     => 2,
    27         NS     => 2,
    28         A      => 6,
    28         A      => 6,
    55         A      => 2,
    55         A      => 2,
    56         TXT    => 5,
    56         TXT    => 5,
    57         AAAA   => 0,
    57         AAAA   => 0,
    58         MX     => 2,
    58         MX     => 2,
    59     },
    59     },
       
    60     d => {
       
    61         RRSETS => 15,
       
    62         SOA    => 1,
       
    63         NS     => 2,
       
    64         A      => [sort qw/
       
    65 	    abc.de.km21.de.
       
    66 	    foo.km21.de.
       
    67 	    tte.km21.de.
       
    68 	    tte.km21.de.
       
    69 	    bar.km21.de.
       
    70 	/],
       
    71         TXT    => 5,
       
    72         AAAA   => 0,
       
    73         MX     => 2,
       
    74     },
    60 );
    75 );
    61 
    76 
    62 # uniq list of rrtypes we want to test
    77 # uniq list of rrtypes we want to test
    63 my @sets = do {
    78 my @sets = do {
    64     my %h;
    79     my %h;
    65     @h{ map { keys %{$_} } values %result } = ();
    80     @h{ map { keys %{$_} } values %expect } = ();
    66     grep { $_ ne 'RRSETS' } sort keys %h;
    81     grep { $_ ne 'RRSETS' } sort keys %h;
    67 };
    82 };
    68 
    83 
    69 foreach my $sample (sort keys %result) {
    84 #foreach my $sample (sort keys %expect) {
       
    85 foreach my $sample ('d') {
    70     my $file = "t/samples/$sample";
    86     my $file = "t/samples/$sample";
    71 
    87 
    72     subtest "sample $file" => sub {
    88     subtest "sample $file" => sub {
    73         my %result = %{ $result{$sample} };
    89         my %expect = %{ $expect{$sample} };
    74         my @zone   = parse(slurp $file);
    90         my @zone   = parse(slurp $file);
    75         is @zone, $result{RRSETS} => "$sample: $result{RRSETS} RRSETS";
    91 #	use Data::Dumper;
       
    92 #	diag Dumper \@zone;
       
    93         is @zone, $expect{RRSETS} => "$sample: $expect{RRSETS} RRSETS";
    76         foreach my $type (@sets) {
    94         foreach my $type (@sets) {
       
    95 #	    diag '----------->' . $type;
       
    96 	    if (ref $expect{$type}) {
       
    97 		my @entries = sort map { $_->{label} } grep { $_->{rrtype} eq $type } map { $_->{rrset} } @zone;
       
    98 		is_deeply \@entries, $expect{$type} => 'list of labels';
       
    99 	    }
       
   100 	    else {
    77             is grep({ $_->{rrset}{rrtype} eq $type } @zone),
   101             is grep({ $_->{rrset}{rrtype} eq $type } @zone),
    78               $result{$type} => "$sample: $result{$type} $type";
   102 		$expect{$type} => "number of $type rrsets\n";
       
   103 	    }
    79         }
   104         }
    80 
   105 
    81         my ($added, $deleted) = delta(\@zone, \@zone);
   106         my ($added, $deleted) = delta(\@zone, \@zone);
    82         is @$added,   0 => 'nothing added';
   107         is @$added,   0 => 'nothing added';
    83         is @$deleted, 0 => 'nothing deleted';
   108         is @$deleted, 0 => 'nothing deleted';