r994@llin: dpavlin | 2006-09-25 14:49:05 +0200
[webpac2] / t / 2-parse.t
1 #!/usr/bin/perl -w
2
3 use strict;
4 use Test::More tests => 26;
5 use Test::Exception;
6 use blib;
7
8 use Data::Dump qw/dump/;
9 use Cwd qw/abs_path/;
10 use YAML qw/LoadFile/;
11
12 BEGIN {
13 use_ok( 'WebPAC::Parser' );
14 use_ok( 'WebPAC::Config' );
15 }
16
17 my $debug = shift @ARGV;
18
19 ok(my $abs_path = abs_path($0), "abs_path");
20 $abs_path =~ s#/[^/]*$#/#;
21
22 my $config_path = "$abs_path/conf/test.yml";
23
24 ok(-e $config_path, "$config_path exists");
25
26 throws_ok { new WebPAC::Parser( no_log => 1 ) } qr/WebPAC::Config/, "new without config";
27
28 ok(
29         my $parser = new WebPAC::Parser(
30                 config => new WebPAC::Config( path => $config_path ),
31                 base_path => $abs_path,
32                 debug => $debug,
33 ), "new");
34
35 my $inputs = {
36         foo => [ qw/foo-input1 foo-input2/ ],
37         bar => [ qw/bar-input/ ],
38         baz => [ qw/baz-input/ ],
39 };
40
41 foreach my $db (keys %$inputs) {
42         ok($parser->valid_database($db), "database $db");
43         ok($inputs->{$db}, "has known inputs");
44         diag "valid inputs = ", dump($inputs->{$db});
45         foreach my $i (@{ $inputs->{$db} }) {
46                 ok($parser->valid_database_input($db,$i), "input $i");
47         }
48 }
49 ok(! $parser->valid_database('non-existant'), "no database");
50 ok(! $parser->valid_database_input('foo','non-existant'), "no database input");
51
52 ok(my $l = $parser->{_lookup_create}, "_lookup_create");
53 diag "_lookup_create = ",dump($l);
54
55 ok(my $n = $parser->{_normalize_source}, "_normalize_source");
56 diag "_normalize_source = ",dump($n);
57
58 ok(my $d = $parser->{depends}, "depends");
59 diag "depends = ",dump($d);
60
61 my $expected_depend = {
62    foo => {
63             "foo-input1" => {
64                               bar => { "bar-input" => "200-a-200-e" },
65                               baz => { "baz-input" => "200-a" },
66                               foo => { "foo-input1" => 11, "foo-input2" => 11 },
67                             },
68             "foo-input2" => {
69                               bar => { "bar-input" => "900-x" },
70                               baz => { "baz-input" => "900-x" },
71                               foo => { "foo-input1" => "245-a", "foo-input2" => "245-a" },
72                             },
73           },
74    bar => {
75             "bar-input" => {
76                   baz => { "baz-input" => "900-x" },
77                   foo => { "foo-input1" => "245-a" },
78                 },
79           },
80    baz => {
81             "baz-input" => {
82                   bar => { "bar-input" => "900-x" },
83                   foo => { "foo-input2" => "245-a" },
84                 },
85           },
86 };
87
88
89 is_deeply($d, $expected_depend, "depends correct");
90
91 foreach my $db (keys %$d) {
92         foreach my $i (keys %{$d->{$db}}) {
93                 is_deeply($d->{$db}->{$i}, $parser->depends($db,$i), "depend $db/$i");
94         }
95 }