-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtestlib.c
87 lines (75 loc) · 2.14 KB
/
testlib.c
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
#include <criterion/criterion.h>
#include <criterion/new/assert.h>
#include "scary.h"
Test(libscary, push_and_length) {
int32_t *a = scary_new(sizeof(int32_t));
cr_expect(eq(sz, 0, scary_length(a)));
int32_t l[] = { 1, -2, 3, -5, 7, -11 }, *p = l;
const size_t n = sizeof(l)/sizeof(*l);
for (size_t i = 0; i < n; i++)
scary_push_int32(&a, *p++);
cr_expect(eq(sz, n, scary_length(a)));
cr_expect(eq(i32, 1, a[0]));
cr_expect(eq(i32[n], l, a));
scary_free(a);
}
Test(libscary, push) {
int *a = scary_new(sizeof(int));
scary_push(&a, 42);
cr_expect(eq(sz, 1, scary_length(a)));
scary_free(a);
char *b = scary_new(sizeof(char));
char lb[] = { 'a', 'b' };
scary_push(&b, lb[0]);
scary_push(&b, lb[1]);
cr_expect(eq(sz, 2, scary_length(b)));
cr_expect(eq(chr, 'a', b[0]));
cr_expect(eq(chr, 'b', b[1]));
scary_free(b);
}
Test(libscary, push_ptr) {
int64_t **a = scary_new(sizeof(int64_t *));
int64_t la[] = { 1, -2 };
scary_push(&a, &la[0]);
scary_push(&a, &la[1]);
cr_expect(eq(sz, 2, scary_length(a)));
cr_expect(eq(ptr, &la[0], a[0]));
cr_expect(eq(ptr, &la[1], a[1]));
scary_free(a);
char **b = scary_new(sizeof(char *));
char *l[] = { "foo", "bar" };
scary_push(&b, l[0]);
scary_push(&b, l[1]);
cr_expect(eq(sz, 2, scary_length(b)));
cr_expect(eq(str, "foo", b[0]));
cr_expect(eq(str, "bar", b[1]));
scary_free(b);
}
Test(libscary, pop) {
int *a = scary_new(sizeof(int));
scary_push(&a, 42);
scary_push(&a, -42);
scary_pop(a);
cr_expect(eq(sz, 1, scary_length(a)));
scary_free(a);
}
Test(libscary, dup) {
int *a = scary_new(sizeof(int));
scary_push(&a, 42);
scary_push(&a, -42);
int *b = scary_dup(a);
cr_expect(ne(ptr, a, b));
cr_expect(eq(sz, scary_length(a), scary_length(b)));
cr_expect(eq(sz, 2, scary_length(b)));
cr_expect(eq(int[2], a, b));
scary_free(b);
scary_free(a);
}
Test(libscary, free_null) {
scary_free(NULL);
int *a = scary_new(sizeof(int));
scary_push(&a, 42);
scary_push(&a, -42);
scary_free(a);
scary_free(NULL);
}