use strict;
use warnings;
use Test::More tests => 21;
BEGIN {
use_ok( 'Games::NES::ROM::Format::UNIF' );
}
{
eval {
Games::NES::ROM::Format::UNIF->new(
filename => 't/roms/notarom.nes' );
};
ok( $@ );
like( $@, qr/not a unif rom/i );
}
{
eval {
Games::NES::ROM::Format::UNIF->new( filename => 't/roms/dne.nes' );
};
ok( $@ );
like( $@, qr/unable to open/i );
}
{
my $rom = Games::NES::ROM::Format::UNIF->new(
filename => 't/roms/test.unif' );
isa_ok( $rom, 'Games::NES::ROM' );
is( $rom->id, 'UNIF', 'id()' );
is( $rom->filename, 't/roms/test.unif', 'filename()' );
is( $rom->has_sram, 0, 'has_sram()' );
is( $rom->chr_count, 1, 'chr_count()' );
is( $rom->prg_count, 1, 'prg_count()' );
is( $rom->mapper, 'NES-NROM-128', 'mapper()' );
is( $rom->mirroring, 1, 'mirroring()' );
is( $rom->title, 'Scanline demo', 'title()' );
is( $rom->revision, 7, 'revision()' );
ok( !defined $rom->comments, 'comments()' );
is( $rom->tvci, 0, 'tvci()' );
ok( !defined $rom->controller, 'controller()' );
is( $rom->has_vror, 0, 'has_vror()' );
SKIP: {
eval { require Digest::CRC; };
skip 'Digest::CRC not installed', 1 if $@;
is( $rom->crc, 'f944cedb', 'crc()' );
}
SKIP: {
eval { require Digest::SHA1; };
skip 'Digest::SHA1 not installed', 1 if $@;
is( $rom->sha1, 'c2539fa1286c6b5c3ef6d22638da1b7940f77fce',
'sha1()' );
}
}