Restore the 'B' type by https://github.com/gcflymoto and add tests.

This commit is contained in:
Victor Zverovich 2013-11-16 21:25:48 -08:00
parent 4f3ae78adb
commit f184ad0a2c
2 changed files with 13 additions and 10 deletions

View File

@ -729,7 +729,7 @@ BasicWriter<Char> &BasicWriter<Char>::operator<<(
} }
break; break;
} }
case 'b': { case 'b': case 'B': {
UnsignedType n = abs_value; UnsignedType n = abs_value;
bool print_prefix = f.hash_flag(); bool print_prefix = f.hash_flag();
if (print_prefix) size += 2; if (print_prefix) size += 2;
@ -742,7 +742,7 @@ BasicWriter<Char> &BasicWriter<Char>::operator<<(
*p-- = '0' + (n & 1); *p-- = '0' + (n & 1);
} while ((n >>= 1) != 0); } while ((n >>= 1) != 0);
if (print_prefix) { if (print_prefix) {
*p-- = 'b'; *p-- = f.type();
*p = '0'; *p = '0';
} }
break; break;

View File

@ -316,6 +316,14 @@ TEST(WriterTest, WriteWideString) {
//fmt::WWriter() << "abc"; //fmt::WWriter() << "abc";
} }
TEST(WriterTest, bin) {
using fmt::bin;
EXPECT_EQ("1100101011111110", str(Writer() << bin(0xcafe)));
EXPECT_EQ("1011101010111110", str(Writer() << bin(0xbabeu)));
EXPECT_EQ("1101111010101101", str(Writer() << bin(0xdeadl)));
EXPECT_EQ("1011111011101111", str(Writer() << bin(0xbeeful)));
}
TEST(WriterTest, oct) { TEST(WriterTest, oct) {
using fmt::oct; using fmt::oct;
EXPECT_EQ("12", str(Writer() << oct(static_cast<short>(012)))); EXPECT_EQ("12", str(Writer() << oct(static_cast<short>(012))));
@ -325,14 +333,6 @@ TEST(WriterTest, oct) {
EXPECT_EQ("70", str(Writer() << oct(070ul))); EXPECT_EQ("70", str(Writer() << oct(070ul)));
} }
TEST(WriterTest, bin) {
using fmt::bin;
EXPECT_EQ("1100101011111110", str(Writer() << bin(0xcafe)));
EXPECT_EQ("1011101010111110", str(Writer() << bin(0xbabeu)));
EXPECT_EQ("1101111010101101", str(Writer() << bin(0xdeadl)));
EXPECT_EQ("1011111011101111", str(Writer() << bin(0xbeeful)));
}
TEST(WriterTest, hex) { TEST(WriterTest, hex) {
using fmt::hex; using fmt::hex;
fmt::IntFormatter<int, fmt::TypeSpec<'x'> > (*phex)(int value) = hex; fmt::IntFormatter<int, fmt::TypeSpec<'x'> > (*phex)(int value) = hex;
@ -685,6 +685,9 @@ TEST(FormatterTest, SpaceSign) {
TEST(FormatterTest, HashFlag) { TEST(FormatterTest, HashFlag) {
EXPECT_EQ("42", str(Format("{0:#}") << 42)); EXPECT_EQ("42", str(Format("{0:#}") << 42));
EXPECT_EQ("-42", str(Format("{0:#}") << -42)); EXPECT_EQ("-42", str(Format("{0:#}") << -42));
EXPECT_EQ("0b101010", str(Format("{0:#b}") << 0x42));
EXPECT_EQ("0B101010", str(Format("{0:#B}") << 0x42));
EXPECT_EQ("-0b101010", str(Format("{0:#b}") << -0x42));
EXPECT_EQ("0x42", str(Format("{0:#x}") << 0x42)); EXPECT_EQ("0x42", str(Format("{0:#x}") << 0x42));
EXPECT_EQ("0X42", str(Format("{0:#X}") << 0x42)); EXPECT_EQ("0X42", str(Format("{0:#X}") << 0x42));
EXPECT_EQ("-0x42", str(Format("{0:#x}") << -0x42)); EXPECT_EQ("-0x42", str(Format("{0:#x}") << -0x42));