From f26cff9a4a8bcd0dbb3937ea7c45ce385bb4797a Mon Sep 17 00:00:00 2001 From: Paul Beckingham Date: Sat, 26 Sep 2015 14:32:14 -0400 Subject: [PATCH] ISO8601d: Added :dayName methods and tests --- src/ISO8601.cpp | 34 ++++++++++++++++++++++++++++++++++ src/ISO8601.h | 2 ++ test/iso8601d.t.cpp | 10 +++++++++- 3 files changed, 45 insertions(+), 1 deletion(-) diff --git a/src/ISO8601.cpp b/src/ISO8601.cpp index 8c18568c3..a3e2cbd3d 100644 --- a/src/ISO8601.cpp +++ b/src/ISO8601.cpp @@ -850,6 +850,40 @@ std::string ISO8601d::monthName (int month) return ucFirst (months[month - 1]); } +//////////////////////////////////////////////////////////////////////////////// +void ISO8601d::dayName (int dow, std::string& name) +{ + static const char* days[7] = + { + STRING_DATE_SUNDAY, + STRING_DATE_MONDAY, + STRING_DATE_TUESDAY, + STRING_DATE_WEDNESDAY, + STRING_DATE_THURSDAY, + STRING_DATE_FRIDAY, + STRING_DATE_SATURDAY, + }; + + name = ucFirst (days[dow]); +} + +//////////////////////////////////////////////////////////////////////////////// +std::string ISO8601d::dayName (int dow) +{ + static const char* days[7] = + { + STRING_DATE_SUNDAY, + STRING_DATE_MONDAY, + STRING_DATE_TUESDAY, + STRING_DATE_WEDNESDAY, + STRING_DATE_THURSDAY, + STRING_DATE_FRIDAY, + STRING_DATE_SATURDAY, + }; + + return ucFirst (days[dow]); +} + //////////////////////////////////////////////////////////////////////////////// // Static int ISO8601d::dayOfWeek (const std::string& input) diff --git a/src/ISO8601.h b/src/ISO8601.h index 9c489f54a..45027d06d 100644 --- a/src/ISO8601.h +++ b/src/ISO8601.h @@ -48,6 +48,8 @@ public: static int daysInMonth (int, int); static int daysInYear (int); static std::string monthName (int); + static void dayName (int, std::string&); + static std::string dayName (int); static int dayOfWeek (const std::string&); diff --git a/test/iso8601d.t.cpp b/test/iso8601d.t.cpp index 61aaad248..b3023af7e 100644 --- a/test/iso8601d.t.cpp +++ b/test/iso8601d.t.cpp @@ -71,7 +71,7 @@ void testParse ( //////////////////////////////////////////////////////////////////////////////// int main (int argc, char** argv) { - UnitTest t (808); + UnitTest t (815); ISO8601d iso; std::string::size_type start = 0; @@ -246,6 +246,14 @@ int main (int argc, char** argv) t.is (ISO8601d::monthName (11), "November", "11 = November"); t.is (ISO8601d::monthName (12), "December", "12 = December"); + t.is (ISO8601d::dayName (0), "Sunday", "0 == Sunday"); + t.is (ISO8601d::dayName (1), "Monday", "1 == Monday"); + t.is (ISO8601d::dayName (2), "Tuesday", "2 == Tuesday"); + t.is (ISO8601d::dayName (3), "Wednesday", "3 == Wednesday"); + t.is (ISO8601d::dayName (4), "Thursday", "4 == Thursday"); + t.is (ISO8601d::dayName (5), "Friday", "5 == Friday"); + t.is (ISO8601d::dayName (6), "Saturday", "6 == Saturday"); + t.is (ISO8601d::dayOfWeek ("SUNDAY"), 0, "SUNDAY == 0"); t.is (ISO8601d::dayOfWeek ("sunday"), 0, "sunday == 0"); t.is (ISO8601d::dayOfWeek ("Sunday"), 0, "Sunday == 0");