diff --git a/test/test_chrono_year_month_day.cpp b/test/test_chrono_year_month_day.cpp index 010ab916..c7e9cabd 100644 --- a/test/test_chrono_year_month_day.cpp +++ b/test/test_chrono_year_month_day.cpp @@ -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) { diff --git a/test/test_chrono_year_month_day_last.cpp b/test/test_chrono_year_month_day_last.cpp index 19c15102..4e9145b0 100644 --- a/test/test_chrono_year_month_day_last.cpp +++ b/test/test_chrono_year_month_day_last.cpp @@ -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) {