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