예제 #1
0
def mem_cache_rwxs_read_test():
    mem = MockMemory()
    # build main mem contents
    mem.w8s(0x100, -42)
    assert mem.r8s(0x100) == -42
    mem.w16s(0x200, -0x1ead)
    assert mem.r16s(0x200) == -0x1ead
    mem.w32s(0x300, -0x2afebabe)
    assert mem.r32s(0x300) == -0x2afebabe
    mem.writes(0, 0x101, -43)
    assert mem.reads(0, 0x101) == -43
    mem.writes(1, 0x202, -0x1234)
    assert mem.reads(1, 0x202) == -0x1234
    mem.writes(2, 0x304, -0x11223344)
    assert mem.reads(2, 0x304) == -0x11223344
    # write to cache
    cmem = MemoryCache(0x100, 0x210)
    cmem.read_cache(mem)
    # check cache mem
    assert cmem.r8s(0x100) == -42
    assert cmem.r16s(0x200) == -0x1ead
    assert cmem.r32s(0x300) == -0x2afebabe
    assert cmem.reads(0, 0x101) == -43
    assert cmem.reads(1, 0x202) == -0x1234
    assert cmem.reads(2, 0x304) == -0x11223344
예제 #2
0
def mem_cache_rwxs_read_test():
  mem = MockMemory()
  # build main mem contents
  mem.w8s(0x100, -42)
  assert mem.r8s(0x100) == -42
  mem.w16s(0x200, -0x1ead)
  assert mem.r16s(0x200) == -0x1ead
  mem.w32s(0x300, -0x2afebabe)
  assert mem.r32s(0x300) == -0x2afebabe
  mem.writes(0, 0x101, -43)
  assert mem.reads(0, 0x101) == -43
  mem.writes(1, 0x202, -0x1234)
  assert mem.reads(1, 0x202) == -0x1234
  mem.writes(2, 0x304, -0x11223344)
  assert mem.reads(2, 0x304) == -0x11223344
  # write to cache
  cmem = MemoryCache(0x100, 0x210)
  cmem.read_cache(mem)
  # check cache mem
  assert cmem.r8s(0x100) == -42
  assert cmem.r16s(0x200) == -0x1ead
  assert cmem.r32s(0x300) == -0x2afebabe
  assert cmem.reads(0, 0x101) == -43
  assert cmem.reads(1, 0x202) == -0x1234
  assert cmem.reads(2, 0x304) == -0x11223344
예제 #3
0
def machine_mem_rws_test():
    mem = MockMemory()

    mem.w8s(0x100, 42)
    assert mem.r8s(0x100) == 42
    mem.w8s(0x100, -23)
    assert mem.r8s(0x100) == -23

    mem.w16s(0x200, 0x7EAD)
    assert mem.r16s(0x200) == 0x7EAD
    mem.w16s(0x200, -0x1000)
    assert mem.r16s(0x200) == -0x1000

    mem.w32s(0x300, 0x1AFEBABE)
    assert mem.r32s(0x300) == 0x1AFEBABE
    mem.w32s(0x300, -0xAFEBABE)
    assert mem.r32s(0x300) == -0xAFEBABE

    mem.writes(0, 0x101, -43)
    assert mem.reads(0, 0x101) == -43
    mem.writes(1, 0x202, -0x1234)
    assert mem.reads(1, 0x202) == -0x1234
    mem.writes(2, 0x304, -0x11223344)
    assert mem.reads(2, 0x304) == -0x11223344

    # invalid values
    with pytest.raises(struct.error):
        mem.w8s(0x100, 0x80)
    with pytest.raises(struct.error):
        mem.w8s(0x100, -0x81)
    # invalid values
    with pytest.raises(struct.error):
        mem.w16s(0x100, 0x8000)
    with pytest.raises(struct.error):
        mem.w16s(0x100, -0x8001)
    # invalid values
    with pytest.raises(struct.error):
        mem.w32s(0x100, 0x80000000)
    with pytest.raises(struct.error):
        mem.w32s(0x100, -0x80000001)
    # invalid type
    with pytest.raises(struct.error):
        mem.w8s(0x100, "hello")
    # invalid type
    with pytest.raises(struct.error):
        mem.w16s(0x100, "hello")
    # invalid type
    with pytest.raises(struct.error):
        mem.w32s(0x100, "hello")
    # invalid width
    with pytest.raises(ValueError):
        mem.writes(7, 0x202, 12)
    with pytest.raises(ValueError):
        mem.reads(7, 0x202)
예제 #4
0
def machine_mem_rws_test():
  mem = MockMemory()

  mem.w8s(0x100, 42)
  assert mem.r8s(0x100) == 42
  mem.w8s(0x100, -23)
  assert mem.r8s(0x100) == -23

  mem.w16s(0x200, 0x7ead)
  assert mem.r16s(0x200) == 0x7ead
  mem.w16s(0x200, -0x1000)
  assert mem.r16s(0x200) == -0x1000

  mem.w32s(0x300, 0x1afebabe)
  assert mem.r32s(0x300) == 0x1afebabe
  mem.w32s(0x300, -0xafebabe)
  assert mem.r32s(0x300) == -0xafebabe

  mem.writes(0, 0x101, -43)
  assert mem.reads(0, 0x101) == -43
  mem.writes(1, 0x202, -0x1234)
  assert mem.reads(1, 0x202) == -0x1234
  mem.writes(2, 0x304, -0x11223344)
  assert mem.reads(2, 0x304) == -0x11223344

  # invalid values
  with pytest.raises(struct.error):
    mem.w8s(0x100, 0x80)
  with pytest.raises(struct.error):
    mem.w8s(0x100, -0x81)
  # invalid values
  with pytest.raises(struct.error):
    mem.w16s(0x100, 0x8000)
  with pytest.raises(struct.error):
    mem.w16s(0x100, -0x8001)
  # invalid values
  with pytest.raises(struct.error):
    mem.w32s(0x100, 0x80000000)
  with pytest.raises(struct.error):
    mem.w32s(0x100, -0x80000001)
  # invalid type
  with pytest.raises(struct.error):
    mem.w8s(0x100, 'hello')
  # invalid type
  with pytest.raises(struct.error):
    mem.w16s(0x100, 'hello')
  # invalid type
  with pytest.raises(struct.error):
    mem.w32s(0x100, 'hello')
  # invalid width
  with pytest.raises(ValueError):
    mem.writes(7, 0x202, 12)
  with pytest.raises(ValueError):
    mem.reads(7, 0x202)