5 my $debug = shift @ARGV;
7 use Test::More tests => 73;
8 use Data::Dump qw/dump/;
13 # XML::Rules doesn't like it!
14 #use Devel::LeakTrace::Fast;
17 use_ok('CWMP::Request');
20 my @models = ( qw/SpeedTouch-706 SpeedTouch-780/ );
22 ok( $#models + 1, 'got models' );
24 ok(my $abs_path = abs_path($0), "abs_path");
25 $abs_path =~ s!/[^/]*$!/!; #!fix-vim
33 ok( my $xml = read_file( $path ), "read_file( $path )" );
37 ok( my $trigger = $path2method->{$path}, "path2method($path)" );
39 CWMP::Request->add_trigger( name => $trigger, callback => sub {
40 my ( $self, $state ) = @_;
41 $triggers_count->{$trigger}++;
42 ok( $state, "called trigger $trigger" );
45 ok( my $state = CWMP::Request->parse( $xml ), 'parse' );
47 my $dump_path = $path;
48 $dump_path =~ s/\.xml/\.pl/;
50 write_file( $dump_path, dump( $state ) ) unless ( -e $dump_path );
52 diag "$path ? $dump_path" if $debug;
54 ok( my $hash = read_file( $dump_path ), "read_file( $dump_path )" );
55 ok ( $hash = eval "$hash", 'eval' );
57 is_deeply( $state, $hash, 'same' );
60 foreach my $model ( @models ) {
62 my $dir = "$abs_path/$model/";
63 opendir(DIR, $dir) || die "can't opendir $dir: $!";
67 $method =~ s/\.xml$//;
68 $path2method->{$path} = $method;
70 } grep { /\.xml$/ && -f "$dir/$_" } readdir(DIR);
73 diag "$model has ", $#xmls + 1, " xml tests";
77 foreach my $xml_path ( @xmls ) {
78 ok ( $xml_path, 'xml path' );
79 file_is_deeply( $xml_path );
83 diag "triggers_count = ",dump( $triggers_count ) if $debug;