X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=ceph%2Fsrc%2Ffmt%2Ftest%2Fstd-format-test.cc;fp=ceph%2Fsrc%2Ffmt%2Ftest%2Fstd-format-test.cc;h=c67a2a0309230478d2f6246c103507d01f95cace;hb=20effc670b57271cb089376d6d0800990e5218d5;hp=c4fb5a270734cf7a23f11d1cb85335b21375985e;hpb=a71831dadd1e1f3e0fa70405511f65cc33db0498;p=ceph.git diff --git a/ceph/src/fmt/test/std-format-test.cc b/ceph/src/fmt/test/std-format-test.cc index c4fb5a270..c67a2a030 100644 --- a/ceph/src/fmt/test/std-format-test.cc +++ b/ceph/src/fmt/test/std-format-test.cc @@ -1,14 +1,14 @@ #include -#include "gtest.h" +#include "gtest/gtest.h" -TEST(StdFormatTest, Escaping) { +TEST(std_format_test, escaping) { using namespace std; string s = format("{0}-{{", 8); // s == "8-{" EXPECT_EQ(s, "8-{"); } -TEST(StdFormatTest, Indexing) { +TEST(std_format_test, indexing) { using namespace std; string s0 = format("{} to {}", "a", "b"); // OK: automatic indexing string s1 = format("{1} to {0}", "a", "b"); // OK: manual indexing @@ -20,7 +20,7 @@ TEST(StdFormatTest, Indexing) { EXPECT_THROW(string s3 = format("{} to {1}", "a", "b"), std::format_error); } -TEST(StdFormatTest, Alignment) { +TEST(std_format_test, alignment) { using namespace std; char c = 120; string s0 = format("{:6}", 42); // s0 == " 42" @@ -41,7 +41,7 @@ TEST(StdFormatTest, Alignment) { EXPECT_EQ(s7, "true "); } -TEST(StdFormatTest, Float) { +TEST(std_format_test, float) { using namespace std; double inf = numeric_limits::infinity(); double nan = numeric_limits::quiet_NaN(); @@ -57,12 +57,12 @@ TEST(StdFormatTest, Float) { EXPECT_EQ(s3, "nan +nan nan nan"); } -TEST(StdFormatTest, Int) { +TEST(std_format_test, int) { using namespace std; string s0 = format("{}", 42); // s0 == "42" string s1 = format("{0:b} {0:d} {0:o} {0:x}", 42); // s1 == "101010 42 52 2a" string s2 = format("{0:#x} {0:#X}", 42); // s2 == "0x2a 0X2A" - string s3 = format("{:n}", 1234); // s3 == "1234" (depends on the locale) + string s3 = format("{:L}", 1234); // s3 == "1234" (depends on the locale) EXPECT_EQ(s0, "42"); EXPECT_EQ(s1, "101010 42 52 2a"); EXPECT_EQ(s2, "0x2a 0X2A"); @@ -83,7 +83,7 @@ template <> struct std::formatter : std::formatter { struct err {}; -TEST(StdFormatTest, Formatter) { +TEST(std_format_test, formatter) { std::string s0 = std::format("{}", 42); // OK: library-provided formatter // std::string s1 = std::format("{}", L"foo"); // Ill-formed: disabled // formatter @@ -103,15 +103,19 @@ template <> struct std::formatter { // Parses a width argument id in the format { }. constexpr auto parse(format_parse_context& ctx) { + constexpr auto is_ascii_digit = [](const char c) { + return c >= '0' && c <= '9'; + }; + auto iter = ctx.begin(); // auto get_char = [&]() { return iter != ctx.end() ? *iter : 0; }; auto get_char = [&]() { return iter != ctx.end() ? *iter : '\0'; }; if (get_char() != '{') return iter; ++iter; char c = get_char(); - if (!isdigit(c) || (++iter, get_char()) != '}') + if (!is_ascii_digit(c) || (++iter, get_char()) != '}') throw format_error("invalid format"); - width_arg_id = c - '0'; + width_arg_id = fmt::detail::to_unsigned(c - '0'); ctx.check_arg_id(width_arg_id); return ++iter; } @@ -135,7 +139,7 @@ template <> struct std::formatter { } }; -TEST(StdFormatTest, Parsing) { +TEST(std_format_test, parsing) { std::string s = std::format("{0:{1}}", S{42}, 10); // s == " 42" EXPECT_EQ(s, " 42"); } @@ -149,7 +153,7 @@ template <> struct std::formatter<__int128_t> : std::formatter { } }; -TEST(StdFormatTest, Int128) { +TEST(std_format_test, int128) { __int128_t n = 42; auto s = std::format("{}", n); EXPECT_EQ(s, "42");