]> git.ozlabs.org Git - ccan/blob - ccan/str/test/run-STR_MAX_CHARS.c
str: add STR_MAX_CHARS().
[ccan] / ccan / str / test / run-STR_MAX_CHARS.c
1 #include <ccan/str/str.h>
2 #include <stdlib.h>
3 #include <stdio.h>
4 #include <ccan/tap/tap.h>
5 #include <stdint.h>
6
7 int main(int argc, char *argv[])
8 {
9         char str[1000];
10         struct {
11                 uint8_t u1byte;
12                 int8_t s1byte;
13                 uint16_t u2byte;
14                 int16_t s2byte;
15                 uint32_t u4byte;
16                 int32_t s4byte;
17                 uint64_t u8byte;
18                 int64_t s8byte;
19                 void *ptr;
20         } types;
21
22         plan_tests(13);
23
24         memset(&types, 0xFF, sizeof(types));
25
26         /* Hex versions */
27         sprintf(str, "0x%llx", (unsigned long long)types.u1byte);
28         ok1(strlen(str) < STR_MAX_CHARS(types.u1byte));
29         sprintf(str, "0x%llx", (unsigned long long)types.u2byte);
30         ok1(strlen(str) < STR_MAX_CHARS(types.u2byte));
31         sprintf(str, "0x%llx", (unsigned long long)types.u4byte);
32         ok1(strlen(str) < STR_MAX_CHARS(types.u4byte));
33         sprintf(str, "0x%llx", (unsigned long long)types.u8byte);
34         ok1(strlen(str) < STR_MAX_CHARS(types.u8byte));
35
36         /* Decimal versions */
37         sprintf(str, "%u", types.u1byte);
38         ok1(strlen(str) < STR_MAX_CHARS(types.u1byte));
39         sprintf(str, "%d", types.s1byte);
40         ok1(strlen(str) < STR_MAX_CHARS(types.s1byte));
41         sprintf(str, "%u", types.u2byte);
42         ok1(strlen(str) < STR_MAX_CHARS(types.u2byte));
43         sprintf(str, "%d", types.s2byte);
44         ok1(strlen(str) < STR_MAX_CHARS(types.s2byte));
45         sprintf(str, "%u", types.u4byte);
46         ok1(strlen(str) < STR_MAX_CHARS(types.u4byte));
47         sprintf(str, "%d", types.s4byte);
48         ok1(strlen(str) < STR_MAX_CHARS(types.s4byte));
49         sprintf(str, "%llu", (unsigned long long)types.u8byte);
50         ok1(strlen(str) < STR_MAX_CHARS(types.u8byte));
51         sprintf(str, "%lld", (long long)types.s8byte);
52         ok1(strlen(str) < STR_MAX_CHARS(types.s8byte));
53
54         /* Pointer version. */
55         sprintf(str, "%p", types.ptr);
56         ok1(strlen(str) < STR_MAX_CHARS(types.ptr));
57
58         return exit_status();
59 }