aboutsummaryrefslogtreecommitdiffstats
path: root/test-array2.c
diff options
context:
space:
mode:
Diffstat (limited to 'test-array2.c')
-rw-r--r--test-array2.c54
1 files changed, 54 insertions, 0 deletions
diff --git a/test-array2.c b/test-array2.c
new file mode 100644
index 0000000..98b0ef0
--- /dev/null
+++ b/test-array2.c
@@ -0,0 +1,54 @@
+/* vim: set sw=4 ts=4 sts=4 et: */
+#undef NDEBUG
+#define _POSIX_C_SOURCE 200809L
+#include <l4array2.h>
+
+#include <assert.h>
+#include <stdio.h>
+#include <string.h>
+
+void test_array2_op (void) {
+ LbsArray2* array2 = lbs_array2_new (sizeof (int), 5, 8);
+ int tc[5][8] = {
+ { 1, 2, 3, 4, 5, 6, 7, 8 },
+ { 9, 8, 7, 6, 5, 4, 3, 2 },
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 5, 5, 5, 5, 5, 5, 5, 5 },
+ { 1, 5, 7, 2, 8, 3, 9, 4 }
+ };
+ int tc_flat[5 * 8] = {
+ 1, 2, 3, 4, 5, 6, 7, 8,
+ 9, 8, 7, 6, 5, 4, 3, 2,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 5, 5, 5, 5, 5, 5, 5, 5,
+ 1, 5, 7, 2, 8, 3, 9, 4
+ };
+ int tc_buf[5 * 8];
+ const ssize_t tc_len = sizeof (int) * 5 * 8;
+
+ lbs_array2_ref (array2);
+ for (int i = 0; i < 5; i++) {
+ for (int j = 0; j < 8; j++) {
+ lbs_array2_v (array2, int, i, j) = tc[i][j];
+ }
+ }
+
+ lbs_array2_copy_out (array2, tc_buf);
+ assert (memcmp (tc_buf, tc_flat, tc_len) == 0);
+ lbs_array2_v (array2, int, 4, 7) = 80;
+ lbs_array2_v (array2, int, 0, 0) = 90;
+ lbs_array2_copy_in (array2, tc_flat);
+ assert (memcmp (tc_buf, lbs_array2_get_data (array2), tc_len) == 0);
+
+ assert (lbs_array2_get_ref_count (array2) == 2);
+ lbs_array2_unref (array2);
+ assert (lbs_array2_get_ref_count (array2) == 1);
+ lbs_array2_unref (array2);
+
+ printf ("%s => PASS!\n", __func__);
+}
+
+int main () {
+ test_array2_op ();
+ return 0;
+}