Blame t/yamlish-output.t

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
}