Work in progress

This commit is contained in:
John Wellbelove 2023-09-11 11:15:49 +01:00 committed by John Wellbelove
parent ae31d581e2
commit d15f35c78f
2 changed files with 16 additions and 152 deletions

View File

@ -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<int>(static_cast<unsigned>(d1)) -
static_cast<int>(static_cast<unsigned>(d2)));
}
etl::chrono::days result;
//***********************************************************************
ETL_CONSTEXPR bool operator ==(const etl::chrono::day& d1, const etl::chrono::day& d2) ETL_NOEXCEPT
{
return (static_cast<unsigned>(d1) == static_cast<unsigned>(d2));
return etl::chrono::days(static_cast<unsigned>(d1) - static_cast<unsigned>(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<unsigned>(d1) < static_cast<unsigned>(d2));
}
//***********************************************************************
ETL_CONSTEXPR bool operator <=(const etl::chrono::day& d1, const etl::chrono::day& d2) ETL_NOEXCEPT
{
return (static_cast<unsigned>(d1) <= static_cast<unsigned>(d2));
}
//***********************************************************************
ETL_CONSTEXPR bool operator >(const etl::chrono::day& d1, const etl::chrono::day& d2) ETL_NOEXCEPT
{
return (static_cast<unsigned>(d1) > static_cast<unsigned>(d2));
}
//***********************************************************************
ETL_CONSTEXPR bool operator >=(const etl::chrono::day& d1, const etl::chrono::day& d2) ETL_NOEXCEPT
{
return (static_cast<unsigned>(d1) >= static_cast<unsigned>(d2));
}
//***********************************************************************
#if ETL_USING_CPP20
ETL_CONSTEXPR auto operator <=>(const etl::chrono::day& d1, const etl::chrono::day& d2)
{
return (static_cast<unsigned>(d1) <=> static_cast<unsigned>(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

View File

@ -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<etl::chrono::day>()(day);
CHECK_TRUE(h != 0);
}
};
}