use strict;
use warnings;
use Test::More tests => 13;
use_ok( 'Games::NES::ROM' );
my $rom = Games::NES::ROM->load( 't/roms/test.nes' );
isa_ok( $rom, 'Games::NES::ROM' );
my $sprite = $rom->sprite( 0, 0 );
ok( $sprite );
is( length( $sprite ), 64 );
my $expected = [
0, 0, 0, 0, 0, 0, 1, 1,
0, 0, 0, 0, 1, 1, 1, 1,
0, 0, 0, 1, 1, 1, 1, 1,
0, 0, 0, 1, 1, 1, 1, 1,
0, 0, 0, 3, 3, 3, 2, 2,
0, 0, 3, 2, 2, 3, 2, 2,
0, 0, 3, 2, 2, 3, 3, 2,
0, 3, 3, 2, 2, 3, 3, 2
];
is( $sprite, join( '', pack( 'C*', @$expected ) ) );
eval { $rom->sprite( -1, 0 ); };
ok( $@ );
like( $@, qr/invalid CHR bank/ );
eval { $rom->sprite( 2, 0 ); };
ok( $@ );
like( $@, qr/invalid CHR bank/ );
eval { $rom->sprite( 0, -1 ); };
ok( $@ );
like( $@, qr/invalid sprite index/ );
eval { $rom->sprite( 0, 513 ); };
ok( $@ );
like( $@, qr/invalid sprite index/ );