use strict;
$^W = 1;
use Test::More tests => 36;
use CPU::Emulator::Z80::Register8F;
my $f = CPU::Emulator::Z80::Register8F->new();
ok($f->isa('CPU::Emulator::Z80::Register8'),
"Inheritance tree is hunky-dory");
# S => 0b10000000
# Z => 0b01000000
# 5 => 0b00100000
# H => 0b00010000
# 3 => 0b00001000
# P => 0b00000100
# N => 0b00000010
# C => 0b00000001
$f->set(0b10101010);
ok($f->getS() == 1 &&
$f->getZ() == 0 &&
$f->get5() == 1 &&
$f->getH() == 0 &&
$f->get3() == 1 &&
$f->getP() == 0 &&
$f->getN() == 1 &&
$f->getC() == 0, "getX works");
$f->set(0);
foreach (qw(S Z 5 H 3 P N C)) {
eval "\$f->set$_();";
ok(eval "\$f->get$_()", "set$_() works");
eval "\$f->set$_(0);";
ok(!eval "\$f->get$_()", "set$_(0) works");
eval "\$f->set$_(1);";
ok(eval "\$f->get$_()", "set$_(1) works");
}
ok($f->get() == 0xFF, "the end result of all those set()s is correct, so nothing lied!");
foreach (qw(S Z 5 H 3 P N C)) {
eval "\$f->reset$_();";
ok(!eval "\$f->get$_()", "reset$_() works");
}
ok($f->get() == 0, "the end result of all those reset()s is correct");