Example #1
0
    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))
Example #2
0
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]
Example #3
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]