Enhancement

- Allows relative dates such as "1st" to be entered with capital ("1ST").
This commit is contained in:
Louis-Claude Canon
2012-07-30 12:38:39 +02:00
committed by Paul Beckingham
parent ee0a16f663
commit b5cd5ea188
2 changed files with 15 additions and 8 deletions

View File

@@ -992,21 +992,21 @@ bool Date::isRelativeDate (const std::string& input)
} }
// Support "21st" to indicate the next date that is the 21st day. // Support "21st" to indicate the next date that is the 21st day.
else if (input.length () <= 4 && else if (in.length () <= 4 &&
isdigit (input[0])) isdigit (in[0]))
{ {
int number; int number;
std::string ordinal; std::string ordinal;
if (isdigit (input[1])) if (isdigit (in[1]))
{ {
number = atoi (input.substr (0, 2).c_str ()); number = atoi (in.substr (0, 2).c_str ());
ordinal = lowerCase (input.substr (2)); ordinal = lowerCase (in.substr (2));
} }
else else
{ {
number = atoi (input.substr (0, 2).c_str ()); number = atoi (in.substr (0, 2).c_str ());
ordinal = lowerCase (input.substr (1)); ordinal = lowerCase (in.substr (1));
} }
// Sanity check. // Sanity check.

View File

@@ -35,7 +35,7 @@ Context context;
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
int main (int argc, char** argv) int main (int argc, char** argv)
{ {
UnitTest t (174); UnitTest t (177);
try try
{ {
@@ -342,6 +342,13 @@ int main (int argc, char** argv)
Date r16 ("soy"); Date r16 ("soy");
t.notok (r16.sameYear (now), "soy not in same year as now"); t.notok (r16.sameYear (now), "soy not in same year as now");
Date first ("1st");
t.notok (first.sameMonth (now), "1st not in same month as now");
t.is (first.day (), 1, "1st day is 1");
Date FIRST ("1ST");
t.ok (FIRST == first, "1st == 1ST");
Date later ("later"); Date later ("later");
t.is (later.month (), 1, "later -> m = 1"); t.is (later.month (), 1, "later -> m = 1");
t.is (later.day (), 18, "later -> d = 18"); t.is (later.day (), 18, "later -> d = 18");