mirror of
https://github.com/GothenburgBitFactory/taskwarrior.git
synced 2025-07-07 20:06:36 +02:00
Enhancements - date
- Relocated valid.cpp/dataValid to Date::valid. - Added new unit tests in date.t.cpp.
This commit is contained in:
parent
d99dec5556
commit
0665caae55
5 changed files with 23 additions and 16 deletions
16
src/Date.cpp
16
src/Date.cpp
|
@ -254,6 +254,22 @@ const std::string Date::toString (const std::string& format /*= "m/d/Y" */) cons
|
||||||
return formatted;
|
return formatted;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
bool Date::valid (const std::string& input, const std::string& format)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Date test (input, format);
|
||||||
|
}
|
||||||
|
|
||||||
|
catch (...)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
bool Date::valid (const int m, const int d, const int y)
|
bool Date::valid (const int m, const int d, const int y)
|
||||||
{
|
{
|
||||||
|
|
|
@ -46,6 +46,7 @@ public:
|
||||||
time_t toEpoch ();
|
time_t toEpoch ();
|
||||||
void toMDY (int&, int&, int&);
|
void toMDY (int&, int&, int&);
|
||||||
const std::string toString (const std::string& format = "m/d/Y") const;
|
const std::string toString (const std::string& format = "m/d/Y") const;
|
||||||
|
static bool valid (const std::string&, const std::string& format = "m/d/Y");
|
||||||
static bool valid (const int, const int, const int);
|
static bool valid (const int, const int, const int);
|
||||||
|
|
||||||
static bool leapYear (int);
|
static bool leapYear (int);
|
||||||
|
|
|
@ -39,7 +39,6 @@
|
||||||
// valid.cpp
|
// valid.cpp
|
||||||
void guess (const std::string&, const char**, std::string&);
|
void guess (const std::string&, const char**, std::string&);
|
||||||
bool validPriority (const std::string&);
|
bool validPriority (const std::string&);
|
||||||
bool validDate (std::string&);
|
|
||||||
bool validDescription (const std::string&);
|
bool validDescription (const std::string&);
|
||||||
bool validDuration (std::string&);
|
bool validDuration (std::string&);
|
||||||
void validReportColumns (const std::vector <std::string>&);
|
void validReportColumns (const std::vector <std::string>&);
|
||||||
|
|
|
@ -34,7 +34,7 @@ Context context;
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
int main (int argc, char** argv)
|
int main (int argc, char** argv)
|
||||||
{
|
{
|
||||||
UnitTest t (100);
|
UnitTest t (102);
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
@ -75,6 +75,9 @@ int main (int argc, char** argv)
|
||||||
t.ok (Date::valid (2, 29, 2008), "valid: 2/29/2008");
|
t.ok (Date::valid (2, 29, 2008), "valid: 2/29/2008");
|
||||||
t.notok (Date::valid (2, 29, 2007), "invalid: 2/29/2007");
|
t.notok (Date::valid (2, 29, 2007), "invalid: 2/29/2007");
|
||||||
|
|
||||||
|
t.ok (Date::valid ("2/29/2008"), "valid: 2/29/2008");
|
||||||
|
t.notok (Date::valid ("2/29/2007"), "invalid: 2/29/2007");
|
||||||
|
|
||||||
// Leap year.
|
// Leap year.
|
||||||
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");
|
||||||
|
|
|
@ -152,18 +152,6 @@ void guess (
|
||||||
guess (type, options, candidate);
|
guess (type, options, candidate);
|
||||||
}
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
|
||||||
bool validDate (std::string& date)
|
|
||||||
{
|
|
||||||
Date test (date, context.config.get ("dateformat", "m/d/Y"));
|
|
||||||
|
|
||||||
char epoch[16];
|
|
||||||
sprintf (epoch, "%d", (int) test.toEpoch ());
|
|
||||||
date = epoch;
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
bool validPriority (const std::string& input)
|
bool validPriority (const std::string& input)
|
||||||
{
|
{
|
||||||
|
@ -207,10 +195,10 @@ bool validAttribute (std::string& name, std::string& value)
|
||||||
guess ("color", colors, value);
|
guess ("color", colors, value);
|
||||||
|
|
||||||
else if (name == "due" && value != "")
|
else if (name == "due" && value != "")
|
||||||
validDate (value);
|
Date (value);
|
||||||
|
|
||||||
else if (name == "until" && value != "")
|
else if (name == "until" && value != "")
|
||||||
validDate (value);
|
Date (value);
|
||||||
|
|
||||||
else if (name == "priority")
|
else if (name == "priority")
|
||||||
{
|
{
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue