[libc-commits] [libc] [libc] Support C23 'b' (binary) modifier in printf (PR #80851)
via libc-commits
libc-commits at lists.llvm.org
Tue Feb 6 15:00:37 PST 2024
================
@@ -410,6 +410,115 @@ TEST(LlvmLibcSPrintfTest, HexConv) {
ASSERT_STREQ(buff, "007F 0x1000000000 002 ");
}
+TEST(LlvmLibcSPrintfTest, BinConv) {
+ char buff[64];
+ int written;
+
+ // Basic Tests.
+
+ written = LIBC_NAMESPACE::sprintf(buff, "%b", 42);
+ EXPECT_EQ(written, 6);
+ ASSERT_STREQ(buff, "101010");
+
+ written = LIBC_NAMESPACE::sprintf(buff, "%B", 12081991);
+ EXPECT_EQ(written, 24);
+ ASSERT_STREQ(buff, "101110000101101101000111");
+
+ // Min Width Tests.
+
+ written = LIBC_NAMESPACE::sprintf(buff, "%10b", 0b101010);
+ EXPECT_EQ(written, 10);
+ ASSERT_STREQ(buff, " 101010");
+
+ written = LIBC_NAMESPACE::sprintf(buff, "%2B", 0b101010);
+ EXPECT_EQ(written, 6);
+ ASSERT_STREQ(buff, "101010");
+
+ // Precision Tests.
----------------
michaelrj-google wrote:
nit: It would be good to have a test where the precision equals the number of digits, such as ("%3b", 0b111) -> "111"
https://github.com/llvm/llvm-project/pull/80851
More information about the libc-commits
mailing list