lmi-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[lmi-commits] [lmi] master b98f9ac 1/3: Rename some pagination members


From: Greg Chicares
Subject: [lmi-commits] [lmi] master b98f9ac 1/3: Rename some pagination members
Date: Sun, 23 Sep 2018 20:04:33 -0400 (EDT)

branch: master
commit b98f9ac4b8635490fe184ce7fb9131b079cdb556
Author: Gregory W. Chicares <address@hidden>
Commit: Gregory W. Chicares <address@hidden>

    Rename some pagination members
---
 report_table.cpp      |  58 +++++++++++--------
 report_table.hpp      |  22 ++++---
 report_table_test.cpp | 156 +++++++++++++++++++++++++++-----------------------
 3 files changed, 131 insertions(+), 105 deletions(-)

diff --git a/report_table.cpp b/report_table.cpp
index abb930f..618c7ec 100644
--- a/report_table.cpp
+++ b/report_table.cpp
@@ -182,10 +182,16 @@ namespace
 std::logic_error yikes("Rows per group must be positive.");
 } // Unnamed namespace.
 
-/// Preconditions: 0 <= total_rows && 0 < rows_per_group <= max_lines_per_page
+/// Asserted preconditions:
+///   0 <= number_of_rows
+///   0 < rows_per_group <= max_lines_per_page
 
-prepaginator::prepaginator(int total_rows, int rows_per_group, int 
max_lines_per_page)
-    :total_rows_         {total_rows}
+prepaginator::prepaginator
+    (int number_of_rows
+    ,int rows_per_group
+    ,int max_lines_per_page
+    )
+    :number_of_rows_     {number_of_rows}
     ,rows_per_group_     {0 < rows_per_group ? rows_per_group : throw yikes}
     ,max_lines_per_page_ {max_lines_per_page}
     // "+ 1": blank-line separator after each group.
@@ -196,58 +202,62 @@ prepaginator::prepaginator(int total_rows, int 
rows_per_group, int max_lines_per
     // "-1 +": no blank-line separator after the last group.
     ,lines_on_full_page_ {-1 + lines_per_group_ * groups_per_page_}
     ,lines_on_last_page_ {}
-    ,page_count_         {}
+    ,number_of_pages_    {}
 {
-    LMI_ASSERT(0 <= total_rows);
+    LMI_ASSERT(0 <= number_of_rows);
     LMI_ASSERT(0 <  rows_per_group                      );
     LMI_ASSERT(     rows_per_group <= max_lines_per_page);
 
-    page_count_ = outward_quotient(total_rows_, rows_per_page_);
+    number_of_pages_ = outward_quotient(number_of_rows_, rows_per_page_);
 
-    int const pages_before_last = (0 == page_count_) ? 0 : page_count_ - 1;
-    int const rows_on_last_page = total_rows_ - rows_per_page_ * 
pages_before_last;
+    int const pages_before_last = (0 == number_of_pages_) ? 0 : 
number_of_pages_ - 1;
+    int const rows_on_last_page = number_of_rows_ - rows_per_page_ * 
pages_before_last;
     int const full_groups_on_last_page = rows_on_last_page / rows_per_group_;
-    int const extra_rows_on_last_page  = rows_on_last_page % rows_per_group_;
+    int const odd_rows_on_last_page  = rows_on_last_page % rows_per_group_;
     lines_on_last_page_ =
           lines_per_group_ * full_groups_on_last_page
-        + extra_rows_on_last_page
+        + odd_rows_on_last_page
         - (   0 != full_groups_on_last_page // (there is a separator
-          &&  0 == extra_rows_on_last_page  // and it is not wanted)
+          &&  0 == odd_rows_on_last_page    // and it is not wanted)
           )
         ;
 
     // Avoid widowing a partial group on the last page, by moving it
     // to the preceding page (which becomes the last) if there's room.
-    if(1 < page_count_)
+    if(1 < number_of_pages_)
         {
         int const free_lines = max_lines_per_page_ - lines_per_group_ * 
groups_per_page_;
         LMI_ASSERT(free_lines < rows_per_group_);
         if(rows_on_last_page <= free_lines)
             {
-            --page_count_;
+            --number_of_pages_;
             // "+ 1": separator before antiwidowed partial group.
             lines_on_last_page_ = lines_on_full_page_ + 1 + rows_on_last_page;
             }
         }
 
     // If there are zero rows of data, then one empty page is wanted.
-    if(0 == total_rows_)
+    if(0 == number_of_rows_)
         {
-        page_count_ = 1;
+        number_of_pages_ = 1;
         }
 }
 
-int paginator::init(int total_rows, int rows_per_group, int max_lines_per_page)
+int paginator::init
+    (int number_of_rows
+    ,int rows_per_group
+    ,int max_lines_per_page
+    )
 {
-    total_rows_         = total_rows        ;
-    rows_per_group_     = rows_per_group    ;
+    number_of_rows_     = number_of_rows;
+    rows_per_group_     = rows_per_group;
 
-    prepaginator p(total_rows, rows_per_group, max_lines_per_page);
+    prepaginator p(number_of_rows, rows_per_group, max_lines_per_page);
     lines_on_full_page_ = p.lines_on_full_page();
     lines_on_last_page_ = p.lines_on_last_page();
-    page_count_         = p.page_count();
+    number_of_pages_    = p.number_of_pages();
 
-    return page_count_;
+    return number_of_pages_;
 }
 
 void paginator::print()
@@ -255,10 +265,10 @@ void paginator::print()
     prelude();
     int row = 0;
     int line_count = 0;
-    for(int page = 0; page < page_count(); ++page)
+    for(int page = 0; page < number_of_pages(); ++page)
         {
         int const max_lines =
-            ((page_count() - 1) == page)
+            ((number_of_pages() - 1) == page)
             ? lines_on_last_page()
             : lines_on_full_page()
             ;
@@ -279,5 +289,5 @@ void paginator::print()
         close_page();
         }
     postlude();
-    LMI_ASSERT(total_rows() == row);
+    LMI_ASSERT(number_of_rows() == row);
 }
