MCPcopy Create free account
hub / github.com/ElementsProject/lightning / main

Function main

ccan/ccan/take/test/run.c:31–102  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

29}
30
31int main(void)
32{
33 const char *p = "hi";
34
35 plan_tests(43);
36
37 /* We can take NULL. */
38 ok1(take(NULL) == NULL);
39 ok1(is_taken(NULL));
40 ok1(taken_any());
41 ok1(taken(NULL)); /* Undoes take() */
42 ok1(!is_taken(NULL));
43 ok1(!taken(NULL));
44
45 /* We can take NULL twice! */
46 ok1(take(NULL) == NULL);
47 ok1(take(NULL) == NULL);
48 ok1(is_taken(NULL));
49 ok1(taken_any());
50 ok1(taken(NULL)); /* Undoes take() */
51 ok1(is_taken(NULL));
52 ok1(taken_any());
53 ok1(taken(NULL)); /* Undoes take() */
54 ok1(!is_taken(NULL));
55 ok1(!taken(NULL));
56 ok1(!taken_any());
57
58 /* We can take a real pointer. */
59 ok1(take(p) == p);
60 ok1(is_taken(p));
61 ok1(taken_any());
62 ok1(taken(p)); /* Undoes take() */
63 ok1(!is_taken(p));
64 ok1(!taken(p));
65 ok1(!taken_any());
66
67 /* Force a failure. */
68 ok1(!my_allocfail_called);
69 ok1(take(p) == p);
70 ok1(take(p+1) == p+1);
71
72 fail_realloc = true;
73 /* Without a handler, must pass through and leak. */
74 ok1(take(p+2) == p+2);
75 ok1(!taken(p+2));
76
77 /* Now, with a handler. */
78 take_allocfail(my_allocfail);
79 ok1(take(p+2) == NULL);
80
81 ok1(my_allocfail_called == 1);
82 ok1(taken_any());
83 ok1(taken(p));
84 ok1(taken(p+1));
85 ok1(is_taken(NULL));
86 ok1(taken(NULL));
87 ok1(!taken(NULL));
88 ok1(!taken_any());

Callers

nothing calls this directly

Calls 6

is_takenFunction · 0.85
taken_anyFunction · 0.85
takenFunction · 0.85
take_allocfailFunction · 0.85
recurseFunction · 0.85
take_cleanupFunction · 0.85

Tested by

no test coverage detected