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'; |