The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use Test::More tests => 23;

use strict;
use warnings;

$ENV{ IMAGE_TEXTMODE_NOXS } = 1;

use_ok( 'Image::TextMode::Format::ANSIMation' );

my @files = qw( ansimation1.ans ansimation2.ans );

for my $file ( @files ) {
    my $ansi = Image::TextMode::Format::ANSIMation->new;
    $ansi->read( "t/ansimation/data/${ file }" );

    isa_ok( $ansi, 'Image::TextMode::Format::ANSIMation' );
    my ( $w, $h ) = ( $ansi->width, $ansi->height );
    is( $w, 4, "${ file } width()" );
    is( $h, 1, "${ file } height()" );
    is_deeply( [ $ansi->dimensions ], [ $w, $h ], "${ file } dimensions()" );

    isa_ok( $ansi->font,    'Image::TextMode::Font::8x16' );
    isa_ok( $ansi->palette, 'Image::TextMode::Palette::ANSI' );

    my @frames = @{ $ansi->frames };
    is( scalar @frames, 2, "${ file } frames()" );

    for my $frame ( @frames ) {
        isa_ok( $frame, 'Image::TextMode::Canvas' );
        is_deeply(
            $frame->pixeldata,
            [   [   { char => 'T', attr => 8 },
                    { char => 'E', attr => 207 },
                    { char => 'S', attr => 68 },
                    { char => 'T', attr => 35 },
                ]
            ],
            "${ file } frame->pixeldata"
        );
    }
}