diff options
| author | eunhhu <[email protected]> | 2026-10-05 07:03:11 +0100 |
|---|---|---|
| committer | eunhhu <[email protected]> | 2026-10-05 07:03:11 +0100 |
| commit | 71f1de8416a01ce6305ec9c5ed29895f4344886b (patch) | |
| tree | d6bbbd43bf469cf7488fd9ae071bab366d5887ba /core/test-module.c | |
| parent | 07791a8b9f9c25e83ef849e1cea431ed25be7553 (diff) | |
| download | pure-71f1de8416a01ce6305ec9c5ed29895f4344886b.tar.gz pure-71f1de8416a01ce6305ec9c5ed29895f4344886b.zip | |
Share an event's empty list as it is: a snapshot made every event's lists trees for the next event (021)
Diffstat (limited to 'core/test-module.c')
| -rw-r--r-- | core/test-module.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/core/test-module.c b/core/test-module.c index f76c871..a509349 100644 --- a/core/test-module.c +++ b/core/test-module.c @@ -1483,6 +1483,24 @@ static void arrays_equivalence(void) { pure_list_free(t); } CHECK(forms[0] > 10000 && forms[1] > 10000 && forms[2] > 10000 && conversions > 100); + /* A snapshot shares every list: an event's, empty between events, stays in arrays; one with items is a tree for its copy. */ + { + PureList *list = pure_list_new(2, fields); + PureRetired retired = {0}; + CHECK(list && pure_list_arrays(list)); + PureList *copy = pure_list_share(list, &retired, 1); + CHECK(copy && pure_list_count(copy) == 0 && pure_list_form(list) == 1); + pure_list_free(copy); + for (unsigned i = 0; i < 100; ++i) + CHECK(pure_list_insert(list, i, (PureCell[]){{.num = i}, {.size = 0}}, NULL) == PURE_OK); + CHECK((copy = pure_list_share(list, &retired, 2)) && pure_list_form(list) == 0 && pure_list_count(copy) == 100); + CHECK(pure_list_get(copy, 99, 0).num == 99); + pure_list_free(copy); + pure_list_clear(list); + CHECK(pure_list_form(list) == 1); /* arrays again, the next event */ + pure_list_free(list); + pure_retired_free(&retired); + } printf("{\"arrays\":{\"steps\":%zu,\"tree\":%zu,\"flat\":%zu,\"dense\":%zu,\"conversions\":%zu}}\n", steps, forms[0], forms[1], forms[2], conversions); } |
