class TestMemoryManager(unittest.TestCase): def setUp(self): self.memory = MemoryManager(None, 32) self.memory.clear() def testInnerConsistency(self): for i in range(0, 128, 4): self.memory[i] = 0xFF000000 self.assertEqual(len(self.memory.memory), 4) self.memory[128] = 0x0 self.assertEqual(len(self.memory.memory), 5) def testSimpleAllocation(self): self.memory[0x00000004] = 0x2 self.assertEqual(self.memory[0x4], 0x2) self.memory[0x0008, 2] = 0xFFFF self.memory[0x000A, 2] = 0xAAAA self.assertEqual(self.memory[0x0008, 4], 0xAAAAFFFF) self.memory[0x0010, 1] = 0xAAFF self.memory[0x0011, 1] = 0xEEEE self.assertEqual(self.memory[0x0010, 4], 0x0000EEFF) self.memory[0x0002] = 0xABCD0A0A self.assertEqual(self.memory[0x0002], 0x0A0A) def testMemoryBounds(self): self.assertRaises(MIPS_Exception, self.memory.__getitem__, 0xFFFFFFFF0) self.assertEqual(self.memory[0xFFFFFFFF], 0) def testAlignmentChecks(self): self.assertRaises(MIPS_Exception, self.memory.getWord, 0x0003) self.assertRaises(MIPS_Exception, self.memory.getWord, 0x0002) self.assertRaises(MIPS_Exception, self.memory.getHalf, 0x0003) self.assertRaises(MIPS_Exception, self.memory.getWord, 0x0001) self.assertRaises(MIPS_Exception, self.memory.setWord, 0x0003, 0xFFFF) self.assertRaises(MIPS_Exception, self.memory.setWord, 0x0002, 0xFFFF) self.assertRaises(MIPS_Exception, self.memory.setHalf, 0x0003, 0xFFFF) self.assertRaises(MIPS_Exception, self.memory.setWord, 0x0001, 0xFFFF) self.assertEqual(self.memory.getWord(0x0000), 0) self.assertEqual(self.memory.getHalf(0x0002), 0) self.assertEqual(self.memory.getByte(0x0003), 0)
def setUp(self): self.memory = MemoryManager(None, 32) self.memory.clear()