Added arithmetic tests

This commit is contained in:
John Wellbelove 2025-05-25 19:06:27 +01:00
parent 30281b2a1d
commit afdb37715d
2 changed files with 95 additions and 11 deletions

View File

@ -121,18 +121,18 @@ namespace
//*************************************************************************
TEST(test_year_month_day_compare)
{
Chrono::year_month_day ym1{Chrono::year(2000), Chrono::January, Chrono::day(1)};
Chrono::year_month_day ym2{Chrono::year(2001), Chrono::January, Chrono::day(1)};
Chrono::year_month_day ym3{Chrono::year(2000), Chrono::February, Chrono::day(1)};
Chrono::year_month_day ym4{Chrono::year(2000), Chrono::January, Chrono::day(2)};
Chrono::year_month_day ymd1{Chrono::year(2000), Chrono::January, Chrono::day(1)};
Chrono::year_month_day ymd2{Chrono::year(2001), Chrono::January, Chrono::day(1)};
Chrono::year_month_day ymd3{Chrono::year(2000), Chrono::February, Chrono::day(1)};
Chrono::year_month_day ymd4{Chrono::year(2000), Chrono::January, Chrono::day(2)};
CHECK_TRUE(ym1.compare(ym1) == 0);
CHECK_TRUE(ym1.compare(ym2) == -1);
CHECK_TRUE(ym2.compare(ym1) == 1);
CHECK_TRUE(ym1.compare(ym3) == -1);
CHECK_TRUE(ym3.compare(ym1) == 1);
CHECK_TRUE(ym1.compare(ym4) == -1);
CHECK_TRUE(ym4.compare(ym1) == 1);
CHECK_TRUE(ymd1.compare(ymd1) == 0);
CHECK_TRUE(ymd1.compare(ymd2) == -1);
CHECK_TRUE(ymd2.compare(ymd1) == 1);
CHECK_TRUE(ymd1.compare(ymd3) == -1);
CHECK_TRUE(ymd3.compare(ymd1) == 1);
CHECK_TRUE(ymd1.compare(ymd4) == -1);
CHECK_TRUE(ymd4.compare(ymd1) == 1);
}
#endif
@ -156,6 +156,48 @@ namespace
CHECK_EQUAL((unsigned)expected.day(), (unsigned)ymd.day());
}
//*************************************************************************
TEST(test_year_month_day_member_arithmetic_operators)
{
Chrono::year_month_day ymd{Chrono::year(2000), Chrono::January, Chrono::day(1)};
ymd += Chrono::years(10);
CHECK_TRUE(Chrono::year_month_day(Chrono::year(2010), Chrono::January, Chrono::day(1)) == ymd);
ymd -= Chrono::years(5);
CHECK_TRUE(Chrono::year_month_day(Chrono::year(2005), Chrono::January, Chrono::day(1)) == ymd);
ymd += Chrono::months(10);
CHECK_TRUE(Chrono::year_month_day(Chrono::year(2005), Chrono::November, Chrono::day(1)) == ymd);
ymd -= Chrono::months(5);
CHECK_TRUE(Chrono::year_month_day(Chrono::year(2005), Chrono::June, Chrono::day(1)) == ymd);
}
//*************************************************************************
TEST(test_year_month_day_non_member_arithmetic_operators)
{
Chrono::year_month_day ymd{Chrono::year(2000), Chrono::January, Chrono::day(1)};
ymd = ymd + Chrono::years(10);
CHECK_TRUE(Chrono::year_month_day(Chrono::year(2010), Chrono::January, Chrono::day(1)) == ymd);
ymd = Chrono::years(10) + ymd;
CHECK_TRUE(Chrono::year_month_day(Chrono::year(2020), Chrono::January, Chrono::day(1)) == ymd);
ymd = ymd - Chrono::years(5);
CHECK_TRUE(Chrono::year_month_day(Chrono::year(2015), Chrono::January, Chrono::day(1)) == ymd);
ymd = ymd + Chrono::months(3);
CHECK_TRUE(Chrono::year_month_day(Chrono::year(2015), Chrono::April, Chrono::day(1)) == ymd);
ymd = Chrono::months(3) + ymd;
CHECK_TRUE(Chrono::year_month_day(Chrono::year(2015), Chrono::July, Chrono::day(1)) == ymd);
ymd = ymd - Chrono::months(5);
CHECK_TRUE(Chrono::year_month_day(Chrono::year(2015), Chrono::February, Chrono::day(1)) == ymd);
}
//*************************************************************************
TEST(test_year_month_day_equality_operator)
{

View File

@ -102,6 +102,48 @@ namespace
CHECK_EQUAL(31, (unsigned)year_month_day_last_2011_december.day());
}
//*************************************************************************
TEST(test_year_month_day_last_member_arithmetic_operators)
{
Chrono::year_month_day_last ymdl(Chrono::year(2000), Chrono::month_day_last(Chrono::January));
ymdl += Chrono::years(10);
CHECK_TRUE(Chrono::year_month_day_last(Chrono::year(2010), Chrono::month_day_last(Chrono::January)) == ymdl);
ymdl -= Chrono::years(5);
CHECK_TRUE(Chrono::year_month_day_last(Chrono::year(2005), Chrono::month_day_last(Chrono::January)) == ymdl);
ymdl += Chrono::months(10);
CHECK_TRUE(Chrono::year_month_day_last(Chrono::year(2005), Chrono::month_day_last(Chrono::November)) == ymdl);
ymdl -= Chrono::months(5);
CHECK_TRUE(Chrono::year_month_day_last(Chrono::year(2005), Chrono::month_day_last(Chrono::June)) == ymdl);
}
//*************************************************************************
TEST(test_year_month_day_last_non_member_arithmetic_operators)
{
Chrono::year_month_day_last ymdl(Chrono::year(2000), Chrono::month_day_last(Chrono::January));
ymdl = ymdl + Chrono::years(10);
CHECK_TRUE(Chrono::year_month_day_last(Chrono::year(2010), Chrono::month_day_last(Chrono::January)) == ymdl);
ymdl = Chrono::years(10) + ymdl;
CHECK_TRUE(Chrono::year_month_day_last(Chrono::year(2020), Chrono::month_day_last(Chrono::January)) == ymdl);
ymdl = ymdl - Chrono::years(5);
CHECK_TRUE(Chrono::year_month_day_last(Chrono::year(2015), Chrono::month_day_last(Chrono::January)) == ymdl);
ymdl = ymdl + Chrono::months(3);
CHECK_TRUE(Chrono::year_month_day_last(Chrono::year(2015), Chrono::month_day_last(Chrono::April)) == ymdl);
ymdl = Chrono::months(3) + ymdl;
CHECK_TRUE(Chrono::year_month_day_last(Chrono::year(2015), Chrono::month_day_last(Chrono::July)) == ymdl);
ymdl = ymdl - Chrono::months(5);
CHECK_TRUE(Chrono::year_month_day_last(Chrono::year(2015), Chrono::month_day_last(Chrono::February)) == ymdl);
}
//*************************************************************************
TEST(test_year_month_day_last_comparison_operators)
{