Mercurial > thymian
comparison 3rdparty/vmime/tests/utility/datetimeUtilsTest.cpp @ 0:a4671277546c tip
created the repository for the thymian project
| author | ferencd |
|---|---|
| date | Tue, 17 Aug 2021 11:19:54 +0200 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| -1:000000000000 | 0:a4671277546c |
|---|---|
| 1 // | |
| 2 // VMime library (http://www.vmime.org) | |
| 3 // Copyright (C) 2002-2013 Vincent Richard <vincent@vmime.org> | |
| 4 // | |
| 5 // This program is free software; you can redistribute it and/or | |
| 6 // modify it under the terms of the GNU General Public License as | |
| 7 // published by the Free Software Foundation; either version 3 of | |
| 8 // the License, or (at your option) any later version. | |
| 9 // | |
| 10 // This program is distributed in the hope that it will be useful, | |
| 11 // but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| 13 // General Public License for more details. | |
| 14 // | |
| 15 // You should have received a copy of the GNU General Public License along | |
| 16 // with this program; if not, write to the Free Software Foundation, Inc., | |
| 17 // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. | |
| 18 // | |
| 19 // Linking this library statically or dynamically with other modules is making | |
| 20 // a combined work based on this library. Thus, the terms and conditions of | |
| 21 // the GNU General Public License cover the whole combination. | |
| 22 // | |
| 23 | |
| 24 #include "tests/testUtils.hpp" | |
| 25 | |
| 26 #include "vmime/dateTime.hpp" | |
| 27 #include "vmime/utility/datetimeUtils.hpp" | |
| 28 | |
| 29 | |
| 30 VMIME_TEST_SUITE_BEGIN(datetimeUtilsTest) | |
| 31 | |
| 32 VMIME_TEST_LIST_BEGIN | |
| 33 VMIME_TEST(testIsLeapYear) | |
| 34 VMIME_TEST(testGetDaysInMonth) | |
| 35 VMIME_TEST(testGetDaysInMonthLeapYear) | |
| 36 VMIME_TEST(testToUniversalTime) | |
| 37 VMIME_TEST(testToLocalTime) | |
| 38 VMIME_TEST(testGetDayOfWeek) | |
| 39 VMIME_TEST(testGetWeekOfYear) | |
| 40 VMIME_TEST_LIST_END | |
| 41 | |
| 42 | |
| 43 typedef vmime::utility::datetimeUtils datetimeUtils; | |
| 44 | |
| 45 | |
| 46 void testIsLeapYear() | |
| 47 { | |
| 48 VASSERT_EQ("1", false, datetimeUtils::isLeapYear(1999)); | |
| 49 VASSERT_EQ("2", false, datetimeUtils::isLeapYear(1800)); | |
| 50 VASSERT_EQ("3", false, datetimeUtils::isLeapYear(1900)); | |
| 51 VASSERT_EQ("4", false, datetimeUtils::isLeapYear(2100)); | |
| 52 VASSERT_EQ("5", false, datetimeUtils::isLeapYear(2200)); | |
| 53 | |
| 54 VASSERT_EQ("6", true, datetimeUtils::isLeapYear(1996)); | |
| 55 VASSERT_EQ("7", true, datetimeUtils::isLeapYear(2000)); | |
| 56 } | |
| 57 | |
| 58 void testGetDaysInMonth() | |
| 59 { | |
| 60 VASSERT_EQ("1", 31, datetimeUtils::getDaysInMonth(2006, 1)); | |
| 61 VASSERT_EQ("2", 28, datetimeUtils::getDaysInMonth(2006, 2)); | |
| 62 VASSERT_EQ("3", 31, datetimeUtils::getDaysInMonth(2006, 3)); | |
| 63 VASSERT_EQ("4", 30, datetimeUtils::getDaysInMonth(2006, 4)); | |
| 64 VASSERT_EQ("5", 31, datetimeUtils::getDaysInMonth(2006, 5)); | |
| 65 VASSERT_EQ("6", 30, datetimeUtils::getDaysInMonth(2006, 6)); | |
| 66 VASSERT_EQ("7", 31, datetimeUtils::getDaysInMonth(2006, 7)); | |
| 67 VASSERT_EQ("8", 31, datetimeUtils::getDaysInMonth(2006, 8)); | |
| 68 VASSERT_EQ("9", 30, datetimeUtils::getDaysInMonth(2006, 9)); | |
| 69 VASSERT_EQ("10", 31, datetimeUtils::getDaysInMonth(2006, 10)); | |
| 70 VASSERT_EQ("11", 30, datetimeUtils::getDaysInMonth(2006, 11)); | |
| 71 VASSERT_EQ("12", 31, datetimeUtils::getDaysInMonth(2006, 12)); | |
| 72 } | |
| 73 | |
| 74 void testGetDaysInMonthLeapYear() | |
| 75 { | |
| 76 VASSERT_EQ("1", 31, datetimeUtils::getDaysInMonth(2004, 1)); | |
| 77 VASSERT_EQ("2", 29, datetimeUtils::getDaysInMonth(2004, 2)); | |
| 78 VASSERT_EQ("3", 31, datetimeUtils::getDaysInMonth(2004, 3)); | |
| 79 VASSERT_EQ("4", 30, datetimeUtils::getDaysInMonth(2004, 4)); | |
| 80 VASSERT_EQ("5", 31, datetimeUtils::getDaysInMonth(2004, 5)); | |
| 81 VASSERT_EQ("6", 30, datetimeUtils::getDaysInMonth(2004, 6)); | |
| 82 VASSERT_EQ("7", 31, datetimeUtils::getDaysInMonth(2004, 7)); | |
| 83 VASSERT_EQ("8", 31, datetimeUtils::getDaysInMonth(2004, 8)); | |
| 84 VASSERT_EQ("9", 30, datetimeUtils::getDaysInMonth(2004, 9)); | |
| 85 VASSERT_EQ("10", 31, datetimeUtils::getDaysInMonth(2004, 10)); | |
| 86 VASSERT_EQ("11", 30, datetimeUtils::getDaysInMonth(2004, 11)); | |
| 87 VASSERT_EQ("12", 31, datetimeUtils::getDaysInMonth(2004, 12)); | |
| 88 } | |
| 89 | |
| 90 void testToUniversalTime() | |
| 91 { | |
| 92 const vmime::datetime local | |
| 93 (2005, 12, 2, 12, 34, 56, -789); | |
| 94 | |
| 95 const vmime::datetime gmt = | |
| 96 datetimeUtils::toUniversalTime(local); | |
| 97 | |
| 98 // 789 is 13 hours, 9 minutes later | |
| 99 VASSERT_EQ("1", 2005, gmt.getYear()); | |
| 100 VASSERT_EQ("2", 12, gmt.getMonth()); | |
| 101 VASSERT_EQ("3", 3, gmt.getDay()); | |
| 102 VASSERT_EQ("4", 1, gmt.getHour()); | |
| 103 VASSERT_EQ("5", 43, gmt.getMinute()); | |
| 104 VASSERT_EQ("6", 56, gmt.getSecond()); | |
| 105 VASSERT_EQ("7", 0, gmt.getZone()); | |
| 106 } | |
| 107 | |
| 108 void testToLocalTime() | |
| 109 { | |
| 110 const vmime::datetime date | |
| 111 (2005, 12, 2, 12, 34, 56, -120); // GMT-2 | |
| 112 | |
| 113 const vmime::datetime local = | |
| 114 datetimeUtils::toLocalTime(date, 120); // GMT+2 | |
| 115 | |
| 116 VASSERT_EQ("1", 2005, local.getYear()); | |
| 117 VASSERT_EQ("2", 12, local.getMonth()); | |
| 118 VASSERT_EQ("3", 2, local.getDay()); | |
| 119 VASSERT_EQ("4", 16, local.getHour()); | |
| 120 VASSERT_EQ("5", 34, local.getMinute()); | |
| 121 VASSERT_EQ("6", 56, local.getSecond()); | |
| 122 VASSERT_EQ("7", 120, local.getZone()); | |
| 123 } | |
| 124 | |
| 125 void testGetDayOfWeek() | |
| 126 { | |
| 127 VASSERT_EQ("1", vmime::datetime::WEDNESDAY, datetimeUtils::getDayOfWeek(1969, 12, 31)); | |
| 128 VASSERT_EQ("2", vmime::datetime::FRIDAY, datetimeUtils::getDayOfWeek(1976, 4, 9)); | |
| 129 VASSERT_EQ("3", vmime::datetime::TUESDAY, datetimeUtils::getDayOfWeek(1987, 6, 23)); | |
| 130 VASSERT_EQ("4", vmime::datetime::SATURDAY, datetimeUtils::getDayOfWeek(1990, 1, 13)); | |
| 131 VASSERT_EQ("5", vmime::datetime::MONDAY, datetimeUtils::getDayOfWeek(1999, 9, 20)); | |
| 132 VASSERT_EQ("6", vmime::datetime::THURSDAY, datetimeUtils::getDayOfWeek(2003, 2, 27)); | |
| 133 VASSERT_EQ("7", vmime::datetime::SATURDAY, datetimeUtils::getDayOfWeek(2005, 11, 19)); | |
| 134 VASSERT_EQ("8", vmime::datetime::WEDNESDAY, datetimeUtils::getDayOfWeek(2012, 5, 16)); | |
| 135 VASSERT_EQ("9", vmime::datetime::FRIDAY, datetimeUtils::getDayOfWeek(2027, 3, 12)); | |
| 136 } | |
| 137 | |
| 138 void testGetWeekOfYear() | |
| 139 { | |
| 140 VASSERT_EQ("1.1", 52, datetimeUtils::getWeekOfYear(2003, 12, 27)); | |
| 141 VASSERT_EQ("1.2", 52, datetimeUtils::getWeekOfYear(2003, 12, 28)); | |
| 142 VASSERT_EQ("1.3", 1, datetimeUtils::getWeekOfYear(2003, 12, 29, true)); | |
| 143 VASSERT_EQ("1.4", 53, datetimeUtils::getWeekOfYear(2003, 12, 29, false)); | |
| 144 VASSERT_EQ("1.5", 1, datetimeUtils::getWeekOfYear(2004, 1, 4)); | |
| 145 VASSERT_EQ("1.6", 2, datetimeUtils::getWeekOfYear(2004, 1, 5)); | |
| 146 VASSERT_EQ("1.7", 2, datetimeUtils::getWeekOfYear(2004, 1, 11)); | |
| 147 | |
| 148 VASSERT_EQ("2.1", 52, datetimeUtils::getWeekOfYear(2004, 12, 26)); | |
| 149 VASSERT_EQ("2.2", 53, datetimeUtils::getWeekOfYear(2004, 12, 27)); | |
| 150 VASSERT_EQ("2.3", 53, datetimeUtils::getWeekOfYear(2005, 1, 2)); | |
| 151 VASSERT_EQ("2.4", 1, datetimeUtils::getWeekOfYear(2005, 1, 3)); | |
| 152 VASSERT_EQ("2.5", 1, datetimeUtils::getWeekOfYear(2005, 1, 4)); | |
| 153 VASSERT_EQ("2.6", 2, datetimeUtils::getWeekOfYear(2005, 1, 11)); | |
| 154 | |
| 155 VASSERT_EQ("3.1", 9, datetimeUtils::getWeekOfYear(2027, 3, 7)); | |
| 156 VASSERT_EQ("3.2", 10, datetimeUtils::getWeekOfYear(2027, 3, 8)); | |
| 157 VASSERT_EQ("3.3", 10, datetimeUtils::getWeekOfYear(2027, 3, 14)); | |
| 158 VASSERT_EQ("3.4", 11, datetimeUtils::getWeekOfYear(2027, 3, 15)); | |
| 159 } | |
| 160 | |
| 161 VMIME_TEST_SUITE_END | |
| 162 |
