|
|
|
@ -209,3 +209,74 @@ TEST_CASE("HostMemory: Partial sparse middle unmap and check bindings", "[common |
|
|
|
REQUIRE(ptr[0x0000] == 19); |
|
|
|
REQUIRE(ptr[0x3fff] == 12); |
|
|
|
} |
|
|
|
|
|
|
|
TEST_CASE("HostMemory: Nieche allocation", "[common]") { |
|
|
|
HostMemory mem(BACKING_SIZE, VIRTUAL_SIZE); |
|
|
|
REQUIRE(mem.BackingBasePointer() != nullptr); |
|
|
|
mem.Map(0x0000, 0, 0x20000, PERMS, HEAP); |
|
|
|
mem.Unmap(0x0000, 0x4000, HEAP); |
|
|
|
mem.Map(0x1000, 0, 0x2000, PERMS, HEAP); |
|
|
|
mem.Map(0x3000, 0, 0x1000, PERMS, HEAP); |
|
|
|
mem.Map(0, 0, 0x1000, PERMS, HEAP); |
|
|
|
} |
|
|
|
|
|
|
|
TEST_CASE("HostMemory: Full unmap", "[common]") { |
|
|
|
HostMemory mem(BACKING_SIZE, VIRTUAL_SIZE); |
|
|
|
REQUIRE(mem.BackingBasePointer() != nullptr); |
|
|
|
mem.Map(0x8000, 0, 0x4000, PERMS, HEAP); |
|
|
|
mem.Unmap(0x8000, 0x4000, HEAP); |
|
|
|
mem.Map(0x6000, 0, 0x16000, PERMS, HEAP); |
|
|
|
} |
|
|
|
|
|
|
|
TEST_CASE("HostMemory: Right out of bounds unmap", "[common]") { |
|
|
|
HostMemory mem(BACKING_SIZE, VIRTUAL_SIZE); |
|
|
|
REQUIRE(mem.BackingBasePointer() != nullptr); |
|
|
|
mem.Map(0x0000, 0, 0x4000, PERMS, HEAP); |
|
|
|
mem.Unmap(0x2000, 0x4000, HEAP); |
|
|
|
mem.Map(0x2000, 0x80000, 0x4000, PERMS, HEAP); |
|
|
|
} |
|
|
|
|
|
|
|
TEST_CASE("HostMemory: Left out of bounds unmap", "[common]") { |
|
|
|
HostMemory mem(BACKING_SIZE, VIRTUAL_SIZE); |
|
|
|
REQUIRE(mem.BackingBasePointer() != nullptr); |
|
|
|
mem.Map(0x8000, 0, 0x4000, PERMS, HEAP); |
|
|
|
mem.Unmap(0x6000, 0x4000, HEAP); |
|
|
|
mem.Map(0x8000, 0, 0x2000, PERMS, HEAP); |
|
|
|
} |
|
|
|
|
|
|
|
TEST_CASE("HostMemory: Multiple placeholder unmap", "[common]") { |
|
|
|
HostMemory mem(BACKING_SIZE, VIRTUAL_SIZE); |
|
|
|
REQUIRE(mem.BackingBasePointer() != nullptr); |
|
|
|
mem.Map(0x0000, 0, 0x4000, PERMS, HEAP); |
|
|
|
mem.Map(0x4000, 0, 0x1b000, PERMS, HEAP); |
|
|
|
mem.Unmap(0x3000, 0x1c000, HEAP); |
|
|
|
mem.Map(0x3000, 0, 0x20000, PERMS, HEAP); |
|
|
|
} |
|
|
|
|
|
|
|
TEST_CASE("HostMemory: Unmap between placeholders", "[common]") { |
|
|
|
HostMemory mem(BACKING_SIZE, VIRTUAL_SIZE); |
|
|
|
REQUIRE(mem.BackingBasePointer() != nullptr); |
|
|
|
mem.Map(0x0000, 0, 0x4000, PERMS, HEAP); |
|
|
|
mem.Map(0x4000, 0, 0x4000, PERMS, HEAP); |
|
|
|
mem.Unmap(0x2000, 0x4000, HEAP); |
|
|
|
mem.Map(0x2000, 0, 0x4000, PERMS, HEAP); |
|
|
|
} |
|
|
|
|
|
|
|
TEST_CASE("HostMemory: Unmap to origin", "[common]") { |
|
|
|
HostMemory mem(BACKING_SIZE, VIRTUAL_SIZE); |
|
|
|
REQUIRE(mem.BackingBasePointer() != nullptr); |
|
|
|
mem.Map(0x4000, 0, 0x4000, PERMS, HEAP); |
|
|
|
mem.Map(0x8000, 0, 0x4000, PERMS, HEAP); |
|
|
|
mem.Unmap(0x4000, 0x4000, HEAP); |
|
|
|
mem.Map(0, 0, 0x4000, PERMS, HEAP); |
|
|
|
mem.Map(0x4000, 0, 0x4000, PERMS, HEAP); |
|
|
|
} |
|
|
|
|
|
|
|
TEST_CASE("HostMemory: Unmap to right", "[common]") { |
|
|
|
HostMemory mem(BACKING_SIZE, VIRTUAL_SIZE); |
|
|
|
REQUIRE(mem.BackingBasePointer() != nullptr); |
|
|
|
mem.Map(0x4000, 0, 0x4000, PERMS, HEAP); |
|
|
|
mem.Map(0x8000, 0, 0x4000, PERMS, HEAP); |
|
|
|
mem.Unmap(0x8000, 0x4000, HEAP); |
|
|
|
mem.Map(0x8000, 0, 0x4000, PERMS, HEAP); |
|
|
|
} |