Ejemplo n.º 1
0
def test_write_value_invalid_length():
    buf = RawBuffer(FakeCPU())
    buf.write_value(0, 4, 'descr1', 'one')
    with py.test.raises(InvalidRawWrite):
        buf.write_value(0, 5, 'descr1', 'two')
    with py.test.raises(InvalidRawWrite):
        buf.write_value(0, 4, 'descr2', 'two')
Ejemplo n.º 2
0
 def __init__(self, cpu, logops, size, keybox, source_op):
     AbstractVirtualValue.__init__(self, keybox, source_op)
     # note that size is unused, because we assume that the buffer is big
     # enough to write/read everything we need. If it's not, it's undefined
     # behavior anyway, although in theory we could probably detect such
     # cases here
     self.size = size
     self.buffer = RawBuffer(cpu, logops)
Ejemplo n.º 3
0
def test_write_value_update():
    buf = RawBuffer(FakeCPU())
    buf.write_value(0, 4, 'descr', 'one')
    buf.write_value(4, 2, 'descr', 'two')
    buf.write_value(0, 4, 'descr', 'ONE')
    assert buf._get_memory() == [
        (0, 4, 'descr', 'ONE'),
        (4, 2, 'descr', 'two'),
    ]
Ejemplo n.º 4
0
def test_read_value():
    buf = RawBuffer(FakeCPU())
    buf.write_value(0, 4, 'descr', 'one')
    buf.write_value(4, 4, 'descr', 'two')
    assert buf.read_value(0, 4, 'descr') == 'one'
    assert buf.read_value(4, 4, 'descr') == 'two'
    with py.test.raises(InvalidRawRead):
        buf.read_value(0, 2, 'descr')
    with py.test.raises(InvalidRawRead):
        buf.read_value(8, 2, 'descr')
    with py.test.raises(InvalidRawRead):
        buf.read_value(0, 4, 'another descr')
Ejemplo n.º 5
0
def test_write_value():
    buf = RawBuffer(FakeCPU())
    buf.write_value(8, 4, 'descr3', 'three')
    buf.write_value(0, 4, 'descr1', 'one')
    buf.write_value(4, 2, 'descr2', 'two')
    buf.write_value(12, 2, 'descr4', 'four')
    assert buf._get_memory() == [
        (0, 4, 'descr1', 'one'),
        (4, 2, 'descr2', 'two'),
        (8, 4, 'descr3', 'three'),
        (12, 2, 'descr4', 'four'),
    ]
Ejemplo n.º 6
0
def test_unpack_descrs():
    ArrayS_8_1 = object()
    ArrayS_8_2 = object()
    ArrayU_8 = object()

    class FakeCPU(object):
        def unpack_arraydescr_size(self, descr):
            if descr in (ArrayS_8_1, ArrayS_8_2):
                return 0, 8, True
            return 0, 8, False

    buf = RawBuffer(FakeCPU())
    buf.write_value(0, 4, ArrayS_8_1, 'one')
    assert buf.read_value(0, 4, ArrayS_8_1) == 'one'
    assert buf.read_value(0, 4,
                          ArrayS_8_2) == 'one'  # with a non-identical descr
    #
    buf.write_value(0, 4, ArrayS_8_2, 'two')  # with a non-identical descr
    assert buf.read_value(0, 4, ArrayS_8_1) == 'two'
    #
    with py.test.raises(InvalidRawRead):
        buf.read_value(0, 4, ArrayU_8)
    with py.test.raises(InvalidRawWrite):
        buf.write_value(0, 4, ArrayU_8, 'three')
Ejemplo n.º 7
0
 def __init__(self, cpu, size=-1):
     self.size = size
     if self.size != -1:
         self.buffer = RawBuffer(cpu, None)
Ejemplo n.º 8
0
def test_write_value_overlapping_prev():
    buf = RawBuffer(FakeCPU())
    buf.write_value(0, 4, 'descr', 'one')
    with py.test.raises(InvalidRawWrite):
        buf.write_value(2, 1, 'descr', 'two')
Ejemplo n.º 9
0
def test_write_value_overlapping_next():
    buf = RawBuffer(FakeCPU())
    buf.write_value(0, 4, 'descr', 'one')
    buf.write_value(6, 4, 'descr', 'two')
    with py.test.raises(InvalidRawWrite):
        buf.write_value(4, 4, 'descr', 'three')