Initial import to Tizen
[profile/ivi/sphinxbase.git] / test / unit / test_alloc / test_ckd_alloc.c
1 #include <stdio.h>
2
3 #include <ckd_alloc.h>
4
5 #include "test_macros.h"
6
7 int
8 main(int argc, char *argv[])
9 {
10         int *alloc1;
11         int **alloc2;
12         int ***alloc3;
13         int i;
14
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)));
18
19         for (i = 0; i < 27; ++i) {
20                 TEST_EQUAL(alloc1[i], 0);
21                 alloc1[i] = i + 1;
22         }
23         for (i = 0; i < 27; ++i)
24                 TEST_EQUAL(alloc1[i], i+1);
25
26         for (i = 0; i < 3; ++i) {
27                 int j;
28                 for (j = 0; j < 3; ++j) {
29                         TEST_EQUAL(alloc2[i][j], 0);
30                         alloc2[i][j] = i * 3 + j + 1;
31                 }
32         }
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]);
37         }
38         for (i = 0; i < 3; ++i) {
39                 int j;
40                 for (j = 0; j < 3; ++j) {
41                         TEST_EQUAL(alloc2[i][j], i * 3 + j + 1);
42                 }
43         }
44         /* Now test alloc_ptr. */
45         ckd_free_2d(alloc2);
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]);
50         }
51         for (i = 0; i < 3; ++i) {
52                 int j;
53                 for (j = 0; j < 3; ++j) {
54                         TEST_EQUAL(alloc2[i][j], i * 3 + j + 1);
55                 }
56         }
57         ckd_free_2d_ptr(alloc2);
58
59         for (i = 0; i < 3; ++i) {
60                 int j;
61                 for (j = 0; j < 3; ++j) {
62                         int k;
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;
66                         }
67                 }
68         }
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]);
73         }
74         for (i = 0; i < 3; ++i) {
75                 int j;
76                 for (j = 0; j < 3; ++j) {
77                         int k;
78                         for (k = 0; k < 3; ++k) {
79                                 TEST_EQUAL(alloc3[i][j][k], i * 3 * 3 + j * 3 + k + 1);
80                         }
81                 }
82         }
83         /* Now test alloc_ptr. */
84         ckd_free_3d(alloc3);
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]);
89         }
90         for (i = 0; i < 3; ++i) {
91                 int j;
92                 for (j = 0; j < 3; ++j) {
93                         int k;
94                         for (k = 0; k < 3; ++k) {
95                                 TEST_EQUAL(alloc3[i][j][k], i * 3 * 3 + j * 3 + k + 1);
96                         }
97                 }
98         }
99         ckd_free_3d_ptr(alloc3);
100         ckd_free(alloc1);
101
102         return 0;
103 }