File: test_ckd_alloc.c

package info (click to toggle)
sphinxbase 0.8%2B5prealpha-3
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 10,592 kB
  • ctags: 3,296
  • sloc: ansic: 29,950; sh: 11,802; makefile: 679; python: 335; perl: 121; yacc: 93; lex: 50
file content (103 lines) | stat: -rw-r--r-- 2,225 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
#include <stdio.h>

#include <ckd_alloc.h>

#include "test_macros.h"

int
main(int argc, char *argv[])
{
	int *alloc1;
	int **alloc2;
	int ***alloc3;
	int i;

	TEST_ASSERT(alloc1 = ckd_calloc(3*3*3, sizeof(*alloc1)));
	TEST_ASSERT(alloc2 = ckd_calloc_2d(3, 3, sizeof(**alloc2)));
	TEST_ASSERT(alloc3 = ckd_calloc_3d(3, 3, 3, sizeof(***alloc3)));

	for (i = 0; i < 27; ++i) {
		TEST_EQUAL(alloc1[i], 0);
		alloc1[i] = i + 1;
	}
	for (i = 0; i < 27; ++i)
		TEST_EQUAL(alloc1[i], i+1);

	for (i = 0; i < 3; ++i) {
		int j;
		for (j = 0; j < 3; ++j) {
			TEST_EQUAL(alloc2[i][j], 0);
			alloc2[i][j] = i * 3 + j + 1;
		}
	}
	/* Verify that row-major ordering is in use. */
	for (i = 0; i < 9; ++i) {
		TEST_EQUAL(alloc2[0][i], i+1);
		TEST_EQUAL(alloc2[0][i], alloc1[i]);
	}
	for (i = 0; i < 3; ++i) {
		int j;
		for (j = 0; j < 3; ++j) {
			TEST_EQUAL(alloc2[i][j], i * 3 + j + 1);
		}
	}
	/* Now test alloc_ptr. */
	ckd_free_2d(alloc2);
	alloc2 = ckd_alloc_2d_ptr(3, 3, alloc1, sizeof(*alloc1));
	for (i = 0; i < 9; ++i) {
		TEST_EQUAL(alloc2[0][i], i+1);
		TEST_EQUAL(alloc2[0][i], alloc1[i]);
	}
	for (i = 0; i < 3; ++i) {
		int j;
		for (j = 0; j < 3; ++j) {
			TEST_EQUAL(alloc2[i][j], i * 3 + j + 1);
		}
	}
	ckd_free_2d_ptr(alloc2);

	for (i = 0; i < 3; ++i) {
		int j;
		for (j = 0; j < 3; ++j) {
			int k;
			for (k = 0; k < 3; ++k) {
				TEST_EQUAL(alloc3[i][j][k], 0);
				alloc3[i][j][k] = i * 3 * 3 + j * 3 + k + 1;
			}
		}
	}
	/* Verify that row-major ordering is in use. */
	for (i = 0; i < 27; ++i) {
		TEST_EQUAL(alloc3[0][0][i], i+1);
		TEST_EQUAL(alloc3[0][0][i], alloc1[i]);
	}
	for (i = 0; i < 3; ++i) {
		int j;
		for (j = 0; j < 3; ++j) {
			int k;
			for (k = 0; k < 3; ++k) {
				TEST_EQUAL(alloc3[i][j][k], i * 3 * 3 + j * 3 + k + 1);
			}
		}
	}
	/* Now test alloc_ptr. */
	ckd_free_3d(alloc3);
	alloc3 = ckd_alloc_3d_ptr(3, 3, 3, alloc1, sizeof(*alloc1));
	for (i = 0; i < 27; ++i) {
		TEST_EQUAL(alloc3[0][0][i], i+1);
		TEST_EQUAL(alloc3[0][0][i], alloc1[i]);
	}
	for (i = 0; i < 3; ++i) {
		int j;
		for (j = 0; j < 3; ++j) {
			int k;
			for (k = 0; k < 3; ++k) {
				TEST_EQUAL(alloc3[i][j][k], i * 3 * 3 + j * 3 + k + 1);
			}
		}
	}
	ckd_free_3d_ptr(alloc3);
	ckd_free(alloc1);

	return 0;
}