@@ -303,4 +303,31 @@ BOOST_AUTO_TEST_CASE(util_TimingResistantEqual)
303
303
BOOST_CHECK (!TimingResistantEqual (std::string (" abc" ), std::string (" aba" )));
304
304
}
305
305
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
+
306
333
BOOST_AUTO_TEST_SUITE_END ()
0 commit comments