| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
| #include <cstddef> |
|
|
| #include "gtest/gtest.h" |
| #include "absl/strings/str_cat.h" |
| #include "absl/strings/str_format.h" |
| #include "absl/strings/substitute.h" |
|
|
| namespace { |
|
|
| TEST(CharFormatting, Char) { |
| const char v = 'A'; |
|
|
| |
| |
| |
|
|
| |
| EXPECT_EQ(absl::Substitute("$0B", v), "AB"); |
| } |
|
|
| enum CharEnum : char {}; |
| TEST(CharFormatting, CharEnum) { |
| auto v = static_cast<CharEnum>('A'); |
|
|
| |
| EXPECT_EQ(absl::StrFormat("%vB", v), "65B"); |
| EXPECT_EQ(absl::StrCat(v, "B"), "65B"); |
|
|
| |
|
|
| |
| #if !defined(__GNUC__) || defined(__clang__) |
| EXPECT_EQ(absl::Substitute("$0B", v), "AB"); |
| #endif |
| } |
|
|
| enum class CharEnumClass: char {}; |
| TEST(CharFormatting, CharEnumClass) { |
| auto v = static_cast<CharEnumClass>('A'); |
|
|
| |
| EXPECT_EQ(absl::StrFormat("%vB", v), "65B"); |
| EXPECT_EQ(absl::StrCat(v, "B"), "65B"); |
|
|
| |
| EXPECT_EQ(absl::Substitute("$0B", v), "AB"); |
| } |
|
|
| TEST(CharFormatting, UnsignedChar) { |
| const unsigned char v = 'A'; |
|
|
| |
| EXPECT_EQ(absl::StrCat(v, "B"), "65B"); |
| EXPECT_EQ(absl::Substitute("$0B", v), "65B"); |
| EXPECT_EQ(absl::StrFormat("%vB", v), "65B"); |
|
|
| |
| const unsigned char w = 255; |
| EXPECT_EQ(absl::StrCat(w, "B"), "255B"); |
| EXPECT_EQ(absl::Substitute("$0B", w), "255B"); |
| |
| } |
|
|
| TEST(CharFormatting, SignedChar) { |
| const signed char v = 'A'; |
|
|
| |
| EXPECT_EQ(absl::StrCat(v, "B"), "65B"); |
| EXPECT_EQ(absl::Substitute("$0B", v), "65B"); |
| EXPECT_EQ(absl::StrFormat("%vB", v), "65B"); |
|
|
| |
| const signed char w = -128; |
| EXPECT_EQ(absl::StrCat(w, "B"), "-128B"); |
| EXPECT_EQ(absl::Substitute("$0B", w), "-128B"); |
| } |
|
|
| enum UnsignedCharEnum : unsigned char {}; |
| TEST(CharFormatting, UnsignedCharEnum) { |
| auto v = static_cast<UnsignedCharEnum>('A'); |
|
|
| |
| EXPECT_EQ(absl::StrCat(v, "B"), "65B"); |
| EXPECT_EQ(absl::Substitute("$0B", v), "65B"); |
| EXPECT_EQ(absl::StrFormat("%vB", v), "65B"); |
|
|
| |
| auto w = static_cast<UnsignedCharEnum>(255); |
| EXPECT_EQ(absl::StrCat(w, "B"), "255B"); |
| EXPECT_EQ(absl::Substitute("$0B", w), "255B"); |
| EXPECT_EQ(absl::StrFormat("%vB", w), "255B"); |
| } |
|
|
| enum SignedCharEnum : signed char {}; |
| TEST(CharFormatting, SignedCharEnum) { |
| auto v = static_cast<SignedCharEnum>('A'); |
|
|
| |
| EXPECT_EQ(absl::StrCat(v, "B"), "65B"); |
| EXPECT_EQ(absl::Substitute("$0B", v), "65B"); |
| EXPECT_EQ(absl::StrFormat("%vB", v), "65B"); |
|
|
| |
| auto w = static_cast<SignedCharEnum>(-128); |
| EXPECT_EQ(absl::StrCat(w, "B"), "-128B"); |
| EXPECT_EQ(absl::Substitute("$0B", w), "-128B"); |
| EXPECT_EQ(absl::StrFormat("%vB", w), "-128B"); |
| } |
|
|
| enum class UnsignedCharEnumClass : unsigned char {}; |
| TEST(CharFormatting, UnsignedCharEnumClass) { |
| auto v = static_cast<UnsignedCharEnumClass>('A'); |
|
|
| |
| EXPECT_EQ(absl::StrCat(v, "B"), "65B"); |
| EXPECT_EQ(absl::Substitute("$0B", v), "65B"); |
| EXPECT_EQ(absl::StrFormat("%vB", v), "65B"); |
|
|
| |
| auto w = static_cast<UnsignedCharEnumClass>(255); |
| EXPECT_EQ(absl::StrCat(w, "B"), "255B"); |
| EXPECT_EQ(absl::Substitute("$0B", w), "255B"); |
| EXPECT_EQ(absl::StrFormat("%vB", w), "255B"); |
| } |
|
|
| enum SignedCharEnumClass : signed char {}; |
| TEST(CharFormatting, SignedCharEnumClass) { |
| auto v = static_cast<SignedCharEnumClass>('A'); |
|
|
| |
| EXPECT_EQ(absl::StrCat(v, "B"), "65B"); |
| EXPECT_EQ(absl::Substitute("$0B", v), "65B"); |
| EXPECT_EQ(absl::StrFormat("%vB", v), "65B"); |
|
|
| |
| auto w = static_cast<SignedCharEnumClass>(-128); |
| EXPECT_EQ(absl::StrCat(w, "B"), "-128B"); |
| EXPECT_EQ(absl::Substitute("$0B", w), "-128B"); |
| EXPECT_EQ(absl::StrFormat("%vB", w), "-128B"); |
| } |
|
|
| #ifdef __cpp_lib_byte |
| TEST(CharFormatting, StdByte) { |
| auto v = static_cast<std::byte>('A'); |
| |
| |
|
|
| |
| EXPECT_EQ(absl::StrCat(v, "B"), "65B"); |
| EXPECT_EQ(absl::Substitute("$0B", v), "65B"); |
| EXPECT_EQ(absl::StrFormat("%vB", v), "65B"); |
| } |
| #endif |
|
|
| } |
|
|