|
Packit |
a6a12c |
#!/usr/bin/perl -wT
|
|
Packit |
a6a12c |
|
|
Packit |
a6a12c |
use strict;
|
|
Packit |
a6a12c |
use warnings;
|
|
Packit |
a6a12c |
use lib 't/lib';
|
|
Packit |
a6a12c |
|
|
Packit |
a6a12c |
use Test::More tests => 9;
|
|
Packit |
a6a12c |
|
|
Packit |
a6a12c |
use TAP::Parser::YAMLish::Writer;
|
|
Packit |
a6a12c |
|
|
Packit |
a6a12c |
my $out = [
|
|
Packit |
a6a12c |
"---",
|
|
Packit |
a6a12c |
"bill-to:",
|
|
Packit |
a6a12c |
" address:",
|
|
Packit |
a6a12c |
" city: \"Royal Oak\"",
|
|
Packit |
a6a12c |
" lines: \"458 Walkman Dr.\\nSuite #292\\n\"",
|
|
Packit |
a6a12c |
" postal: 48046",
|
|
Packit |
a6a12c |
" state: MI",
|
|
Packit |
a6a12c |
" family: Dumars",
|
|
Packit |
a6a12c |
" given: Chris",
|
|
Packit |
a6a12c |
"comments: \"Late afternoon is best. Backup contact is Nancy Billsmer \@ 338-4338\\n\"",
|
|
Packit |
a6a12c |
"date: 2001-01-23",
|
|
Packit |
a6a12c |
"invoice: 34843",
|
|
Packit |
a6a12c |
"product:",
|
|
Packit |
a6a12c |
" -",
|
|
Packit |
a6a12c |
" description: Basketball",
|
|
Packit |
a6a12c |
" price: 450.00",
|
|
Packit |
a6a12c |
" quantity: 4",
|
|
Packit |
a6a12c |
" sku: BL394D",
|
|
Packit |
a6a12c |
" -",
|
|
Packit |
a6a12c |
" description: \"Super Hoop\"",
|
|
Packit |
a6a12c |
" price: 2392.00",
|
|
Packit |
a6a12c |
" quantity: 1",
|
|
Packit |
a6a12c |
" sku: BL4438H",
|
|
Packit |
a6a12c |
"tax: 251.42",
|
|
Packit |
a6a12c |
"total: 4443.52",
|
|
Packit |
a6a12c |
"...",
|
|
Packit |
a6a12c |
];
|
|
Packit |
a6a12c |
|
|
Packit |
a6a12c |
my $in = {
|
|
Packit |
a6a12c |
'bill-to' => {
|
|
Packit |
a6a12c |
'given' => 'Chris',
|
|
Packit |
a6a12c |
'address' => {
|
|
Packit |
a6a12c |
'city' => 'Royal Oak',
|
|
Packit |
a6a12c |
'postal' => '48046',
|
|
Packit |
a6a12c |
'lines' => "458 Walkman Dr.\nSuite #292\n",
|
|
Packit |
a6a12c |
'state' => 'MI'
|
|
Packit |
a6a12c |
},
|
|
Packit |
a6a12c |
'family' => 'Dumars'
|
|
Packit |
a6a12c |
},
|
|
Packit |
a6a12c |
'invoice' => '34843',
|
|
Packit |
a6a12c |
'date' => '2001-01-23',
|
|
Packit |
a6a12c |
'tax' => '251.42',
|
|
Packit |
a6a12c |
'product' => [
|
|
Packit |
a6a12c |
{ 'sku' => 'BL394D',
|
|
Packit |
a6a12c |
'quantity' => '4',
|
|
Packit |
a6a12c |
'price' => '450.00',
|
|
Packit |
a6a12c |
'description' => 'Basketball'
|
|
Packit |
a6a12c |
},
|
|
Packit |
a6a12c |
{ 'sku' => 'BL4438H',
|
|
Packit |
a6a12c |
'quantity' => '1',
|
|
Packit |
a6a12c |
'price' => '2392.00',
|
|
Packit |
a6a12c |
'description' => 'Super Hoop'
|
|
Packit |
a6a12c |
}
|
|
Packit |
a6a12c |
],
|
|
Packit |
a6a12c |
'comments' =>
|
|
Packit |
a6a12c |
"Late afternoon is best. Backup contact is Nancy Billsmer @ 338-4338\n",
|
|
Packit |
a6a12c |
'total' => '4443.52'
|
|
Packit |
a6a12c |
};
|
|
Packit |
a6a12c |
|
|
Packit |
a6a12c |
my @buf1 = ();
|
|
Packit |
a6a12c |
my @buf2 = ();
|
|
Packit |
a6a12c |
my $buf3 = '';
|
|
Packit |
a6a12c |
|
|
Packit |
a6a12c |
my @destination = (
|
|
Packit |
a6a12c |
{ name => 'Array reference',
|
|
Packit |
a6a12c |
destination => \@buf1,
|
|
Packit |
a6a12c |
normalise => sub { return \@buf1 },
|
|
Packit |
a6a12c |
},
|
|
Packit |
a6a12c |
{ name => 'Closure',
|
|
Packit |
a6a12c |
destination => sub { push @buf2, shift },
|
|
Packit |
a6a12c |
normalise => sub { return \@buf2 },
|
|
Packit |
a6a12c |
},
|
|
Packit |
a6a12c |
{ name => 'Scalar',
|
|
Packit |
a6a12c |
destination => \$buf3,
|
|
Packit |
a6a12c |
normalise => sub {
|
|
Packit |
a6a12c |
my @ar = split( /\n/, $buf3 );
|
|
Packit |
a6a12c |
return \@ar;
|
|
Packit |
a6a12c |
},
|
|
Packit |
a6a12c |
},
|
|
Packit |
a6a12c |
);
|
|
Packit |
a6a12c |
|
|
Packit |
a6a12c |
for my $dest (@destination) {
|
|
Packit |
a6a12c |
my $name = $dest->{name};
|
|
Packit |
a6a12c |
ok my $yaml = TAP::Parser::YAMLish::Writer->new, "$name: Created";
|
|
Packit |
a6a12c |
isa_ok $yaml, 'TAP::Parser::YAMLish::Writer';
|
|
Packit |
a6a12c |
|
|
Packit |
a6a12c |
$yaml->write( $in, $dest->{destination} );
|
|
Packit |
a6a12c |
my $got = $dest->{normalise}->();
|
|
Packit |
a6a12c |
is_deeply $got, $out, "$name: Result matches";
|
|
Packit |
a6a12c |
}
|