Added new files to MANIFEST.
[dbsrgits/SQL-Translator.git] / t / 07p_args.t
1 #!/usr/bin/perl
2 # vim: set ft=perl:
3 #
4 #
5
6 use strict;
7
8 use SQL::Translator;
9 use Test::More tests => 6;
10
11 sub silly_parser {
12     my ($tr, $data) = @_;
13     my $pargs = $tr->parser_args;
14
15     my @fields = split /$pargs->{'delimiter'}/, $data;
16
17     return \@fields;
18 }
19
20 # The "data" to be parsed
21 my $data = q(Id|Name|Phone Number|Favorite Flavor|);
22
23 my $tr = SQL::Translator->new;
24
25 # Pass parser_args as an explicit method call
26 $tr->parser(\&silly_parser);
27 $tr->parser_args(delimiter => '\|');
28
29 my $pargs = $tr->parser_args;
30 my $parsed = $tr->translate(\$data);
31
32 is($pargs->{'delimiter'}, '\|',
33     "parser_args works when called directly");
34 is(scalar @{$parsed}, 4,
35     "right number of fields");
36
37 # Now, pass parser_args indirectly...
38 $tr->parser(\&silly_parser, { delimiter => "\t" });
39 $data =~ s/\|/\t/g;
40
41 $pargs = $tr->parser_args;
42 $parsed = $tr->translate(\$data);
43
44 is($pargs->{'delimiter'}, "\t",
45     "parser_args works when called indirectly");
46
47 is(scalar @{$parsed}, 4,
48     "right number of fields with new delimiter");
49
50 undef $tr;
51 $tr = SQL::Translator->new(parser => \&silly_parser,
52                            parser_args => { delimiter => ":" });
53 $data =~ s/\t/:/g;
54 $pargs = $tr->parser_args;
55 $parsed = $tr->translate(\$data);
56
57 is($pargs->{'delimiter'}, ":",
58     "parser_args works when called as constructor arg");
59
60 is(scalar @{$parsed}, 4,
61     "right number of fields with new delimiter");
62