diff options
| author | Tyge Løvset <[email protected]> | 2023-01-31 12:53:46 +0100 |
|---|---|---|
| committer | Tyge Løvset <[email protected]> | 2023-01-31 12:53:46 +0100 |
| commit | 5bbcae2a3add163ea3b7a91d65fda6836c18f410 (patch) | |
| tree | 304ab8ca8f632f56e53ee2bc568fb834da91b13c /misc/tests/cspan_test.c | |
| parent | 209bf743e0c1253a4bc81d2ffb6897f657a84c8a (diff) | |
| download | STC-modified-5bbcae2a3add163ea3b7a91d65fda6836c18f410.tar.gz STC-modified-5bbcae2a3add163ea3b7a91d65fda6836c18f410.zip | |
Updates, and prepare for the big unsigned ==> signed transformation.
Diffstat (limited to 'misc/tests/cspan_test.c')
| -rw-r--r-- | misc/tests/cspan_test.c | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/misc/tests/cspan_test.c b/misc/tests/cspan_test.c index 32634795..3f03ef0f 100644 --- a/misc/tests/cspan_test.c +++ b/misc/tests/cspan_test.c @@ -72,3 +72,56 @@ CTEST(cspan, slice2) { ASSERT_EQ(65112, sum); } } + + +#define i_type Tiles +#define i_val intspan3 +#include <stc/cstack.h> + +CTEST_FIXTURE(cspan_cube) { + cstack_int stack; + Tiles tiles; +}; + +CTEST_SETUP(cspan_cube) { + enum {TSIZE=4, CUBE=64, N=CUBE*CUBE*CUBE}; + + fix->stack = cstack_int_init(); + fix->tiles = Tiles_init(); + + cstack_int_reserve(&fix->stack, N); + c_FORRANGE (i, N) + cstack_int_push(&fix->stack, i+1); + + intspan3 ms3 = cspan_md(fix->stack.data, CUBE, CUBE, CUBE); + + c_FORRANGE (i, 0, ms3.dim[0], TSIZE) { + c_FORRANGE (j, 0, ms3.dim[1], TSIZE) { + c_FORRANGE (k, 0, ms3.dim[2], TSIZE) { + intspan3 tile = ms3; + cspan_slice(&tile, {i, i + TSIZE}, {j, j + TSIZE}, {k, k + TSIZE}); + Tiles_push(&fix->tiles, tile); + } + } + } +} + +// Optional teardown function for suite, called after every test in suite +CTEST_TEARDOWN(cspan_cube) { + cstack_int_drop(&fix->stack); + Tiles_drop(&fix->tiles); +} + + +CTEST_F(cspan_cube, slice3) { + intptr_t n = cstack_int_size(&fix->stack); + //printf("\ntiles: %zi, cells: %zi\n", Tiles_size(&fix->tiles), n); + + int64_t sum = 0; + // iterate each 3d tile in sequence + c_FOREACH (i, Tiles, fix->tiles) + c_FOREACH (t, intspan3, *i.ref) + sum += *t.ref; + + ASSERT_EQ(n*(n + 1)/2, sum); +} |
