From d11ffd91c6b47b4cdfaa345bd1e32062de7aa43a Mon Sep 17 00:00:00 2001 From: Seth Parker Date: Mon, 16 Nov 2020 11:27:16 -0500 Subject: [PATCH] Round time estimate up to nearest nanosecond --- include/indicators/block_progress_bar.hpp | 7 ++++--- include/indicators/progress_bar.hpp | 7 ++++--- include/indicators/progress_spinner.hpp | 7 ++++--- single_include/indicators/indicators.hpp | 21 ++++++++++++--------- 4 files changed, 24 insertions(+), 18 deletions(-) diff --git a/include/indicators/block_progress_bar.hpp b/include/indicators/block_progress_bar.hpp index 9c7f8eb..dfc16af 100644 --- a/include/indicators/block_progress_bar.hpp +++ b/include/indicators/block_progress_bar.hpp @@ -200,9 +200,10 @@ private: if (saved_start_time) { auto eta = std::chrono::nanoseconds( - progress_ > 0 ? static_cast(float(elapsed.count()) * - max_progress / progress_) - : 0); + progress_ > 0 + ? static_cast(std::ceil(float(elapsed.count()) * + max_progress / progress_)) + : 0); auto remaining = eta > elapsed ? (eta - elapsed) : (elapsed - eta); details::write_duration(os, remaining); } else { diff --git a/include/indicators/progress_bar.hpp b/include/indicators/progress_bar.hpp index e976fbe..2ee8f58 100644 --- a/include/indicators/progress_bar.hpp +++ b/include/indicators/progress_bar.hpp @@ -255,9 +255,10 @@ private: if (saved_start_time) { auto eta = std::chrono::nanoseconds( - progress_ > 0 ? static_cast(float(elapsed_.count()) * - max_progress / progress_) - : 0); + progress_ > 0 + ? static_cast(std::ceil(float(elapsed_.count()) * + max_progress / progress_)) + : 0); auto remaining = eta > elapsed_ ? (eta - elapsed_) : (elapsed_ - eta); details::write_duration(os, remaining); } else { diff --git a/include/indicators/progress_spinner.hpp b/include/indicators/progress_spinner.hpp index 2fdb199..09e0b13 100644 --- a/include/indicators/progress_spinner.hpp +++ b/include/indicators/progress_spinner.hpp @@ -195,9 +195,10 @@ public: else os << " ["; auto eta = std::chrono::nanoseconds( - progress_ > 0 ? static_cast(float(elapsed.count()) * - max_progress / progress_) - : 0); + progress_ > 0 + ? static_cast(std::ceil(float(elapsed.count()) * + max_progress / progress_)) + : 0); auto remaining = eta > elapsed ? (eta - elapsed) : (elapsed - eta); details::write_duration(os, remaining); os << "]"; diff --git a/single_include/indicators/indicators.hpp b/single_include/indicators/indicators.hpp index c8a48f6..da35855 100644 --- a/single_include/indicators/indicators.hpp +++ b/single_include/indicators/indicators.hpp @@ -1788,9 +1788,10 @@ private: if (saved_start_time) { auto eta = std::chrono::nanoseconds( - progress_ > 0 ? static_cast(float(elapsed_.count()) * - max_progress / progress_) - : 0); + progress_ > 0 + ? static_cast(std::ceil(float(elapsed_.count()) * + max_progress / progress_)) + : 0); auto remaining = eta > elapsed_ ? (eta - elapsed_) : (elapsed_ - eta); details::write_duration(os, remaining); } else { @@ -2089,9 +2090,10 @@ private: if (saved_start_time) { auto eta = std::chrono::nanoseconds( - progress_ > 0 ? static_cast(float(elapsed.count()) * - max_progress / progress_) - : 0); + progress_ > 0 + ? static_cast(std::ceil(float(elapsed.count()) * + max_progress / progress_)) + : 0); auto remaining = eta > elapsed ? (eta - elapsed) : (elapsed - eta); details::write_duration(os, remaining); } else { @@ -2798,9 +2800,10 @@ public: else os << " ["; auto eta = std::chrono::nanoseconds( - progress_ > 0 ? static_cast(float(elapsed.count()) * - max_progress / progress_) - : 0); + progress_ > 0 + ? static_cast(std::ceil(float(elapsed.count()) * + max_progress / progress_)) + : 0); auto remaining = eta > elapsed ? (eta - elapsed) : (elapsed - eta); details::write_duration(os, remaining); os << "]";