浏览代码

AK: Allow setting both width and precision when formatting a string

Timothy Flynn 4 年之前
父节点
当前提交
06ddfcde89
共有 2 个文件被更改,包括 3 次插入2 次删除
  1. 0 2
      AK/Format.cpp
  2. 3 0
      Tests/AK/TestFormat.cpp

+ 0 - 2
AK/Format.cpp

@@ -550,8 +550,6 @@ void Formatter<StringView>::format(FormatBuilder& builder, StringView value)
         VERIFY_NOT_REACHED();
     if (m_mode != Mode::Default && m_mode != Mode::String && m_mode != Mode::Character && m_mode != Mode::HexDump)
         VERIFY_NOT_REACHED();
-    if (m_width.has_value() && m_precision.has_value())
-        VERIFY_NOT_REACHED();
 
     m_width = m_width.value_or(0);
     m_precision = m_precision.value_or(NumericLimits<size_t>::max());

+ 3 - 0
Tests/AK/TestFormat.cpp

@@ -125,6 +125,9 @@ TEST_CASE(complex_string_specifiers)
     EXPECT_EQ(String::formatted("{:9}", "abcd"), "abcd     ");
     EXPECT_EQ(String::formatted("{:>9}", "abcd"), "     abcd");
     EXPECT_EQ(String::formatted("{:^9}", "abcd"), "  abcd   ");
+    EXPECT_EQ(String::formatted("{:4.6}", "a"), "a   ");
+    EXPECT_EQ(String::formatted("{:4.6}", "abcdef"), "abcdef");
+    EXPECT_EQ(String::formatted("{:4.6}", "abcdefghi"), "abcdef");
 }
 
 TEST_CASE(cast_integer_to_character)