From 96e08b0cdae6035da3b6ffe5f5e95b6e2e4c085d Mon Sep 17 00:00:00 2001 From: Matthias Liedtke Date: Thu, 27 May 2021 19:09:55 +0200 Subject: [PATCH] preserve alignment --- include/fmt/core.h | 2 +- test/format-test.cc | 12 ++++-------- 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/include/fmt/core.h b/include/fmt/core.h index 9db39267..20d4d172 100644 --- a/include/fmt/core.h +++ b/include/fmt/core.h @@ -1948,7 +1948,7 @@ template class specs_setter { FMT_CONSTEXPR void on_localized() { specs_.localized = true; } FMT_CONSTEXPR void on_zero() { - specs_.align = align::numeric; + if (specs_.align == align::none) specs_.align = align::numeric; specs_.fill[0] = Char('0'); } diff --git a/test/format-test.cc b/test/format-test.cc index 7af834a3..774e7bc1 100644 --- a/test/format-test.cc +++ b/test/format-test.cc @@ -1273,10 +1273,8 @@ TEST(format_test, format_nan) { EXPECT_EQ("nan", fmt::format("{}", nan)); EXPECT_EQ("+nan", fmt::format("{:+}", nan)); EXPECT_EQ(" +nan", fmt::format("{:+06}", nan)); - // '0'-fill option sets alignment to numeric overwriting any user-provided - // alignment - EXPECT_EQ(" +nan", fmt::format("{:^+06}", nan)); - EXPECT_EQ(" +nan", fmt::format("{:<+06}", nan)); + EXPECT_EQ("+nan ", fmt::format("{:<+06}", nan)); + EXPECT_EQ(" +nan ", fmt::format("{:^+06}", nan)); EXPECT_EQ(" +nan", fmt::format("{:>+06}", nan)); if (std::signbit(-nan)) { EXPECT_EQ("-nan", fmt::format("{}", -nan)); @@ -1297,10 +1295,8 @@ TEST(format_test, format_infinity) { EXPECT_EQ("-inf", fmt::format("{}", -inf)); EXPECT_EQ(" +inf", fmt::format("{:+06}", inf)); EXPECT_EQ(" -inf", fmt::format("{:+06}", -inf)); - // '0'-fill option sets alignment to numeric overwriting any user-provided - // alignment - EXPECT_EQ(" +inf", fmt::format("{:^+06}", inf)); - EXPECT_EQ(" +inf", fmt::format("{:<+06}", inf)); + EXPECT_EQ("+inf ", fmt::format("{:<+06}", inf)); + EXPECT_EQ(" +inf ", fmt::format("{:^+06}", inf)); EXPECT_EQ(" +inf", fmt::format("{:>+06}", inf)); EXPECT_EQ(" inf", fmt::format("{: }", inf)); EXPECT_EQ("INF", fmt::format("{:F}", inf));