diff options
Diffstat (limited to 'test')
| -rw-r--r-- | test/test_snapshot.py | 74 | ||||
| -rw-r--r-- | test/test_sparse_memory.py | 33 |
2 files changed, 0 insertions, 107 deletions
diff --git a/test/test_snapshot.py b/test/test_snapshot.py deleted file mode 100644 index ddad410..0000000 --- a/test/test_snapshot.py +++ /dev/null @@ -1,74 +0,0 @@ -import unittest - -from focaccia.arch import x86 -from focaccia.snapshot import ProgramState, RegisterAccessError - -class TestProgramState(unittest.TestCase): - def setUp(self): - self.arch = x86.ArchX86() - - def test_register_access_empty_state(self): - state = ProgramState(self.arch) - for reg in x86.regnames: - self.assertRaises(RegisterAccessError, state.read_register, reg) - - def test_register_read_write(self): - state = ProgramState(self.arch) - for reg in x86.regnames: - state.set_register(reg, 0x42) - for reg in x86.regnames: - val = state.read_register(reg) - self.assertEqual(val, 0x42) - - def test_register_aliases_empty_state(self): - state = ProgramState(self.arch) - for reg in self.arch.all_regnames: - self.assertRaises(RegisterAccessError, state.read_register, reg) - - def test_register_aliases_read_write(self): - state = ProgramState(self.arch) - for reg in ['EAX', 'EBX', 'ECX', 'EDX']: - state.set_register(reg, 0xa0ff0) - - for reg in ['AH', 'BH', 'CH', 'DH']: - self.assertEqual(state.read_register(reg), 0xf, reg) - for reg in ['AL', 'BL', 'CL', 'DL']: - self.assertEqual(state.read_register(reg), 0xf0, reg) - for reg in ['AX', 'BX', 'CX', 'DX']: - self.assertEqual(state.read_register(reg), 0x0ff0, reg) - for reg in ['EAX', 'EBX', 'ECX', 'EDX', - 'RAX', 'RBX', 'RCX', 'RDX']: - self.assertEqual(state.read_register(reg), 0xa0ff0, reg) - - def test_flag_aliases(self): - flags = ['CF', 'PF', 'AF', 'ZF', 'SF', 'TF', 'IF', 'DF', 'OF', - 'IOPL', 'NT', 'RF', 'VM', 'AC', 'VIF', 'VIP', 'ID'] - state = ProgramState(self.arch) - - state.set_register('RFLAGS', 0) - for flag in flags: - self.assertEqual(state.read_register(flag), 0) - - state.set_register('RFLAGS', - x86.compose_rflags({'ZF': 1, 'PF': 1, 'OF': 0})) - self.assertEqual(state.read_register('ZF'), 1, self.arch.get_reg_accessor('ZF')) - self.assertEqual(state.read_register('PF'), 1) - self.assertEqual(state.read_register('OF'), 0) - self.assertEqual(state.read_register('AF'), 0) - self.assertEqual(state.read_register('ID'), 0) - self.assertEqual(state.read_register('SF'), 0) - - for flag in flags: - state.set_register(flag, 1) - for flag in flags: - self.assertEqual(state.read_register(flag), 1) - - state.set_register('OF', 1) - state.set_register('AF', 1) - state.set_register('SF', 1) - self.assertEqual(state.read_register('OF'), 1) - self.assertEqual(state.read_register('AF'), 1) - self.assertEqual(state.read_register('SF'), 1) - -if __name__ == '__main__': - unittest.main() diff --git a/test/test_sparse_memory.py b/test/test_sparse_memory.py deleted file mode 100644 index 4fd9cba..0000000 --- a/test/test_sparse_memory.py +++ /dev/null @@ -1,33 +0,0 @@ -import unittest - -from focaccia.snapshot import SparseMemory, MemoryAccessError - -class TestSparseMemory(unittest.TestCase): - def test_oob_read(self): - mem = SparseMemory() - for addr in range(mem.page_size): - self.assertRaises(MemoryAccessError, mem.read, addr, 1) - self.assertRaises(MemoryAccessError, mem.read, addr, 30) - self.assertRaises(MemoryAccessError, mem.read, addr + 0x10, 30) - self.assertRaises(MemoryAccessError, mem.read, addr, mem.page_size) - self.assertRaises(MemoryAccessError, mem.read, addr, mem.page_size - 1) - self.assertRaises(MemoryAccessError, mem.read, addr, mem.page_size + 1) - - def test_basic_read_write(self): - mem = SparseMemory() - - data = b'a' * mem.page_size * 2 - mem.write(0x300, data) - self.assertEqual(mem.read(0x300, len(data)), data) - self.assertEqual(mem.read(0x300, 1), b'a') - self.assertEqual(mem.read(0x400, 1), b'a') - self.assertEqual(mem.read(0x299 + mem.page_size * 2, 1), b'a') - self.assertEqual(mem.read(0x321, 12), b'aaaaaaaaaaaa') - - mem.write(0x321, b'Hello World!') - self.assertEqual(mem.read(0x321, 12), b'Hello World!') - - self.assertRaises(MemoryAccessError, mem.read, 0x300, mem.page_size * 3) - -if __name__ == '__main__': - unittest.main() |