diff options
Diffstat (limited to 'test/e2e/std_bump_alloc')
| -rw-r--r-- | test/e2e/std_bump_alloc/run_bump_alloc_overlap.atk16 | 14 | ||||
| -rw-r--r-- | test/e2e/std_bump_alloc/test_bump_alloc.py | 13 |
2 files changed, 27 insertions, 0 deletions
diff --git a/test/e2e/std_bump_alloc/run_bump_alloc_overlap.atk16 b/test/e2e/std_bump_alloc/run_bump_alloc_overlap.atk16 new file mode 100644 index 0000000..8dcc6fa --- /dev/null +++ b/test/e2e/std_bump_alloc/run_bump_alloc_overlap.atk16 @@ -0,0 +1,14 @@ +@include %bootstrap +@include %std_bump_alloc + +@label n + 0x8000 + +@label main + calli bump_reset + + ldi n RA ; allocate too many words + ldr RA RA + calli bump_alloc + + hlt diff --git a/test/e2e/std_bump_alloc/test_bump_alloc.py b/test/e2e/std_bump_alloc/test_bump_alloc.py index 717a122..b2274f8 100644 --- a/test/e2e/std_bump_alloc/test_bump_alloc.py +++ b/test/e2e/std_bump_alloc/test_bump_alloc.py @@ -20,3 +20,16 @@ def test_bump_alloc(): returned_value = machine.rg.value assert returned_value == heap_next + 1 + +def test_bump_alloc_overlap(): + machine = assemble_and_run_until_halted( + "test/e2e/std_bump_alloc/run_bump_alloc_overlap.atk16" + ) + + heap_next_p = 0xE7EF + heap_next = machine.mem_read(heap_next_p) + assert heap_next == heap_next_p - 1 # alloc failed because of overlap + # so pointer should not have moved + + returned_value = machine.rg.value + assert returned_value == 0 # returns 0 on failure |
