* Wrong unit test and algorithm for leapyears (year 1900)

This commit is contained in:
Federico Hernandez 2009-06-18 09:18:13 +02:00
parent 0ae76d3bf2
commit 8cf7888fd5
2 changed files with 10 additions and 4 deletions

View file

@ -303,9 +303,15 @@ bool Date::leapYear (int year)
{ {
bool ly = false; bool ly = false;
if (!(year % 4)) ly = true; if (!(year % 4))
else if (!(year % 400)) ly = true; {
else if (!(year % 100)) ly = false; ly = true;
if (!(year % 100))
{
ly = false;
if (!(year % 400)) ly =true;
}
}
return ly; return ly;
} }

View file

@ -82,7 +82,7 @@ int main (int argc, char** argv)
t.ok (Date::leapYear (2008), "2008 is a leap year"); t.ok (Date::leapYear (2008), "2008 is a leap year");
t.notok (Date::leapYear (2007), "2007 is not a leap year"); t.notok (Date::leapYear (2007), "2007 is not a leap year");
t.ok (Date::leapYear (2000), "2000 is a leap year"); t.ok (Date::leapYear (2000), "2000 is a leap year");
t.ok (Date::leapYear (1900), "1900 is a leap year"); t.notok (Date::leapYear (1900), "1900 is not a leap year");
// Days in month. // Days in month.
t.is (Date::daysInMonth (2, 2008), 29, "29 days in February 2008"); t.is (Date::daysInMonth (2, 2008), 29, "29 days in February 2008");