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
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)
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)