class TestLogicalArithmeticOpcodes(unittest.TestCase): def setUp(self): self.cpu = Cpu(MMU()) self.cpu.mmu.rom = [0] * 128 self.cpu.mmu.load('C:/Users/cjpowell/workspace/Python/gbpy/resources/test_file.gb') def test_direct_xor(self): self.cpu._op_a8() self.assertEqual(self.cpu.registers.a, 0) self.assertEqual(self.cpu.registers.zero_flag, 1) self.cpu.registers.b = 0xf self.cpu._op_a8() self.assertEqual(self.cpu.registers.a, 0xf) self.assertEqual(self.cpu.registers.zero_flag, 0) self.cpu.registers.b = 0x5f self.cpu._op_a8() self.assertEqual(self.cpu.registers.a, 0x50) def test_indirect_xor(self): self.cpu._op_ae() self.assertEqual(self.cpu.registers.a, 0xff) self.assertEqual(self.cpu.registers.zero_flag, 0) self.cpu._op_ae() self.assertEqual(self.cpu.registers.a, 0) self.assertEqual(self.cpu.registers.zero_flag, 1) def test_direct_or(self): self.cpu.registers.b = 0 self.cpu._op_b0() self.assertEqual(self.cpu.registers.a, 0) self.assertEqual(self.cpu.registers.zero_flag, 1) self.cpu.registers.b = 0x8 self.cpu._op_b0() self.assertEqual(self.cpu.registers.a, 0x8) self.assertEqual(self.cpu.registers.zero_flag, 0) self.cpu.registers.b = 0xf7 self.cpu._op_b0() self.assertEqual(self.cpu.registers.a, 0xff) def test_indirect_or(self): self.cpu._op_b6() self.assertEqual(self.cpu.registers.a, 0xff) self.assertEqual(self.cpu.registers.zero_flag, 0) self.cpu._op_b6() self.assertEqual(self.cpu.registers.a, 0xff) def test_and(self): self.cpu.registers.b = 0xf self.cpu._op_a0() self.assertEqual(self.cpu.registers.a, 0) self.assertEqual(self.cpu.registers.zero_flag, 1) self.cpu.registers.a = 0xff self.cpu._op_a6() self.assertEqual(self.cpu.registers.a, 0xff) self.assertEqual(self.cpu.registers.zero_flag, 0) self.cpu.registers.pc = 1 self.cpu._op_e6() self.assertEqual(self.cpu.registers.a, 0) self.assertEqual(self.cpu.registers.zero_flag, 1) self.assertEqual(self.cpu.registers.pc, 2) def test_compare(self): self.cpu._op_b8() self.assertEqual(self.cpu.registers.a, 0) self.assertEqual(self.cpu.registers.zero_flag, 1) self.assertEqual(self.cpu.registers.carry_flag, 0) self.cpu._op_be() self.assertEqual(self.cpu.registers.zero_flag, 0) self.assertEqual(self.cpu.registers.carry_flag, 1) self.assertEqual(self.cpu.registers.hc_flag, 1) self.cpu.registers.a = 0xff self.cpu._op_fe() self.assertEqual(self.cpu.registers.zero_flag, 1) self.assertEqual(self.cpu.registers.carry_flag, 0)