From d15f35c78fea39eeef880ad93580394cf07d6843 Mon Sep 17 00:00:00 2001 From: John Wellbelove Date: Mon, 11 Sep 2023 11:15:49 +0100 Subject: [PATCH] Work in progress --- include/etl/private/chrono/day.h | 51 +------------- test/test_chrono_day.cpp | 117 ++++--------------------------- 2 files changed, 16 insertions(+), 152 deletions(-) diff --git a/include/etl/private/chrono/day.h b/include/etl/private/chrono/day.h index b04d3898..61d19e8b 100644 --- a/include/etl/private/chrono/day.h +++ b/include/etl/private/chrono/day.h @@ -182,53 +182,10 @@ namespace etl //*********************************************************************** ETL_CONSTEXPR etl::chrono::days operator -(const etl::chrono::day& d1, const etl::chrono::day& d2) ETL_NOEXCEPT { - return etl::chrono::days(static_cast(static_cast(d1)) - - static_cast(static_cast(d2))); - } + etl::chrono::days result; - //*********************************************************************** - ETL_CONSTEXPR bool operator ==(const etl::chrono::day& d1, const etl::chrono::day& d2) ETL_NOEXCEPT - { - return (static_cast(d1) == static_cast(d2)); + return etl::chrono::days(static_cast(d1) - static_cast(d2)); } - - //*********************************************************************** - ETL_CONSTEXPR bool operator !=(const etl::chrono::day& d1, const etl::chrono::day& d2) ETL_NOEXCEPT - { - return !(d1 == d2); - } - - //*********************************************************************** - ETL_CONSTEXPR bool operator <(const etl::chrono::day& d1, const etl::chrono::day& d2) ETL_NOEXCEPT - { - return (static_cast(d1) < static_cast(d2)); - } - - //*********************************************************************** - ETL_CONSTEXPR bool operator <=(const etl::chrono::day& d1, const etl::chrono::day& d2) ETL_NOEXCEPT - { - return (static_cast(d1) <= static_cast(d2)); - } - - //*********************************************************************** - ETL_CONSTEXPR bool operator >(const etl::chrono::day& d1, const etl::chrono::day& d2) ETL_NOEXCEPT - { - return (static_cast(d1) > static_cast(d2)); - } - - //*********************************************************************** - ETL_CONSTEXPR bool operator >=(const etl::chrono::day& d1, const etl::chrono::day& d2) ETL_NOEXCEPT - { - return (static_cast(d1) >= static_cast(d2)); - } - - //*********************************************************************** -#if ETL_USING_CPP20 - ETL_CONSTEXPR auto operator <=>(const etl::chrono::day& d1, const etl::chrono::day& d2) - { - return (static_cast(d1) <=> static_cast(d2)); - } -#endif } //************************************************************************* @@ -249,15 +206,12 @@ namespace etl #endif } -#if ETL_USING_CPP11 namespace etl { namespace literals { namespace chrono_literals { - //*********************************************************************** - /// Literal for days //*********************************************************************** ETL_CONSTEXPR etl::chrono::day operator ""_d(unsigned long long d) ETL_NOEXCEPT { @@ -266,6 +220,5 @@ namespace etl } } } -#endif #endif \ No newline at end of file diff --git a/test/test_chrono_day.cpp b/test/test_chrono_day.cpp index e6de125c..f8a3d453 100644 --- a/test/test_chrono_day.cpp +++ b/test/test_chrono_day.cpp @@ -154,40 +154,28 @@ namespace } //************************************************************************* - TEST(test_day_plus_days) + TEST(test_plus_days) { - std::chrono::day std_day(0); - etl::chrono::day day(0); + std::chrono::day std_day1(0); + std::chrono::day std_day2(0); + etl::chrono::day day1(0); + etl::chrono::day day2(0); std::chrono::days std_days(2); etl::chrono::days days(2); for (int i = 0; i < 128; ++i) { - std_day = std_day + std_days; - day = day + days; + std_day1 = std_days + std_day1; + std_day2 = std_day2 + std_days; + + day1 = days + day1; + day2 = day2 + days; - CHECK_EQUAL(std_day.ok(), day.ok()); - CHECK_EQUAL(unsigned(std_day), unsigned(day)); - } - } - - //************************************************************************* - TEST(test_days_plus_day) - { - std::chrono::day std_day(0); - etl::chrono::day day(0); - - std::chrono::days std_days(2); - etl::chrono::days days(2); - - for (int i = 0; i < 128; ++i) - { - std_day = std_days + std_day; - day = days + day; - - CHECK_EQUAL(std_day.ok(), day.ok()); - CHECK_EQUAL(unsigned(std_day), unsigned(day)); + CHECK_EQUAL(std_day1.ok(), day1.ok()); + CHECK_EQUAL(std_day2.ok(), day2.ok()); + CHECK_EQUAL(unsigned(std_day1), unsigned(day1)); + CHECK_EQUAL(unsigned(std_day2), unsigned(day2)); } } @@ -210,43 +198,6 @@ namespace } } - //************************************************************************* - TEST(test_day_minus_days) - { - std::chrono::day std_day(0); - etl::chrono::day day(0); - - std::chrono::days std_days(2); - etl::chrono::days days(2); - - for (int i = 0; i < 128; ++i) - { - std_day = std_day - std_days; - day = day - days; - - CHECK_EQUAL(std_day.ok(), day.ok()); - CHECK_EQUAL(unsigned(std_day), unsigned(day)); - } - } - - //************************************************************************* - TEST(test_day_minus_day) - { - for (int i = 1; i < 31; ++i) - { - std::chrono::day std_day1(i); - std::chrono::day std_day2(31 - i); - - etl::chrono::day day1(i); - etl::chrono::day day2(31 - i); - - std::chrono::days std_days = std_day1 - std_day2; - etl::chrono::days days = day1 - day2; - - CHECK_EQUAL(std_days.count(), days.count()); - } - } - //************************************************************************* TEST(test_literal_days) { @@ -259,46 +210,6 @@ namespace CHECK_EQUAL(std_day.ok(), day.ok()); CHECK_EQUAL(unsigned(std_day), unsigned(day)); } - - //************************************************************************* - TEST(test_day_comparison_operators) - { - etl::chrono::day day10(10); - etl::chrono::day day20(20); - - CHECK_TRUE(day10 == day10); - CHECK_FALSE(day10 != day10); - CHECK_TRUE(day10 < day20); - CHECK_FALSE(day10 < day10); - CHECK_FALSE(day20 < day10); - CHECK_TRUE(day10 <= day20); - CHECK_TRUE(day10 <= day10); - CHECK_FALSE(day20 <= day10); - CHECK_FALSE(day10 > day20); - CHECK_FALSE(day10 > day10); - CHECK_TRUE(day20 > day10); - CHECK_FALSE(day10 >= day20); - CHECK_TRUE(day10 >= day10); - CHECK_TRUE(day20 >= day10); - -#if ETL_USING_CPP20 - CHECK_TRUE((day10 <=> day10) == 0); - CHECK_TRUE((day10 <=> day20) < 0); - CHECK_TRUE((day20 <=> day10) > 0); -#endif - } - - //************************************************************************* - TEST(test_day_hash) - { - etl::chrono::day day(10); - - size_t h = 0; - - h = etl::hash()(day); - - CHECK_TRUE(h != 0); - } }; }