diff --git a/test/format-test.cc b/test/format-test.cc index c189f990..3fceab88 100644 --- a/test/format-test.cc +++ b/test/format-test.cc @@ -1604,23 +1604,31 @@ TEST(FormatTest, MaxArgs) { } #if FMT_USE_USER_DEFINED_LITERALS +// Passing user-defined literals directly to EXPECT_EQ causes problems +// with macro argument stringification (#) on some versions of GCC. +// Workaround: Assing the UDL result to a variable before the macro. + using namespace fmt::literals; TEST(LiteralsTest, Format) { - EXPECT_EQ(format("{}c{}", "ab", 1), "{}c{}"_format("ab", 1)); - EXPECT_EQ(format(L"{}c{}", L"ab", 1), L"{}c{}"_format(L"ab", 1)); + auto udl_format = "{}c{}"_format("ab", 1); + EXPECT_EQ(format("{}c{}", "ab", 1), udl_format); + auto udl_format_w = L"{}c{}"_format(L"ab", 1); + EXPECT_EQ(format(L"{}c{}", L"ab", 1), udl_format_w); } TEST(LiteralsTest, NamedArg) { + auto udl_a = format("{first}{second}{first}{third}", + "first"_a="abra", "second"_a="cad", "third"_a=99); EXPECT_EQ(format("{first}{second}{first}{third}", fmt::arg("first", "abra"), fmt::arg("second", "cad"), fmt::arg("third", 99)), - format("{first}{second}{first}{third}", - "first"_a="abra", "second"_a="cad", "third"_a=99)); + udl_a); + auto udl_a_w = format(L"{first}{second}{first}{third}", + L"first"_a=L"abra", L"second"_a=L"cad", L"third"_a=99); EXPECT_EQ(format(L"{first}{second}{first}{third}", fmt::arg(L"first", L"abra"), fmt::arg(L"second", L"cad"), fmt::arg(L"third", 99)), - format(L"{first}{second}{first}{third}", - L"first"_a=L"abra", L"second"_a=L"cad", L"third"_a=99)); + udl_a_w); } #endif // FMT_USE_USER_DEFINED_LITERALS