void DateTest::testDate()
{ const Date aCE(1, 1, 1); // first day CE const Date aBCE(31, 12, -1); // last day BCE const Date aMin(1, 1, -32768); // minimum date const Date aMax(31, 12, 32767); // maximum date
Date aDate(Date::EMPTY); const sal_Int32 kMinDays = -11968265; const sal_Int32 kMaxDays = 11967900;
// Last day BCE to first day CE is 1 day difference.
CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(1), aCE - aBCE);
CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(-1), aBCE - aCE);
aDate = aBCE;
aDate.AddDays(1);
CPPUNIT_ASSERT_EQUAL(aCE.GetDate(), aDate.GetDate());
aDate = aCE;
aDate.AddDays(-1);
CPPUNIT_ASSERT_EQUAL(aBCE.GetDate(), aDate.GetDate());
// The entire BCE and CE ranges cover that many days. Day 0 is -0001-12-31
CPPUNIT_ASSERT_EQUAL(kMaxDays, aMax - aBCE);
CPPUNIT_ASSERT_EQUAL(kMinDays, aMin - aBCE);
// Empty date is not normalized and stays empty date.
aDate = Date(Date::EMPTY);
aDate.Normalize();
CPPUNIT_ASSERT_EQUAL(Date(Date::EMPTY).GetDate(), aDate.GetDate());
CPPUNIT_ASSERT(!aDate.IsValidDate()); // GetDate() also shall have no normalizing side effect
// 0000-01-00 normalized to -0001-12-31 // SetYear(0) asserts, use empty date to force.
aDate = Date(Date::EMPTY);
aDate.SetMonth(1);
aDate.SetDay(0);
aDate.Normalize();
CPPUNIT_ASSERT_EQUAL(Date(31, 12, -1).GetDate(), aDate.GetDate());
// 1999-00-00 normalized to 1998-12-31 (not 1998-11-30, or otherwise // also 0001-00-00 should be -0001-11-30 which it should not, should it?)
aDate.SetYear(1999);
aDate.SetMonth(0);
aDate.SetDay(0);
aDate.Normalize();
CPPUNIT_ASSERT_EQUAL(Date(31, 12, 1998).GetDate(), aDate.GetDate());
void DateTest::testLeapYear()
{
{
Date aDate(1, 1, 2000);
CPPUNIT_ASSERT(aDate.IsLeapYear());
}
{
Date aDate(1, 1, 1900);
CPPUNIT_ASSERT(!aDate.IsLeapYear());
}
{
Date aDate(1, 1, 1999);
CPPUNIT_ASSERT(!aDate.IsLeapYear());
}
{
Date aDate(1, 1, 2004);
CPPUNIT_ASSERT(aDate.IsLeapYear());
}
{
Date aDate(1, 1, 400);
CPPUNIT_ASSERT(aDate.IsLeapYear());
}
{ // Year -1 is a leap year.
Date aDate(28, 2, -1);
aDate.AddDays(1);
CPPUNIT_ASSERT(aDate.IsLeapYear());
CPPUNIT_ASSERT_EQUAL(Date(29, 2, -1).GetDate(), aDate.GetDate());
}
{ // Year -5 is a leap year.
Date aDate(28, 2, -5);
aDate.AddDays(1);
CPPUNIT_ASSERT(aDate.IsLeapYear());
CPPUNIT_ASSERT_EQUAL(Date(29, 2, -5).GetDate(), aDate.GetDate());
}
{
Date aDate(1, 1, 1900);
CPPUNIT_ASSERT_EQUAL(sal_uInt16(365), aDate.GetDaysInYear());
}
{
Date aDate(1, 1, 1999);
CPPUNIT_ASSERT_EQUAL(sal_uInt16(365), aDate.GetDaysInYear());
}
{
Date aDate(1, 1, 2004);
CPPUNIT_ASSERT_EQUAL(sal_uInt16(366), aDate.GetDaysInYear());
}
{
Date aDate(1, 1, 400);
CPPUNIT_ASSERT_EQUAL(sal_uInt16(366), aDate.GetDaysInYear());
}
}
void DateTest::testValidGregorianDate()
{
{
Date aDate(1, 0, 2000);
CPPUNIT_ASSERT(!aDate.IsValidAndGregorian());
}
{
Date aDate(1, 13, 2000);
CPPUNIT_ASSERT(!aDate.IsValidAndGregorian());
}
{
Date aDate(1, 1, 1581);
CPPUNIT_ASSERT(!aDate.IsValidAndGregorian());
}
{
Date aDate(1, 9, 1582);
CPPUNIT_ASSERT(!aDate.IsValidAndGregorian());
}
{
Date aDate(1, 10, 1582);
CPPUNIT_ASSERT(!aDate.IsValidAndGregorian());
}
{
Date aDate(32, 1, 2000);
CPPUNIT_ASSERT(!aDate.IsValidAndGregorian());
}
{
Date aDate(29, 2, 2000);
CPPUNIT_ASSERT(aDate.IsValidAndGregorian());
}
{
Date aDate(29, 2, 2001);
CPPUNIT_ASSERT(!aDate.IsValidAndGregorian());
}
{
Date aDate(32, 3, 2000);
CPPUNIT_ASSERT(!aDate.IsValidAndGregorian());
}
{
Date aDate(31, 4, 2000);
CPPUNIT_ASSERT(!aDate.IsValidAndGregorian());
}
{
Date aDate(32, 5, 2000);
CPPUNIT_ASSERT(!aDate.IsValidAndGregorian());
}
{
Date aDate(31, 6, 2000);
CPPUNIT_ASSERT(!aDate.IsValidAndGregorian());
}
{
Date aDate(32, 7, 2000);
CPPUNIT_ASSERT(!aDate.IsValidAndGregorian());
}
{
Date aDate(32, 8, 2000);
CPPUNIT_ASSERT(!aDate.IsValidAndGregorian());
}
{
Date aDate(31, 9, 2000);
CPPUNIT_ASSERT(!aDate.IsValidAndGregorian());
}
{
Date aDate(32, 10, 2000);
CPPUNIT_ASSERT(!aDate.IsValidAndGregorian());
}
{
Date aDate(31, 11, 2000);
CPPUNIT_ASSERT(!aDate.IsValidAndGregorian());
}
{
Date aDate(32, 12, 2000);
CPPUNIT_ASSERT(!aDate.IsValidAndGregorian());
}
}
void DateTest::testValidDate()
{
{ // Empty date is not a valid date.
Date aDate(Date::EMPTY);
CPPUNIT_ASSERT(aDate.IsEmpty());
CPPUNIT_ASSERT(!aDate.IsValidDate());
}
{
Date aDate(32, 1, 2000);
CPPUNIT_ASSERT(!aDate.IsValidDate());
}
{
Date aDate(29, 2, 2000);
CPPUNIT_ASSERT(aDate.IsValidDate());
}
{
Date aDate(29, 2, 2001);
CPPUNIT_ASSERT(!aDate.IsValidDate());
}
{
Date aDate(32, 3, 2000);
CPPUNIT_ASSERT(!aDate.IsValidDate());
}
{
Date aDate(31, 4, 2000);
CPPUNIT_ASSERT(!aDate.IsValidDate());
}
{
Date aDate(32, 5, 2000);
CPPUNIT_ASSERT(!aDate.IsValidDate());
}
{
Date aDate(31, 6, 2000);
CPPUNIT_ASSERT(!aDate.IsValidDate());
}
{
Date aDate(32, 7, 2000);
CPPUNIT_ASSERT(!aDate.IsValidDate());
}
{
Date aDate(32, 8, 2000);
CPPUNIT_ASSERT(!aDate.IsValidDate());
}
{
Date aDate(31, 9, 2000);
CPPUNIT_ASSERT(!aDate.IsValidDate());
}
{
Date aDate(32, 10, 2000);
CPPUNIT_ASSERT(!aDate.IsValidDate());
}
{
Date aDate(31, 11, 2000);
CPPUNIT_ASSERT(!aDate.IsValidDate());
}
{
Date aDate(32, 12, 2000);
CPPUNIT_ASSERT(!aDate.IsValidDate());
}
}
void DateTest::testNormalize()
{
{
Date aDate(32, 2, 1999);
aDate.Normalize();
Date aExpectedDate(4, 3, 1999);
CPPUNIT_ASSERT_EQUAL(aExpectedDate, aDate);
}
{
Date aDate(1, 13, 1999);
aDate.Normalize();
Date aExpectedDate(1, 1, 2000);
CPPUNIT_ASSERT_EQUAL(aExpectedDate, aDate);
}
{
Date aDate(42, 13, 1999);
aDate.Normalize();
Date aExpectedDate(11, 2, 2000);
CPPUNIT_ASSERT_EQUAL(aExpectedDate, aDate);
}
{
Date aDate(1, 0, 1);
aDate.Normalize();
Date aExpectedDate(1, 12, -1);
CPPUNIT_ASSERT_EQUAL(aExpectedDate, aDate);
}
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.