From f16aff8033642bd2854e6bb21ddb351dd85296d9 Mon Sep 17 00:00:00 2001 From: Victor Zverovich Date: Fri, 6 Jun 2014 08:01:25 -0700 Subject: [PATCH] Simplify tests. --- test/printf-test.cc | 31 ++++++++++++++++++------------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/test/printf-test.cc b/test/printf-test.cc index b2805016..f528890a 100644 --- a/test/printf-test.cc +++ b/test/printf-test.cc @@ -47,6 +47,17 @@ std::string GetBigNumber() { const unsigned BIG_NUM = INT_MAX + 1u; +// Makes format string argument positional. +std::string MakePositional(fmt::StringRef format) { + std::string s(format); + s.replace(s.find('%'), 1, "%1$"); + return s; +} + +#define EXPECT_PRINTF(expected_output, format, arg) \ + EXPECT_EQ(expected_output, str(fmt::sprintf(format, arg))); \ + EXPECT_EQ(expected_output, str(fmt::sprintf(MakePositional(format), arg))) + TEST(PrintfTest, NoArgs) { EXPECT_EQ("test", str(fmt::sprintf("test"))); } @@ -118,8 +129,7 @@ TEST(PrintfTest, InvalidArgIndex) { } TEST(PrintfTest, Width) { - EXPECT_EQ(" abc", str(fmt::sprintf("%5s", "abc"))); - EXPECT_EQ(" abc", str(fmt::sprintf("%1$5s", "abc"))); + EXPECT_PRINTF(" abc", "%5s", "abc"); // Width cannot be specified twice. EXPECT_THROW_MSG(fmt::sprintf("%5-5d", 42), FormatError, @@ -132,19 +142,14 @@ TEST(PrintfTest, Width) { } TEST(PrintfTest, ZeroFlag) { - EXPECT_EQ("00042", str(fmt::sprintf("%05d", 42))); - EXPECT_EQ("00042", str(fmt::sprintf("%1$05d", 42))); - EXPECT_EQ("-0042", str(fmt::sprintf("%05d", -42))); - EXPECT_EQ("-0042", str(fmt::sprintf("%1$05d", -42))); + EXPECT_PRINTF("00042", "%05d", 42); + EXPECT_PRINTF("-0042", "%05d", -42); - EXPECT_EQ("00042", str(fmt::sprintf("%05d", 42))); - EXPECT_EQ("00042", str(fmt::sprintf("%1$05d", 42))); - EXPECT_EQ("-0042", str(fmt::sprintf("%05d", -42))); - EXPECT_EQ("-0042", str(fmt::sprintf("%1$05d", -42))); - EXPECT_EQ("-004.2", str(fmt::sprintf("%06g", -4.2))); - EXPECT_EQ("-004.2", str(fmt::sprintf("%1$06g", -4.2))); + EXPECT_PRINTF("00042", "%05d", 42); + EXPECT_PRINTF("-0042", "%05d", -42); + EXPECT_PRINTF("-004.2", "%06g", -4.2); - EXPECT_EQ("+00042", str(fmt::sprintf("%00+6d", 42))); + EXPECT_PRINTF("+00042", "%00+6d", 42); // TODO: test for error if argument is non-numeric }