aboutsummaryrefslogtreecommitdiff
path: root/ccan/str/test/run-STR_MAX_CHARS.c
blob: ae6969c7b07c63bcfd7c7c4c83972398f25f8680 (plain)
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
#include <ccan/str/str.h>
#include <stdlib.h>
#include <stdio.h>
#include <ccan/tap/tap.h>
#include <stdint.h>

int main(int argc, char *argv[])
{
	char str[1000];
	struct {
		uint8_t u1byte;
		int8_t s1byte;
		uint16_t u2byte;
		int16_t s2byte;
		uint32_t u4byte;
		int32_t s4byte;
		uint64_t u8byte;
		int64_t s8byte;
		void *ptr;
	} types;

	plan_tests(13);

	memset(&types, 0xFF, sizeof(types));

	/* Hex versions */
	sprintf(str, "0x%llx", (unsigned long long)types.u1byte);
	ok1(strlen(str) < STR_MAX_CHARS(types.u1byte));
	sprintf(str, "0x%llx", (unsigned long long)types.u2byte);
	ok1(strlen(str) < STR_MAX_CHARS(types.u2byte));
	sprintf(str, "0x%llx", (unsigned long long)types.u4byte);
	ok1(strlen(str) < STR_MAX_CHARS(types.u4byte));
	sprintf(str, "0x%llx", (unsigned long long)types.u8byte);
	ok1(strlen(str) < STR_MAX_CHARS(types.u8byte));

	/* Decimal versions */
	sprintf(str, "%u", types.u1byte);
	ok1(strlen(str) < STR_MAX_CHARS(types.u1byte));
	sprintf(str, "%d", types.s1byte);
	ok1(strlen(str) < STR_MAX_CHARS(types.s1byte));
	sprintf(str, "%u", types.u2byte);
	ok1(strlen(str) < STR_MAX_CHARS(types.u2byte));
	sprintf(str, "%d", types.s2byte);
	ok1(strlen(str) < STR_MAX_CHARS(types.s2byte));
	sprintf(str, "%u", types.u4byte);
	ok1(strlen(str) < STR_MAX_CHARS(types.u4byte));
	sprintf(str, "%d", types.s4byte);
	ok1(strlen(str) < STR_MAX_CHARS(types.s4byte));
	sprintf(str, "%llu", (unsigned long long)types.u8byte);
	ok1(strlen(str) < STR_MAX_CHARS(types.u8byte));
	sprintf(str, "%lld", (long long)types.s8byte);
	ok1(strlen(str) < STR_MAX_CHARS(types.s8byte));

	/* Pointer version. */
	sprintf(str, "%p", types.ptr);
	ok1(strlen(str) < STR_MAX_CHARS(types.ptr));

	return exit_status();
}