summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorAndrew Opalach <andrew@akon.city> 2025-01-01 14:03:40 -0500
committerAndrew Opalach <andrew@akon.city> 2025-01-01 14:03:40 -0500
commit9532606e6bc39ffe5128cec60a762545e4550052 (patch)
tree797be586ca8441f1ce842ef2e22c09c235a36baa /tests
parent539b02f373b271ccf547f184321e6b3295d9008f (diff)
downloadlibalabaster-9532606e6bc39ffe5128cec60a762545e4550052.tar.gz
libalabaster-9532606e6bc39ffe5128cec60a762545e4550052.tar.bz2
libalabaster-9532606e6bc39ffe5128cec60a762545e4550052.zip
array: Add offset() to address the data pointer
Signed-off-by: Andrew Opalach <andrew@akon.city>
Diffstat (limited to 'tests')
-rw-r--r--tests/lib.c40
1 files changed, 40 insertions, 0 deletions
diff --git a/tests/lib.c b/tests/lib.c
index 64f886d..0923cf1 100644
--- a/tests/lib.c
+++ b/tests/lib.c
@@ -1,6 +1,12 @@
+#include <al/array.h>
#include <al/test.h>
+#include <al/lib.h>
#include <al/random.h>
+struct test_t {
+ u32 d;
+};
+
static bool lib_test_add_wrap(void)
{
AL_TEST_START("lib_add_wrap");
@@ -30,6 +36,39 @@ static bool lib_test_add_wrap(void)
AL_TEST_END();
}
+static bool lib_test_offset_vs_at_and_ref(void)
+{
+ AL_TEST_START("lib_offset_vs_at_and_ref");
+
+ array(struct test_t *) ar;
+ al_array_init(ar);
+
+ for (u32 i = 0; i < 10; i++) {
+ if (i == 4) {
+ al_array_push(ar, NULL);
+ } else {
+ al_array_push(ar, al_alloc_object(struct test_t));
+ }
+ }
+
+ AL_TEST_EQ(&al_array_at(ar, 2), al_array_offset(ar, 2), ptr);
+ AL_TEST_EQ(&al_array_at(ar, 3), al_array_offset(ar, 3), ptr);
+ AL_TEST_NEQ(*&al_array_at(ar, 3), NULL, ptr);
+ AL_TEST_EQ(&al_array_at(ar, 4), al_array_offset(ar, 4), ptr);
+ AL_TEST_EQ(*&al_array_at(ar, 4), *al_array_offset(ar, 4), ptr);
+ AL_TEST_NEQ(*&al_array_at(ar, 4), *al_array_offset(ar, 2), ptr);
+ AL_TEST_EQ(*&al_array_at(ar, 4), NULL, ptr);
+ AL_TEST_EQ(&al_array_at(ar, 5), al_array_offset(ar, 5), ptr);
+
+ for (u32 i = 0; i < 10; i++) {
+ if (i != 4) {
+ al_free(al_array_at(ar, i));
+ }
+ }
+
+ AL_TEST_END();
+}
+
/*
static bool lib_test_add_wrap_atomic(void)
{
@@ -63,6 +102,7 @@ bool lib_tests_run(void)
AL_TEST_START_GROUP("lib");
AL_TEST_RUN(lib_test_add_wrap);
+ AL_TEST_RUN(lib_test_offset_vs_at_and_ref);
//AL_TEST_RUN(lib_test_add_wrap_atomic);
AL_TEST_END_GROUP();