1/*	$NetBSD: sbprintf.c,v 1.2 2020/05/25 20:47:36 christos Exp $	*/
2
3#include "config.h"
4#include "ntp_stdlib.h"
5#include "unity.h"
6
7#include <errno.h>
8
9extern void test_NullBuf1(void);
10void test_NullBuf1(void)
11{
12	int rc = xsbprintf(NULL, NULL, "blah");
13        TEST_ASSERT(rc == -1 && errno == EINVAL);
14}
15
16extern void test_NullBuf2(void);
17void test_NullBuf2(void)
18{
19	char *bp = NULL;
20	int   rc = xsbprintf(&bp, NULL, "blah");
21        TEST_ASSERT(rc == -1 && errno == EINVAL);
22	TEST_ASSERT_EQUAL_PTR(bp, NULL);
23}
24
25extern void test_EndBeyond(void);
26void test_EndBeyond(void)
27{
28	char ba[2];
29	char *bp = ba + 1;
30	char *ep = ba;
31	int rc = xsbprintf(&bp, ep, "blah");
32        TEST_ASSERT(rc == -1 && errno == EINVAL);
33}
34
35extern void test_SmallBuf(void);
36void test_SmallBuf(void)
37{
38	char  ba[4];
39	char *bp = ba;
40	char *ep = ba + sizeof(ba);
41	int   rc = xsbprintf(&bp, ep, "1234");
42        TEST_ASSERT(rc == 0 && strlen(ba) == 0);
43	TEST_ASSERT_EQUAL_PTR(bp, ba);
44}
45
46extern void test_MatchBuf(void);
47void test_MatchBuf(void)
48{
49	char  ba[5];
50	char *bp = ba;
51	char *ep = ba + sizeof(ba);
52	int   rc = xsbprintf(&bp, ep, "1234");
53        TEST_ASSERT(rc == 4 && strlen(ba) == 4);
54	TEST_ASSERT_EQUAL_PTR(bp, ba + 4);
55}
56
57extern void test_BigBuf(void);
58void test_BigBuf(void)
59{
60	char  ba[10];
61	char *bp = ba;
62	char *ep = ba + sizeof(ba);
63	int   rc = xsbprintf(&bp, ep, "1234");
64        TEST_ASSERT(rc == 4 && strlen(ba) == 4);
65	TEST_ASSERT_EQUAL_PTR(bp, ba + 4);
66}
67
68extern void test_SimpleArgs(void);
69void test_SimpleArgs(void)
70{
71	char  ba[10];
72	char *bp = ba;
73	char *ep = ba + sizeof(ba);
74	int   rc = xsbprintf(&bp, ep, "%d%d%d%d", 1, 2, 3, 4);
75        TEST_ASSERT(rc == 4 && strlen(ba) == 4);
76	TEST_ASSERT_EQUAL_PTR(bp, ba + 4);
77	TEST_ASSERT_FALSE(strcmp(ba, "1234"));
78}
79
80extern void test_Increment1(void);
81void test_Increment1(void)
82{
83	char  ba[10];
84	char *bp = ba;
85	char *ep = ba + sizeof(ba);
86	int   rc;
87
88	rc = xsbprintf(&bp, ep, "%d%d%d%d", 1, 2, 3, 4);
89        TEST_ASSERT(rc == 4 && strlen(ba) == 4);
90	TEST_ASSERT_EQUAL_PTR(bp, ba + 4);
91
92	rc = xsbprintf(&bp, ep, "%s", "frob");
93        TEST_ASSERT(rc == 4 && strlen(ba) == 8);
94	TEST_ASSERT_EQUAL_PTR(bp, ba + 8);
95	TEST_ASSERT_FALSE(strcmp(ba, "1234frob"));
96}
97
98