Fix is_formattable for tuple-like types. (#2940)

This commit is contained in:
jehelset
2022-06-19 08:25:58 -07:00
committed by GitHub
parent f0de128449
commit 5682338891
2 changed files with 44 additions and 2 deletions
+11 -1
View File
@@ -85,11 +85,22 @@ TEST(ranges_test, format_pair) {
EXPECT_EQ(fmt::format("{}", p), "(42, 1.5)");
}
struct unformattable {};
TEST(ranges_test, format_tuple) {
auto t =
std::tuple<int, float, std::string, char>(42, 1.5f, "this is tuple", 'i');
EXPECT_EQ(fmt::format("{}", t), "(42, 1.5, \"this is tuple\", 'i')");
EXPECT_EQ(fmt::format("{}", std::tuple<>()), "()");
EXPECT_TRUE((fmt::is_formattable<std::tuple<>>::value));
EXPECT_FALSE((fmt::is_formattable<unformattable>::value));
EXPECT_FALSE((fmt::is_formattable<std::tuple<unformattable>>::value));
EXPECT_FALSE((fmt::is_formattable<std::tuple<unformattable, int>>::value));
EXPECT_FALSE((fmt::is_formattable<std::tuple<int, unformattable>>::value));
EXPECT_FALSE(
(fmt::is_formattable<std::tuple<unformattable, unformattable>>::value));
EXPECT_TRUE((fmt::is_formattable<std::tuple<int, float>>::value));
}
#ifdef FMT_RANGES_TEST_ENABLE_FORMAT_STRUCT
@@ -220,7 +231,6 @@ TEST(ranges_test, enum_range) {
}
#if !FMT_MSC_VERSION
struct unformattable {};
TEST(ranges_test, unformattable_range) {
EXPECT_FALSE((fmt::has_formatter<std::vector<unformattable>,