blob: e2b2e0c3fea578a137f373866f61289b73cb2f9b (
plain) (
blame)
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
104
105
106
107
108
|
#include "../src/tree.c"
#include "../src/testing.h"
static int
test_tree_new(void) {
int rc = -1;
const struct Tree *t = NULL;
test_start("tree_new()");
{
testing("simple allocation");
const size_t size = sizeof(long long);
if (tree_new(size, &t)) {
logerr("tree_new()");
goto out;
}
assert(t->value_size == size);
tree_free(&t);
test_ok();
}
rc = 0;
out:
if (t != NULL) {
tree_free(&t);
}
return rc;
}
static int
test_tree_free(void) {
int rc = -1;
const struct Tree *t = NULL;
test_start("tree_free()");
{
testing("*t becomes NULL again after tree_free(&t)");
assert(t == NULL);
if (tree_new(1U, &t)) {
logerr("tree_new()");
goto out;
}
assert(t != NULL);
tree_free(&t);
assert(t == NULL);
test_ok();
}
rc = 0;
out:
if (t != NULL) {
tree_free(&t);
}
return rc;
}
static void
test_tree_contains(void) {
const int y0 = 7;
const int n0 = 1;
const struct Tree root = {
.value = &y0,
.value_size = sizeof(int),
.left = NULL,
.right = NULL,
.height = 3U,
};
assert(tree_contains(&root, &y0));
assert(!tree_contains(&root, &n0));
}
int
main(void) {
int rc = -1;
if (test_tree_new()) {
logerr("test_tree_new()");
goto out;
}
if (test_tree_free()) {
logerr("test_tree_free()");
goto out;
}
test_tree_contains();
rc = 0;
out:
return !!rc;
}
|