Added "is_valid" tests.
[dbsrgits/SQL-Translator.git] / t / 07p_args.t
CommitLineData
e2158c40 1#!/usr/bin/perl
2# vim: set ft=perl:
3#
4#
5
e2158c40 6use strict;
7
8use SQL::Translator;
44fb27ae 9use Test::More tests => 6;
e2158c40 10
11sub 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
21my $data = q(Id|Name|Phone Number|Favorite Flavor|);
22
23my $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
29my $pargs = $tr->parser_args;
30my $parsed = $tr->translate(\$data);
31
44fb27ae 32is($pargs->{'delimiter'}, '\|',
33 "parser_args works when called directly");
34is(scalar @{$parsed}, 4,
35 "right number of fields");
e2158c40 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
44fb27ae 44is($pargs->{'delimiter'}, "\t",
45 "parser_args works when called indirectly");
e2158c40 46
44fb27ae 47is(scalar @{$parsed}, 4,
48 "right number of fields with new delimiter");
e2158c40 49
50undef $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
44fb27ae 57is($pargs->{'delimiter'}, ":",
58 "parser_args works when called as constructor arg");
e2158c40 59
44fb27ae 60is(scalar @{$parsed}, 4,
61 "right number of fields with new delimiter");
e2158c40 62