Files
l2/tests/arr_dynamic.sl

100 lines
2.0 KiB
Plaintext
Raw Normal View History

2026-01-08 18:34:34 +01:00
import ../stdlib/stdlib.sl
import ../stdlib/io.sl
import ../stdlib/arr.sl
word main
2026-02-18 12:22:16 +01:00
# arr_new / arr_len / arr_cap / arr_data
2026-01-08 18:34:34 +01:00
0 arr_new
2026-02-18 12:22:16 +01:00
dup arr_len puti cr
2026-01-08 18:34:34 +01:00
dup arr_cap puti cr
2026-02-18 12:22:16 +01:00
dup arr_data over 24 + == puti cr
2026-01-08 18:34:34 +01:00
2026-02-18 12:22:16 +01:00
# arr_push
2026-02-19 16:14:41 +01:00
dup 10 arr_push
dup 20 arr_push
dup 30 arr_push
2026-01-08 18:34:34 +01:00
2026-02-18 12:22:16 +01:00
# arr_len / arr_cap after growth
2026-01-08 18:34:34 +01:00
dup arr_len puti cr
dup arr_cap puti cr
2026-02-18 12:22:16 +01:00
# arr_get
2026-02-19 16:14:41 +01:00
dup 0 arr_get puti cr
dup 1 arr_get puti cr
dup 2 arr_get puti cr
2026-02-18 12:22:16 +01:00
# arr_set
2026-02-19 16:14:41 +01:00
dup 99 1 arr_set
dup 1 arr_get puti cr
2026-02-18 12:22:16 +01:00
# arr_reserve (with len > 0 so element copy path is exercised)
2026-02-19 16:14:41 +01:00
dup 8 arr_reserve
2026-02-18 12:22:16 +01:00
dup arr_cap puti cr
dup arr_len puti cr
2026-02-19 16:14:41 +01:00
dup 0 arr_get puti cr
dup 1 arr_get puti cr
dup 2 arr_get puti cr
2026-02-18 12:22:16 +01:00
# arr_pop (including empty pop)
arr_pop puti cr
arr_pop puti cr
arr_pop puti cr
arr_pop puti cr
dup arr_len puti cr
arr_free
2026-01-08 18:34:34 +01:00
2026-02-18 12:22:16 +01:00
# arr_to_dyn (convert std list to dynamic array)
[ 7 8 9 ] dup arr_to_dyn
dup arr_len puti cr
dup arr_cap puti cr
2026-02-19 16:14:41 +01:00
dup 0 arr_get puti cr
dup 1 arr_get puti cr
dup 2 arr_get puti cr
2026-01-08 18:34:34 +01:00
arr_free
2026-02-18 12:22:16 +01:00
# free list allocation: bytes = (len + 1) * 8
dup @ 1 + 8 * free
2026-02-18 16:05:48 +01:00
# dyn_arr_sorted (copy) should not mutate source
5 arr_new
2026-02-19 16:14:41 +01:00
dup 3 arr_push
dup 1 arr_push
dup 2 arr_push
2026-02-18 16:05:48 +01:00
dup dyn_arr_sorted
2026-02-19 16:14:41 +01:00
dup 0 arr_get puti cr
dup 1 arr_get puti cr
dup 2 arr_get puti cr
2026-02-18 16:05:48 +01:00
arr_free
2026-02-19 16:14:41 +01:00
dup 0 arr_get puti cr
dup 1 arr_get puti cr
dup 2 arr_get puti cr
2026-02-18 16:05:48 +01:00
# dyn_arr_sort (alias) sorts in place
dyn_arr_sort
2026-02-19 16:14:41 +01:00
dup 0 arr_get puti cr
dup 1 arr_get puti cr
dup 2 arr_get puti cr
2026-02-18 16:05:48 +01:00
arr_free
# dyn_arr_sorted (alias) returns a sorted copy
5 arr_new
2026-02-19 16:14:41 +01:00
dup 4 arr_push
dup 9 arr_push
dup 6 arr_push
2026-02-18 16:05:48 +01:00
dup dyn_arr_sorted
2026-02-19 16:14:41 +01:00
dup 0 arr_get puti cr
dup 1 arr_get puti cr
dup 2 arr_get puti cr
2026-02-18 16:05:48 +01:00
arr_free
2026-02-19 16:14:41 +01:00
dup 0 arr_get puti cr
dup 1 arr_get puti cr
dup 2 arr_get puti cr
2026-02-18 16:05:48 +01:00
arr_free
2026-01-08 18:34:34 +01:00
end