Skip to content

Commit c82788e

Browse files
committed
tests: add testcases for strprintf
1 parent d6f690f commit c82788e

File tree

1 file changed

+27
-0
lines changed

1 file changed

+27
-0
lines changed

src/test/util_tests.cpp

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -303,4 +303,31 @@ BOOST_AUTO_TEST_CASE(util_TimingResistantEqual)
303303
BOOST_CHECK(!TimingResistantEqual(std::string("abc"), std::string("aba")));
304304
}
305305

306+
/* Test strprintf formatting directives.
307+
* Put a string before and after to ensure sanity of element sizes on stack. */
308+
#define B "check_prefix"
309+
#define E "check_postfix"
310+
BOOST_AUTO_TEST_CASE(strprintf_numbers)
311+
{
312+
int64_t s64t = -9223372036854775807LL; /* signed 64 bit test value */
313+
uint64_t u64t = 18446744073709551615ULL; /* unsigned 64 bit test value */
314+
BOOST_CHECK(strprintf("%s %"PRId64" %s", B, s64t, E) == B" -9223372036854775807 "E);
315+
BOOST_CHECK(strprintf("%s %"PRIu64" %s", B, u64t, E) == B" 18446744073709551615 "E);
316+
BOOST_CHECK(strprintf("%s %"PRIx64" %s", B, u64t, E) == B" ffffffffffffffff "E);
317+
318+
size_t st = 12345678; /* unsigned size_t test value */
319+
ssize_t sst = -12345678; /* signed size_t test value */
320+
BOOST_CHECK(strprintf("%s %"PRIszd" %s", B, sst, E) == B" -12345678 "E);
321+
BOOST_CHECK(strprintf("%s %"PRIszu" %s", B, st, E) == B" 12345678 "E);
322+
BOOST_CHECK(strprintf("%s %"PRIszx" %s", B, st, E) == B" bc614e "E);
323+
324+
ptrdiff_t pt = 87654321; /* positive ptrdiff_t test value */
325+
ptrdiff_t spt = -87654321; /* negative ptrdiff_t test value */
326+
BOOST_CHECK(strprintf("%s %"PRIpdd" %s", B, spt, E) == B" -87654321 "E);
327+
BOOST_CHECK(strprintf("%s %"PRIpdu" %s", B, pt, E) == B" 87654321 "E);
328+
BOOST_CHECK(strprintf("%s %"PRIpdx" %s", B, pt, E) == B" 5397fb1 "E);
329+
}
330+
#undef B
331+
#undef E
332+
306333
BOOST_AUTO_TEST_SUITE_END()

0 commit comments

Comments
 (0)