mirror of
https://github.com/ETLCPP/etl.git
synced 2026-06-29 05:48:44 +08:00
Work in progress
This commit is contained in:
parent
ae31d581e2
commit
d15f35c78f
@ -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
|
||||
@ -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);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user