diff --git a/report_table.hpp b/report_table.hpp
index fb1191b..1ca2c5a 100644
--- a/report_table.hpp
+++ b/report_table.hpp
@@ -148,15 +148,19 @@ std::vector<int> LMI_SO set_column_widths
 class LMI_SO prepaginator
 {
   public:
-    prepaginator(int total_rows, int rows_per_group, int max_lines_per_page);
+    prepaginator
+        (int number_of_rows
+        ,int rows_per_group
+        ,int max_lines_per_page
+        );
 
     int lines_on_full_page() const {return lines_on_full_page_;}
     int lines_on_last_page() const {return lines_on_last_page_;}
-    int page_count        () const {return page_count_        ;}
+    int number_of_pages   () const {return number_of_pages_   ;}
 
   private:
     // Ctor arguments.
-    int const total_rows_;
+    int const number_of_rows_;
     int const rows_per_group_;
     int const max_lines_per_page_;
 
@@ -166,7 +170,7 @@ class LMI_SO prepaginator
     int const rows_per_page_;
     int const lines_on_full_page_;
     int       lines_on_last_page_;
-    int       page_count_;
+    int       number_of_pages_;
 };
 
 class LMI_SO paginator
@@ -174,7 +178,7 @@ class LMI_SO paginator
   public:
     paginator() {}
 
-    int init(int total_rows, int rows_per_group, int max_lines_per_page);
+    int init(int number_of_rows, int rows_per_group, int max_lines_per_page);
     void print();
 
   private:
@@ -185,21 +189,21 @@ class LMI_SO paginator
     virtual void close_page       () = 0;
     virtual void postlude         () = 0;
 
-    int total_rows        () const {return total_rows_        ;}
+    int number_of_rows    () const {return number_of_rows_    ;}
     int rows_per_group    () const {return rows_per_group_    ;}
 
     int lines_on_full_page() const {return lines_on_full_page_;}
     int lines_on_last_page() const {return lines_on_last_page_;}
-    int page_count        () const {return page_count_        ;}
+    int number_of_pages   () const {return number_of_pages_   ;}
 
     // init() arguments.
-    int total_rows_         {};
+    int number_of_rows_     {};
     int rows_per_group_     {};
 
     // init() results.
     int lines_on_full_page_ {};
     int lines_on_last_page_ {};
-    int page_count_         {};
+    int number_of_pages_    {};
 };
 
 #endif // report_table_hpp
diff --git a/report_table_test.cpp b/report_table_test.cpp
index 3b6bb05..81b7e8f 100644
--- a/report_table_test.cpp
+++ b/report_table_test.cpp
@@ -401,12 +401,12 @@ void 
report_table_test::test_column_widths_for_illustrations()
     }
 }
 
