aboutsummaryrefslogtreecommitdiffstats
path: root/test/e2e
diff options
context:
space:
mode:
authorJan Tuomi <jan@jantuomi.fi>2024-04-14 16:00:48 +0300
committerJan Tuomi <jan@jantuomi.fi>2024-04-14 16:00:48 +0300
commit2f69a9ac8c2de9d37248baa5c774c2813f070ba0 (patch)
treed3a9119133a4fd33b8ee435af688afd600ba0d53 /test/e2e
parent5f9b5cc1df8e0c55fd21e19f2255faace28e801f (diff)
Optimize override_mode in assembler, add more test cases
Diffstat (limited to 'test/e2e')
-rw-r--r--test/e2e/std_bump_alloc/run_bump_alloc_overlap.atk1614
-rw-r--r--test/e2e/std_bump_alloc/test_bump_alloc.py13
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