def test_fetch(self): """Fetch is basic operation of transfer data.""" for i in range(5, 9): self.ram[i] = i assert self.ram.fetch(i, WORD_SIZE) == i assert (self.ram.fetch(5, 4 * WORD_SIZE) == 0x00000005000000060000000700000008) assert (self.ram.fetch(5, 4 * WORD_SIZE) == big_endian_decode([5, 6, 7, 8], WORD_SIZE)) self.ram[5] = 0 assert (self.ram.fetch(5, 4 * WORD_SIZE) == big_endian_decode([0, 6, 7, 8], WORD_SIZE)) assert (self.ram.fetch(5, 4 * WORD_SIZE) == 0x00000000000000060000000700000008) with raises(KeyError): self.ram.fetch(5, 4 * WORD_SIZE - 1) with raises(KeyError): self.ram.fetch(4, 4 * WORD_SIZE) self.ram = RandomAccessMemory(WORD_SIZE, 512, endianess="little") for i in range(5, 9): self.ram[i] = i assert self.ram.fetch(i, WORD_SIZE) == i assert (self.ram.fetch(5, 4 * WORD_SIZE) == 0x00000008000000070000000600000005) assert (self.ram.fetch(5, 4 * WORD_SIZE) == little_endian_decode([5, 6, 7, 8], WORD_SIZE))
def test_endianess(): """Simple test.""" assert big_endian_decode([1, 2, 3], 8) == 1 * 2 ** 16 + 2 * 2 ** 8 + 3 assert little_endian_decode([1, 2, 3], 8) == 3 * 2 ** 16 + 2 * 2 ** 8 + 1 assert big_endian_encode(1 * 2 ** 16 + 2 * 2 ** 8 + 3, 8, 24) == [1, 2, 3] assert little_endian_encode(3 * 2 ** 16 + 2 * 2 ** 8 + 1, 8, 24) == [1, 2, 3] assert big_endian_encode(0, 8, 24) == [0, 0, 0] assert little_endian_encode(0, 8, 24) == [0, 0, 0]
def test_put(self): """Test put operation.""" value_list = [0, 6, 7, 0] value = big_endian_decode(value_list, WORD_SIZE) self.ram.put(5, value, 4 * WORD_SIZE) with raises(ValueError): self.ram.put(5, 2 ** WORD_SIZE, WORD_SIZE) self.ram.put(4, 4, WORD_SIZE) for i in range(5, 9): assert self.ram[i] == value_list[i - 5] self.ram = RandomAccessMemory(WORD_SIZE, 512, endianess="little") value = little_endian_decode(value_list, WORD_SIZE) self.ram.put(5, value, 4 * WORD_SIZE) for i in range(5, 9): assert self.ram[i] == value_list[i - 5]