5 #include "test_macros.h"
8 main(int argc, char *argv[])
15 TEST_ASSERT(alloc1 = ckd_calloc(3*3*3, sizeof(*alloc1)));
16 TEST_ASSERT(alloc2 = ckd_calloc_2d(3, 3, sizeof(**alloc2)));
17 TEST_ASSERT(alloc3 = ckd_calloc_3d(3, 3, 3, sizeof(***alloc3)));
19 for (i = 0; i < 27; ++i) {
20 TEST_EQUAL(alloc1[i], 0);
23 for (i = 0; i < 27; ++i)
24 TEST_EQUAL(alloc1[i], i+1);
26 for (i = 0; i < 3; ++i) {
28 for (j = 0; j < 3; ++j) {
29 TEST_EQUAL(alloc2[i][j], 0);
30 alloc2[i][j] = i * 3 + j + 1;
33 /* Verify that row-major ordering is in use. */
34 for (i = 0; i < 9; ++i) {
35 TEST_EQUAL(alloc2[0][i], i+1);
36 TEST_EQUAL(alloc2[0][i], alloc1[i]);
38 for (i = 0; i < 3; ++i) {
40 for (j = 0; j < 3; ++j) {
41 TEST_EQUAL(alloc2[i][j], i * 3 + j + 1);
44 /* Now test alloc_ptr. */
46 alloc2 = ckd_alloc_2d_ptr(3, 3, alloc1, sizeof(*alloc1));
47 for (i = 0; i < 9; ++i) {
48 TEST_EQUAL(alloc2[0][i], i+1);
49 TEST_EQUAL(alloc2[0][i], alloc1[i]);
51 for (i = 0; i < 3; ++i) {
53 for (j = 0; j < 3; ++j) {
54 TEST_EQUAL(alloc2[i][j], i * 3 + j + 1);
57 ckd_free_2d_ptr(alloc2);
59 for (i = 0; i < 3; ++i) {
61 for (j = 0; j < 3; ++j) {
63 for (k = 0; k < 3; ++k) {
64 TEST_EQUAL(alloc3[i][j][k], 0);
65 alloc3[i][j][k] = i * 3 * 3 + j * 3 + k + 1;
69 /* Verify that row-major ordering is in use. */
70 for (i = 0; i < 27; ++i) {
71 TEST_EQUAL(alloc3[0][0][i], i+1);
72 TEST_EQUAL(alloc3[0][0][i], alloc1[i]);
74 for (i = 0; i < 3; ++i) {
76 for (j = 0; j < 3; ++j) {
78 for (k = 0; k < 3; ++k) {
79 TEST_EQUAL(alloc3[i][j][k], i * 3 * 3 + j * 3 + k + 1);
83 /* Now test alloc_ptr. */
85 alloc3 = ckd_alloc_3d_ptr(3, 3, 3, alloc1, sizeof(*alloc1));
86 for (i = 0; i < 27; ++i) {
87 TEST_EQUAL(alloc3[0][0][i], i+1);
88 TEST_EQUAL(alloc3[0][0][i], alloc1[i]);
90 for (i = 0; i < 3; ++i) {
92 for (j = 0; j < 3; ++j) {
94 for (k = 0; k < 3; ++k) {
95 TEST_EQUAL(alloc3[i][j][k], i * 3 * 3 + j * 3 + k + 1);
99 ckd_free_3d_ptr(alloc3);