]> git.ipfire.org Git - thirdparty/ccache.git/commitdiff
enhance: Add TextTable support for right-aligned integers
authorJoel Rosdahl <joel@rosdahl.net>
Wed, 11 Aug 2021 10:29:22 +0000 (12:29 +0200)
committerJoel Rosdahl <joel@rosdahl.net>
Mon, 16 Aug 2021 18:11:58 +0000 (20:11 +0200)
src/util/TextTable.cpp
src/util/TextTable.hpp
unittest/test_util_TextTable.cpp

index 809b1f854fc4d768ced3b3b401fccadc456b5939..cc4f9c09ef3991445114b35660d480762566be13 100644 (file)
@@ -69,10 +69,25 @@ TextTable::render() const
   return result;
 }
 
-TextTable::Cell::Cell(const std::string& text) : m_text(text)
+TextTable::Cell::Cell(const std::string& text)
+  : m_text(text),
+    m_right_align(false)
 {
 }
 
+TextTable::Cell::Cell(const uint64_t number)
+  : m_text(fmt::format("{}", number)),
+    m_right_align(true)
+{
+}
+
+TextTable::Cell&
+TextTable::Cell::left_align()
+{
+  m_right_align = false;
+  return *this;
+}
+
 TextTable::Cell&
 TextTable::Cell::right_align()
 {
index a6d19407b9076351fc378bf01f634c6a7a6c0fe3..4c021ddd0fc6dd31507b84c39bb5d69646e62afc 100644 (file)
@@ -31,7 +31,9 @@ public:
   {
   public:
     Cell(const std::string& text);
+    Cell(uint64_t number);
 
+    Cell& left_align();
     Cell& right_align();
 
   private:
index 143509594176cdeb735830b8f97759895f7b7d1b..1793e67c9714984cef3817717064eac06a1c9952 100644 (file)
@@ -48,8 +48,8 @@ TEST_CASE("TextTable")
   SUBCASE("1x2")
   {
     table.add_row({{"a"}});
-    table.add_row({{"b"}});
-    CHECK(table.render() == "a\nb\n");
+    table.add_row({1});
+    CHECK(table.render() == "a\n1\n");
   }
 
   SUBCASE("3 + 2")
@@ -61,6 +61,28 @@ TEST_CASE("TextTable")
               "aa bbb\n"));
   }
 
+  SUBCASE("strings and numbers")
+  {
+    table.add_row({{"a"}, 123, {"cc"}});
+    table.add_row({{"aa"}, 4, {"ccc"}});
+    table.add_row({{"aaa"}, 56, {"c"}});
+    CHECK(table.render()
+          == ("a   123 cc\n"
+              "aa    4 ccc\n"
+              "aaa  56 c\n"));
+  }
+
+  SUBCASE("left align")
+  {
+    table.add_row({{"a"}, 123, {"cc"}});
+    table.add_row({{"aa"}, C(4).left_align(), {"ccc"}});
+    table.add_row({{"aaa"}, 56, {"c"}});
+    CHECK(table.render()
+          == ("a   123 cc\n"
+              "aa  4   ccc\n"
+              "aaa  56 c\n"));
+  }
+
   SUBCASE("right align")
   {
     table.add_row({{"a"}, {"bbb"}, {"cc"}});