1 #include "g_libntptest.h"
7 #ifndef VSNPRINTF_PERCENT_M
8 // format_errmsg() is normally private to msyslog.c
9 void format_errmsg (char *, size_t, const char *, int);
13 class msyslogTest : public libntptest {
17 TEST_F(msyslogTest, msnprintf)
19 #define FMT_PREFIX "msyslog.cpp ENOENT: "
25 exp_cnt = snprintf(exp_buf, sizeof(exp_buf), FMT_PREFIX "%s",
28 act_cnt = msnprintf(act_buf, sizeof(act_buf), FMT_PREFIX "%m");
29 EXPECT_EQ(exp_cnt, act_cnt);
30 EXPECT_STREQ(exp_buf, act_buf);
33 TEST_F(msyslogTest, msnprintfLiteralPercentm)
40 exp_cnt = snprintf(exp_buf, sizeof(exp_buf), "%%m");
42 act_cnt = msnprintf(act_buf, sizeof(act_buf), "%%m");
43 EXPECT_EQ(exp_cnt, act_cnt);
44 EXPECT_STREQ(exp_buf, act_buf);
47 TEST_F(msyslogTest, msnprintfBackslashLiteralPercentm)
54 exp_cnt = snprintf(exp_buf, sizeof(exp_buf), "\%%m");
56 act_cnt = msnprintf(act_buf, sizeof(act_buf), "\%%m");
57 EXPECT_EQ(exp_cnt, act_cnt);
58 EXPECT_STREQ(exp_buf, act_buf);
61 TEST_F(msyslogTest, msnprintfBackslashPercent)
68 exp_cnt = snprintf(exp_buf, sizeof(exp_buf), "\%s",
71 act_cnt = msnprintf(act_buf, sizeof(act_buf), "\%m");
72 EXPECT_EQ(exp_cnt, act_cnt);
73 EXPECT_STREQ(exp_buf, act_buf);
76 TEST_F(msyslogTest, msnprintfHangingPercent)
78 static char fmt[] = "percent then nul term then non-nul %\0oops!";
86 exp_cnt = snprintf(exp_buf, sizeof(exp_buf), fmt);
87 act_cnt = msnprintf(act_buf, sizeof(act_buf), fmt);
88 EXPECT_EQ(exp_cnt, act_cnt);
89 EXPECT_STREQ(exp_buf, act_buf);
90 EXPECT_STREQ("", act_buf + 1 + strlen(act_buf));
93 #ifndef VSNPRINTF_PERCENT_M
94 TEST_F(msyslogTest, format_errmsgHangingPercent)
96 static char fmt[] = "percent then nul term then non-nul %\0oops!";
100 format_errmsg(act_buf, sizeof(act_buf), fmt, ENOENT);
101 EXPECT_STREQ(fmt, act_buf);
102 EXPECT_STREQ("", act_buf + 1 + strlen(act_buf));
106 TEST_F(msyslogTest, msnprintfNullTarget)
111 exp_cnt = snprintf(NULL, 0, "%d", 123);
113 act_cnt = msnprintf(NULL, 0, "%d", 123);
114 EXPECT_EQ(exp_cnt, act_cnt);
117 TEST_F(msyslogTest, msnprintfTruncate)
119 char undist[] = "undisturbed";
125 memcpy(exp_buf + 3, undist, sizeof(undist));
126 memcpy(act_buf + 3, undist, sizeof(undist));
127 exp_cnt = snprintf(exp_buf, 3, "%s", strerror(ENOENT));
129 act_cnt = msnprintf(act_buf, 3, "%m");
130 EXPECT_EQ('\0', exp_buf[2]);
131 EXPECT_EQ('\0', act_buf[2]);
132 EXPECT_TRUE(act_cnt > 0);
133 EXPECT_EQ(exp_cnt, act_cnt);
134 EXPECT_STREQ(exp_buf, act_buf);
135 EXPECT_STREQ(exp_buf + 3, undist);
136 EXPECT_STREQ(act_buf + 3, undist);