From 3bed1d2247da1379e7efe0d8e35316fbc31466c5 Mon Sep 17 00:00:00 2001 From: Mike Naberezny Date: Sun, 21 Aug 2011 11:43:39 -0700 Subject: [PATCH] Add tests for branch calculation fixes --- src/py65/tests/test_assembler.py | 6 +++++- src/py65/tests/test_disassembler.py | 13 +++++++++---- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/py65/tests/test_assembler.py b/src/py65/tests/test_assembler.py index b47245f..0311b08 100644 --- a/src/py65/tests/test_assembler.py +++ b/src/py65/tests/test_assembler.py @@ -867,10 +867,14 @@ class AssemblerTests(unittest.TestCase): def dont_test_assembles_ef(self): pass - def test_assembles_f0(self): + def test_assembles_f0_forward(self): self.assertEqual([0xf0, 0x44], self.assemble('BEQ $0046')) + def test_assembles_f0_backward(self): + self.assertEqual([0xf0, 0xfc], + self.assemble('BEQ $BFFE', pc=0xc000)) + def test_assembles_f1(self): self.assertEqual([0xf1, 0x44], self.assemble('SBC ($44),Y')) diff --git a/src/py65/tests/test_disassembler.py b/src/py65/tests/test_disassembler.py index 73640a6..808a238 100644 --- a/src/py65/tests/test_disassembler.py +++ b/src/py65/tests/test_disassembler.py @@ -1205,10 +1205,15 @@ class DisassemblerTests(unittest.TestCase): self.assertEqual(1, length) self.assertEqual('???', disasm) - def test_disassembles_f0(self): + def test_disassembles_f0_forward(self): length, disasm = self.disassemble([0xf0, 0x44]) self.assertEqual(2, length) self.assertEqual('BEQ $0046', disasm) + + def test_disassembled_f0_backward(self): + length, disasm = self.disassemble([0xf0, 0xfc], pc=0xc000) + self.assertEqual(2, length) + self.assertEqual('BEQ $bffe', disasm) def test_disassembles_f1(self): length, disasm = self.disassemble([0xf1, 0x44]) @@ -1287,12 +1292,12 @@ class DisassemblerTests(unittest.TestCase): # Test Helpers - def disassemble(self, bytes): + def disassemble(self, bytes, pc=0): mpu = MPU() address_parser = AddressParser() disasm = Disassembler(mpu, address_parser) - mpu.memory[0:len(bytes)-1] = bytes - return disasm.instruction_at(0) + mpu.memory[pc:len(bytes)-1] = bytes + return disasm.instruction_at(pc) def test_suite(): return unittest.findTestCases(sys.modules[__name__])