-class paginate_demo : public paginator
+class pagination_demo : public paginator
 {
   public:
-    paginate_demo() {}
+    pagination_demo() {}
 
-    int test_p(int total_rows, int rows_per_group, int max_lines_per_page);
+    int test(int number_of_rows, int rows_per_group, int max_lines_per_page);
 
     std::string str() const;
 
@@ -425,9 +425,17 @@ class paginate_demo : public paginator
     mutable int demo_row_           {0};
 };
 
-int paginate_demo::test_p(int total_rows, int rows_per_group, int 
max_lines_per_page)
+int pagination_demo::test
+    (int number_of_rows
+    ,int rows_per_group
+    ,int max_lines_per_page
+    )
 {
-    int page_count = init(total_rows, rows_per_group, max_lines_per_page);
+    int const number_of_pages = init
+        (number_of_rows
+        ,rows_per_group
+        ,max_lines_per_page
+        );
     oss_.str("");
     oss_.clear();
     demo_page_       = 0;
@@ -435,25 +443,25 @@ int paginate_demo::test_p(int total_rows, int 
rows_per_group, int max_lines_per_
     demo_line_count_ = 0;
     demo_row_        = 0;
     print();
-    return page_count;
+    return number_of_pages;
 }
 
-std::string paginate_demo::str() const
+std::string pagination_demo::str() const
 {
     return oss_.str();
 }
 
-void paginate_demo::prelude()
+void pagination_demo::prelude()
 {
     oss_ << "Paginated table demonstration begins...\n";
 }
 
-void paginate_demo::open_page()
+void pagination_demo::open_page()
 {
     oss_ << "Page " << demo_page_ << '\n';
 }
 
-void paginate_demo::print_a_data_row()
+void pagination_demo::print_a_data_row()
 {
     oss_
         << "   page "       << std::setw(3) << demo_page_
@@ -467,7 +475,7 @@ void paginate_demo::print_a_data_row()
     ++demo_row_;
 }
 
-void paginate_demo::print_a_separator()
+void pagination_demo::print_a_separator()
 {
     oss_
         << "   page "       << std::setw(3) << demo_page_
@@ -479,21 +487,25 @@ void paginate_demo::print_a_separator()
     ++demo_line_count_;
 }
 
-void paginate_demo::close_page()
+void pagination_demo::close_page()
 {
     demo_line_ = 0;
     ++demo_page_;
 }
 
-void paginate_demo::postlude()
+void pagination_demo::postlude()
 {
     oss_ << "...paginated table demonstration ends.\n";
 }
 
-std::string test_paginate(int total_rows, int rows_per_group, int 
max_lines_per_page)
+std::string test_pagination
+    (int number_of_rows
+    ,int rows_per_group
+    ,int max_lines_per_page
+    )
 {
-    paginate_demo z;
-    z.init(total_rows, rows_per_group, max_lines_per_page);
+    pagination_demo z;
+    z.init(number_of_rows, rows_per_group, max_lines_per_page);
     z.print();
     return z.str();
 }
@@ -501,125 +513,125 @@ std::string test_paginate(int total_rows, int 
rows_per_group, int max_lines_per_
 void report_table_test::test_paginator()
 {
     // Instead of testing classes prepaginator or paginator directly,
-    // use paginate_demo::test_p(), which instantiates paginator (and
+    // use pagination_demo::test(), which instantiates paginator (and
     // hence prepaginator) and exercises other code as well before
     // returning the page count.
-    paginate_demo p;
+    pagination_demo p;
 
     // Original tests: vary only the number of data rows.
 
     // Edge cases.
     // Arguably zero rows should mean zero pages.
-    BOOST_TEST_EQUAL(1, p.test_p( 0, 5, 28));
-    BOOST_TEST_EQUAL(1, p.test_p( 1, 5, 28));
-    // Just a trivial sanity test_p.
-    BOOST_TEST_EQUAL(1, p.test_p(17, 5, 28));
+    BOOST_TEST_EQUAL(1, p.test( 0, 5, 28));
+    BOOST_TEST_EQUAL(1, p.test( 1, 5, 28));
+    // Just a trivial sanity test.
+    BOOST_TEST_EQUAL(1, p.test(17, 5, 28));
     // 4 full groups + incomplete last group.
-    BOOST_TEST_EQUAL(1, p.test_p(24, 5, 28));
+    BOOST_TEST_EQUAL(1, p.test(24, 5, 28));
     // 5 full groups don't fit on one page.
-    BOOST_TEST_EQUAL(2, p.test_p(25, 5, 28));
+    BOOST_TEST_EQUAL(2, p.test(25, 5, 28));
     // 4 + 4 groups + incomplete last one.
-    BOOST_TEST_EQUAL(2, p.test_p(44, 5, 28));
+    BOOST_TEST_EQUAL(2, p.test(44, 5, 28));
     // 9 full groups don't fit on two pages.
-    BOOST_TEST_EQUAL(3, p.test_p(45, 5, 28));
+    BOOST_TEST_EQUAL(3, p.test(45, 5, 28));
 
     // Test preconditions.
 
     // Negative number of data rows.
     BOOST_TEST_THROW
-        (p.test_p(-1, 1, 1)
+        (p.test(-1, 1, 1)
         ,std::runtime_error
         ,lmi_test::what_regex("^Assertion.*failed")
         );
 
     // Zero rows per group.
     BOOST_TEST_THROW
-        (p.test_p(1, 0, 1)
+        (p.test(1, 0, 1)
         ,std::logic_error
         ,"Rows per group must be positive."
         );
 
     // Negative number of rows per group.
     BOOST_TEST_THROW
-        (p.test_p(1, -1, 1)
+        (p.test(1, -1, 1)
         ,std::logic_error
         ,"Rows per group must be positive."
         );
 
     // Insufficient room to print even one group.
     BOOST_TEST_THROW
-        (p.test_p(1, 7, 3)
+        (p.test(1, 7, 3)
         ,std::runtime_error
         ,lmi_test::what_regex("^Assertion.*failed")
         );
 
     // A single row of data.
-    BOOST_TEST_EQUAL(1, p.test_p(1, 1, 1));
-    BOOST_TEST_EQUAL(1, p.test_p(1, 1, 3));
-    BOOST_TEST_EQUAL(1, p.test_p(1, 3, 3));
-    BOOST_TEST_EQUAL(1, p.test_p(1, 3, 7));
+    BOOST_TEST_EQUAL(1, p.test(1, 1, 1));
+    BOOST_TEST_EQUAL(1, p.test(1, 1, 3));
+    BOOST_TEST_EQUAL(1, p.test(1, 3, 3));
+    BOOST_TEST_EQUAL(1, p.test(1, 3, 7));
 
     // One-row groups:
 
     // Page length an odd number.
-    BOOST_TEST_EQUAL(1, p.test_p(1, 1, 5));
-    BOOST_TEST_EQUAL(1, p.test_p(3, 1, 5));
-    BOOST_TEST_EQUAL(2, p.test_p(4, 1, 5));
-    BOOST_TEST_EQUAL(2, p.test_p(6, 1, 5));
-    BOOST_TEST_EQUAL(3, p.test_p(7, 1, 5));
+    BOOST_TEST_EQUAL(1, p.test(1, 1, 5));
+    BOOST_TEST_EQUAL(1, p.test(3, 1, 5));
+    BOOST_TEST_EQUAL(2, p.test(4, 1, 5));
+    BOOST_TEST_EQUAL(2, p.test(6, 1, 5));
+    BOOST_TEST_EQUAL(3, p.test(7, 1, 5));
 
     // Same, but next even length: same outcome.
-    BOOST_TEST_EQUAL(1, p.test_p(1, 1, 6));
-    BOOST_TEST_EQUAL(1, p.test_p(3, 1, 6));
-    BOOST_TEST_EQUAL(2, p.test_p(4, 1, 6));
-    BOOST_TEST_EQUAL(2, p.test_p(6, 1, 6));
-    BOOST_TEST_EQUAL(3, p.test_p(7, 1, 6));
+    BOOST_TEST_EQUAL(1, p.test(1, 1, 6));
+    BOOST_TEST_EQUAL(1, p.test(3, 1, 6));
+    BOOST_TEST_EQUAL(2, p.test(4, 1, 6));
+    BOOST_TEST_EQUAL(2, p.test(6, 1, 6));
+    BOOST_TEST_EQUAL(3, p.test(7, 1, 6));
 
     // Two-row groups.
 
     // Page length four.
-    BOOST_TEST_EQUAL(1, p.test_p(1, 2, 4));
-    BOOST_TEST_EQUAL(1, p.test_p(3, 2, 4));
-    BOOST_TEST_EQUAL(2, p.test_p(4, 2, 4));
-    BOOST_TEST_EQUAL(2, p.test_p(5, 2, 4));
-    BOOST_TEST_EQUAL(3, p.test_p(6, 2, 4));
+    BOOST_TEST_EQUAL(1, p.test(1, 2, 4));
+    BOOST_TEST_EQUAL(1, p.test(3, 2, 4));
+    BOOST_TEST_EQUAL(2, p.test(4, 2, 4));
+    BOOST_TEST_EQUAL(2, p.test(5, 2, 4));
+    BOOST_TEST_EQUAL(3, p.test(6, 2, 4));
 
     // Page length five: no room for widow and orphan control.
-    BOOST_TEST_EQUAL(1, p.test_p(1, 2, 5));
-    BOOST_TEST_EQUAL(1, p.test_p(4, 2, 5));
-    BOOST_TEST_EQUAL(2, p.test_p(5, 2, 5));
-    BOOST_TEST_EQUAL(2, p.test_p(8, 2, 5));
-    BOOST_TEST_EQUAL(3, p.test_p(9, 2, 5));
+    BOOST_TEST_EQUAL(1, p.test(1, 2, 5));
+    BOOST_TEST_EQUAL(1, p.test(4, 2, 5));
+    BOOST_TEST_EQUAL(2, p.test(5, 2, 5));
+    BOOST_TEST_EQUAL(2, p.test(8, 2, 5));
+    BOOST_TEST_EQUAL(3, p.test(9, 2, 5));
 
     // Same, but next even length: same outcome.
-    BOOST_TEST_EQUAL(1, p.test_p(1, 2, 6));
-    BOOST_TEST_EQUAL(1, p.test_p(4, 2, 6));
-    BOOST_TEST_EQUAL(2, p.test_p(5, 2, 6));
-    BOOST_TEST_EQUAL(2, p.test_p(8, 2, 6));
-    BOOST_TEST_EQUAL(3, p.test_p(9, 2, 6));
+    BOOST_TEST_EQUAL(1, p.test(1, 2, 6));
+    BOOST_TEST_EQUAL(1, p.test(4, 2, 6));
+    BOOST_TEST_EQUAL(2, p.test(5, 2, 6));
+    BOOST_TEST_EQUAL(2, p.test(8, 2, 6));
+    BOOST_TEST_EQUAL(3, p.test(9, 2, 6));
 
     // Page length seven: one extra data row possible on last page.
-    BOOST_TEST_EQUAL(1, p.test_p(1, 2, 7));
-    BOOST_TEST_EQUAL(1, p.test_p(4, 2, 7));
-    BOOST_TEST_EQUAL(1, p.test_p(5, 2, 7));
-    BOOST_TEST_EQUAL(2, p.test_p(6, 2, 7));
-    BOOST_TEST_EQUAL(2, p.test_p(8, 2, 7));
-    BOOST_TEST_EQUAL(2, p.test_p(9, 2, 7));
+    BOOST_TEST_EQUAL(1, p.test(1, 2, 7));
+    BOOST_TEST_EQUAL(1, p.test(4, 2, 7));
+    BOOST_TEST_EQUAL(1, p.test(5, 2, 7));
+    BOOST_TEST_EQUAL(2, p.test(6, 2, 7));
+    BOOST_TEST_EQUAL(2, p.test(8, 2, 7));
+    BOOST_TEST_EQUAL(2, p.test(9, 2, 7));
 
     std::cout << "Zero rows" << std::endl;
-    std::cout << test_paginate(0, 2, 7) << std::endl;
+    std::cout << test_pagination(0, 2, 7) << std::endl;
     std::cout << "Last page: zero full groups and one partial" << std::endl;
-    std::cout << test_paginate(1, 2, 7) << std::endl;
+    std::cout << test_pagination(1, 2, 7) << std::endl;
     std::cout << "Last page: two full groups and one partial" << std::endl;
-    std::cout << test_paginate(5, 2, 7) << std::endl;
+    std::cout << test_pagination(5, 2, 7) << std::endl;
     std::cout << "Last page: one full group" << std::endl;
-    std::cout << test_paginate(6, 2, 7) << std::endl;
+    std::cout << test_pagination(6, 2, 7) << std::endl;
     std::cout << "Last page: one full group and one partial" << std::endl;
-    std::cout << test_paginate(7, 2, 7) << std::endl;
+    std::cout << test_pagination(7, 2, 7) << std::endl;
     std::cout << "Last page: full page" << std::endl;
-    std::cout << test_paginate(8, 2, 7) << std::endl;
+    std::cout << test_pagination(8, 2, 7) << std::endl;
     std::cout << "Last page: full page, plus an antiwidowed partial group" << 
std::endl;
-    std::cout << test_paginate(9, 2, 7) << std::endl;
+    std::cout << test_pagination(9, 2, 7) << std::endl;
 }
 
 int test_main(int, char*[])



reply via email to

[Prev in Thread] Current Thread [Next in Thread]