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 9 extern void test_NullBuf1(void); 10 void test_NullBuf1(void) 11 { 12 int rc = xsbprintf(NULL, NULL, "blah"); 13 TEST_ASSERT(rc == -1 && errno == EINVAL); 14 } 15 16 extern void test_NullBuf2(void); 17 void 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 25 extern void test_EndBeyond(void); 26 void 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 35 extern void test_SmallBuf(void); 36 void 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 46 extern void test_MatchBuf(void); 47 void 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 57 extern void test_BigBuf(void); 58 void 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 68 extern void test_SimpleArgs(void); 69 void 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 80 extern void test_Increment1(void); 81 void 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