#!perl
# $Id$
use strict;
use warnings;
use CPU::Z80::Assembler;
use Test::More tests => 12;
use File::Slurp;
use File::Spec;
my $infile = 't/data/list.asm';
my $bmkoutfile = 't/data/list.hex';
my $bmklstfile = 't/data/list.lst';
my $outfile = 't/list.o';
my $lstfile = 't/list.lst';
unlink $outfile, $lstfile;
for ($infile, $bmkoutfile, $bmklstfile) {
ok -f $_, "$_ exists";
}
for ($outfile, $lstfile) {
ok ! -f $_, "$_ should not exist";
}
is system($^X." -I".File::Spec->catfile("blib", "lib")." ".
File::Spec->catfile("blib", "script", "z80masm")." ".
$infile." ".
$outfile." > ".$lstfile), 0,
"bin/z80masm $infile $outfile > $lstfile";
for ($outfile, $lstfile) {
ok -f $_, "$_ exists";
}
# insert version number in lst file as variable
# handle \r
my $lst = read_file($lstfile);
$lst =~ s/\A([^\n]*v)$CPU::Z80::Assembler::VERSION/$1\$CPU::Z80::Assembler::VERSION/;
$lst =~ s/\r//g;
write_file($lstfile, $lst);
my $bmklst = read_file($bmklstfile);
$bmklst =~ s/\r//g;
my $lst_ok = $lst eq $bmklst;
ok $lst_ok, "files equal : $bmklstfile $lstfile";
my $out_hex = join(' ', map { sprintf("%02X", ord($_)) } split(//,
read_file($outfile, binmode => ':raw')));
my $bmk_hex = read_file($bmkoutfile);
for ($bmk_hex) {
s/\s+/ /g;
s/^\s+//;
s/\s+$//g;
}
my $obj_ok = $out_hex eq $bmk_hex;
is $out_hex, $bmk_hex, "$outfile OK";
unlink $outfile, $lstfile if ($lst_ok && $obj_ok);
for ($outfile, $lstfile) {
ok ! -f $_, "$_ should not exist";
}