From 6ed2bcd60564386b60ef66c2c618d979226c1641 Mon Sep 17 00:00:00 2001 From: Paul Beckingham Date: Sun, 21 Aug 2011 23:19:10 -0400 Subject: [PATCH] Durations - Removed support for ' 1 wk', namely spaces before and after the ordinal. This removes (some) ambiguity in more complex command lines. - Fixed unit tests accordingly. --- src/Duration.cpp | 5 -- test/duration.t.cpp | 188 ++++++++++++++++++++++---------------------- 2 files changed, 94 insertions(+), 99 deletions(-) diff --git a/src/Duration.cpp b/src/Duration.cpp index c42ba6bad..fdd37d0c0 100644 --- a/src/Duration.cpp +++ b/src/Duration.cpp @@ -338,9 +338,7 @@ bool Duration::valid (const std::string& input) // Assume the ordinal is 1, but look for an integer, just in case. double value = 1; Nibbler n (lower_input); - n.skipAll (' '); n.getNumber (value); - n.skipAll (' '); if (value < 0.0) value = -value; @@ -377,11 +375,8 @@ void Duration::parse (const std::string& input) // Assume the ordinal is 1, but look for an integer, just in case. double value = 1; Nibbler n (lower_input); - n.skipAll (' '); n.getNumber (value); - n.skipAll (' '); - if (value < 0.0) { mNegative = true; diff --git a/test/duration.t.cpp b/test/duration.t.cpp index 3635b8bca..83f1dc244 100644 --- a/test/duration.t.cpp +++ b/test/duration.t.cpp @@ -524,110 +524,110 @@ int main (int argc, char** argv) t.ok (d.valid ("biannual"), "valid duration biannual"); t.ok (d.valid ("biyearly"), "valid duration biyearly"); - t.ok (d.valid ("0 yrs"), "valid duration 0 yrs"); - t.ok (d.valid ("0 yr"), "valid duration 0 yr"); + t.ok (d.valid ("0yrs"), "valid duration 0yrs"); + t.ok (d.valid ("0yr"), "valid duration 0yr"); t.ok (d.valid ("0y"), "valid duration 0y"); - t.ok (d.valid ("1 yrs"), "valid duration 1 yrs"); - t.ok (d.valid ("1 yr"), "valid duration 1 yr"); + t.ok (d.valid ("1yrs"), "valid duration 1yrs"); + t.ok (d.valid ("1yr"), "valid duration 1yr"); t.ok (d.valid ("1y"), "valid duration 1y"); - t.ok (d.valid ("10 yrs"), "valid duration 10 yrs"); - t.ok (d.valid ("10 yr"), "valid duration 10 yr"); + t.ok (d.valid ("10yrs"), "valid duration 10yrs"); + t.ok (d.valid ("10yr"), "valid duration 10yr"); t.ok (d.valid ("10y"), "valid duration 10y"); - t.ok (d.valid ("1.1 yrs"), "valid duration 1.1 yrs"); - t.ok (d.valid ("-1.1 yrs"), "valid duration -1.1 yrs"); + t.ok (d.valid ("1.1yrs"), "valid duration 1.1yrs"); + t.ok (d.valid ("-1.1yrs"), "valid duration -1.1yrs"); t.ok (d.valid ("1.1y"), "valid duration 1.1y"); t.ok (d.valid ("-1.1y"), "valid duration -1.1y"); - t.ok (d.valid ("0 qtrs"), "valid duration 0 qtrs"); - t.ok (d.valid ("0 qtr"), "valid duration 0 qtr"); + t.ok (d.valid ("0qtrs"), "valid duration 0qtrs"); + t.ok (d.valid ("0qtr"), "valid duration 0qtr"); t.ok (d.valid ("0q"), "valid duration 0q"); - t.ok (d.valid ("1 qtrs"), "valid duration 1 qtrs"); - t.ok (d.valid ("1 qtr"), "valid duration 1 qtr"); + t.ok (d.valid ("1qtrs"), "valid duration 1qtrs"); + t.ok (d.valid ("1qtr"), "valid duration 1qtr"); t.ok (d.valid ("1q"), "valid duration 1q"); - t.ok (d.valid ("10 qtrs"), "valid duration 10 qtrs"); - t.ok (d.valid ("10 qtr"), "valid duration 10 qtr"); + t.ok (d.valid ("10qtrs"), "valid duration 10qtrs"); + t.ok (d.valid ("10qtr"), "valid duration 10qtr"); t.ok (d.valid ("10q"), "valid duration 10q"); - t.ok (d.valid ("0 mnths"), "valid duration 0 mnths"); - t.ok (d.valid ("0 mnth"), "valid duration 0 mnth"); + t.ok (d.valid ("0mnths"), "valid duration 0mnths"); + t.ok (d.valid ("0mnth"), "valid duration 0mnth"); t.ok (d.valid ("0mo"), "valid duration 0mo"); - t.ok (d.valid ("1 mnths"), "valid duration 1 mnths"); - t.ok (d.valid ("1 mnth"), "valid duration 1 mnth"); + t.ok (d.valid ("1mnths"), "valid duration 1mnths"); + t.ok (d.valid ("1mnth"), "valid duration 1mnth"); t.ok (d.valid ("1mo"), "valid duration 1mo"); - t.ok (d.valid ("10 mnths"), "valid duration 10 mnths"); - t.ok (d.valid ("10 mnth"), "valid duration 10 mnth"); + t.ok (d.valid ("10mnths"), "valid duration 10mnths"); + t.ok (d.valid ("10mnth"), "valid duration 10mnth"); t.ok (d.valid ("10mo"), "valid duration 10mo"); - t.ok (d.valid ("-1 mnths"), "valid duration -1 mnths"); - t.ok (d.valid ("-1 mnth"), "valid duration -1 mnth"); - t.ok (d.valid ("-1 mths"), "valid duration -1 mths"); - t.ok (d.valid ("-1 mth"), "valid duration -1 mth"); + t.ok (d.valid ("-1mnths"), "valid duration -1mnths"); + t.ok (d.valid ("-1mnth"), "valid duration -1mnth"); + t.ok (d.valid ("-1mths"), "valid duration -1mths"); + t.ok (d.valid ("-1mth"), "valid duration -1mth"); t.ok (d.valid ("-1mo"), "valid duration -1mo"); t.ok (d.valid ("0m"), "valid duration 0m"); t.ok (d.valid ("1m"), "valid duration 1m"); t.ok (d.valid ("10m"), "valid duration 10m"); t.ok (d.valid ("-1m"), "valid duration -1m"); - t.ok (d.valid ("0 wks"), "valid duration 0 wks"); - t.ok (d.valid ("0 wk"), "valid duration 0 wk"); + t.ok (d.valid ("0wks"), "valid duration 0wks"); + t.ok (d.valid ("0wk"), "valid duration 0wk"); t.ok (d.valid ("0w"), "valid duration 0w"); - t.ok (d.valid ("1 wks"), "valid duration 1 wks"); - t.ok (d.valid ("1 wk"), "valid duration 1 wk"); + t.ok (d.valid ("1wks"), "valid duration 1wks"); + t.ok (d.valid ("1wk"), "valid duration 1wk"); t.ok (d.valid ("1wk"), "valid duration 1wk"); t.ok (d.valid ("1w"), "valid duration 1w"); - t.ok (d.valid ("10 wks"), "valid duration 10 wks"); - t.ok (d.valid ("10 wk"), "valid duration 10 wk"); + t.ok (d.valid ("10wks"), "valid duration 10wks"); + t.ok (d.valid ("10wk"), "valid duration 10wk"); t.ok (d.valid ("10w"), "valid duration 10w"); - t.ok (d.valid ("-1 wks"), "valid duration -1 wks"); - t.ok (d.valid ("-1 wk"), "valid duration -1 wk"); + t.ok (d.valid ("-1wks"), "valid duration -1wks"); + t.ok (d.valid ("-1wk"), "valid duration -1wk"); t.ok (d.valid ("-1wk"), "valid duration -1wk"); t.ok (d.valid ("-1w"), "valid duration -1w"); - t.ok (d.valid ("0 days"), "valid duration 0 days"); - t.ok (d.valid ("0 day"), "valid duration 0 day"); + t.ok (d.valid ("0days"), "valid duration 0days"); + t.ok (d.valid ("0day"), "valid duration 0day"); t.ok (d.valid ("0d"), "valid duration 0d"); - t.ok (d.valid ("1 days"), "valid duration 1 days"); - t.ok (d.valid ("1 day"), "valid duration 1 day"); + t.ok (d.valid ("1days"), "valid duration 1days"); + t.ok (d.valid ("1day"), "valid duration 1day"); t.ok (d.valid ("1d"), "valid duration 1d"); - t.ok (d.valid ("10 days"), "valid duration 10 days"); - t.ok (d.valid ("10 day"), "valid duration 10 day"); + t.ok (d.valid ("10days"), "valid duration 10days"); + t.ok (d.valid ("10day"), "valid duration 10day"); t.ok (d.valid ("10d"), "valid duration 10d"); - t.ok (d.valid ("-1 days"), "valid duration -1 days"); - t.ok (d.valid ("-1 day"), "valid duration -1 day"); + t.ok (d.valid ("-1days"), "valid duration -1days"); + t.ok (d.valid ("-1day"), "valid duration -1day"); t.ok (d.valid ("-1d"), "valid duration -1d"); - t.ok (d.valid ("0 hrs"), "valid duration 0 hrs"); - t.ok (d.valid ("0 hr"), "valid duration 0 hr"); + t.ok (d.valid ("0hrs"), "valid duration 0hrs"); + t.ok (d.valid ("0hr"), "valid duration 0hr"); t.ok (d.valid ("0h"), "valid duration 0h"); - t.ok (d.valid ("1 hrs"), "valid duration 1 hrs"); - t.ok (d.valid ("1 hr"), "valid duration 1 hr"); + t.ok (d.valid ("1hrs"), "valid duration 1hrs"); + t.ok (d.valid ("1hr"), "valid duration 1hr"); t.ok (d.valid ("1h"), "valid duration 1h"); - t.ok (d.valid ("10 hrs"), "valid duration 10 hrs"); - t.ok (d.valid ("10 hr"), "valid duration 10 hr"); + t.ok (d.valid ("10hrs"), "valid duration 10hrs"); + t.ok (d.valid ("10hr"), "valid duration 10hr"); t.ok (d.valid ("10h"), "valid duration 10h"); - t.ok (d.valid ("-1 hrs"), "valid duration -1 hrs"); - t.ok (d.valid ("-1 hr"), "valid duration -1 hr"); + t.ok (d.valid ("-1hrs"), "valid duration -1hrs"); + t.ok (d.valid ("-1hr"), "valid duration -1hr"); t.ok (d.valid ("-1h"), "valid duration -1h"); - t.ok (d.valid ("0 mins"), "valid duration 0 mins"); - t.ok (d.valid ("0 min"), "valid duration 0 min"); - t.ok (d.valid ("1 mins"), "valid duration 1 mins"); - t.ok (d.valid ("1 min"), "valid duration 1 min"); - t.ok (d.valid ("10 mins"), "valid duration 10 mins"); - t.ok (d.valid ("10 min"), "valid duration 10 min"); - t.ok (d.valid ("-1 mins"), "valid duration -1 mins"); - t.ok (d.valid ("-1 min"), "valid duration -1 min"); + t.ok (d.valid ("0mins"), "valid duration 0mins"); + t.ok (d.valid ("0min"), "valid duration 0min"); + t.ok (d.valid ("1mins"), "valid duration 1mins"); + t.ok (d.valid ("1min"), "valid duration 1min"); + t.ok (d.valid ("10mins"), "valid duration 10mins"); + t.ok (d.valid ("10min"), "valid duration 10min"); + t.ok (d.valid ("-1mins"), "valid duration -1mins"); + t.ok (d.valid ("-1min"), "valid duration -1min"); - t.ok (d.valid ("0 secs"), "valid duration 0 secs"); - t.ok (d.valid ("0 sec"), "valid duration 0 sec"); + t.ok (d.valid ("0secs"), "valid duration 0secs"); + t.ok (d.valid ("0sec"), "valid duration 0sec"); t.ok (d.valid ("0s"), "valid duration 0s"); - t.ok (d.valid ("1 secs"), "valid duration 1 secs"); - t.ok (d.valid ("1 sec"), "valid duration 1 sec"); + t.ok (d.valid ("1secs"), "valid duration 1secs"); + t.ok (d.valid ("1sec"), "valid duration 1sec"); t.ok (d.valid ("1s"), "valid duration 1s"); - t.ok (d.valid ("10 secs"), "valid duration 10 secs"); - t.ok (d.valid ("10 sec"), "valid duration 10 sec"); + t.ok (d.valid ("10secs"), "valid duration 10secs"); + t.ok (d.valid ("10sec"), "valid duration 10sec"); t.ok (d.valid ("10s"), "valid duration 10s"); - t.ok (d.valid ("-1 secs"), "valid duration -1 secs"); - t.ok (d.valid ("-1 sec"), "valid duration -1 sec"); + t.ok (d.valid ("-1secs"), "valid duration -1secs"); + t.ok (d.valid ("-1sec"), "valid duration -1sec"); t.ok (d.valid ("-1s"), "valid duration -1s"); t.ok (d.valid ("-"), "valid duration -"); @@ -652,58 +652,58 @@ int main (int argc, char** argv) t.is (convertDuration ("biannual"), 730, "valid duration biannual"); t.is (convertDuration ("biyearly"), 730, "valid duration biyearly"); - t.is (convertDuration ("0 yrs"), 0, "valid duration 0 yrs"); - t.is (convertDuration ("0 yr"), 0, "valid duration 0 yr"); + t.is (convertDuration ("0yrs"), 0, "valid duration 0yrs"); + t.is (convertDuration ("0yr"), 0, "valid duration 0yr"); t.is (convertDuration ("0y"), 0, "valid duration 0y"); - t.is (convertDuration ("1 yrs"), 365, "valid duration 1 yrs"); - t.is (convertDuration ("1 yr"), 365, "valid duration 1 yr"); + t.is (convertDuration ("1yrs"), 365, "valid duration 1yrs"); + t.is (convertDuration ("1yr"), 365, "valid duration 1yr"); t.is (convertDuration ("1y"), 365, "valid duration 1y"); - t.is (convertDuration ("10 yrs"), 3650, "valid duration 10 yrs"); - t.is (convertDuration ("10 yr"), 3650, "valid duration 10 yr"); + t.is (convertDuration ("10yrs"), 3650, "valid duration 10yrs"); + t.is (convertDuration ("10yr"), 3650, "valid duration 10yr"); t.is (convertDuration ("10y"), 3650, "valid duration 10y"); - t.is (convertDuration ("0 qtrs"), 0, "valid duration 0 qtrs"); - t.is (convertDuration ("0 qtr"), 0, "valid duration 0 qtr"); + t.is (convertDuration ("0qtrs"), 0, "valid duration 0qtrs"); + t.is (convertDuration ("0qtr"), 0, "valid duration 0qtr"); t.is (convertDuration ("0q"), 0, "valid duration 0q"); - t.is (convertDuration ("1 qtrs"), 91, "valid duration 1 qtrs"); - t.is (convertDuration ("1 qtr"), 91, "valid duration 1 qtr"); + t.is (convertDuration ("1qtrs"), 91, "valid duration 1qtrs"); + t.is (convertDuration ("1qtr"), 91, "valid duration 1qtr"); t.is (convertDuration ("1q"), 91, "valid duration 1q"); - t.is (convertDuration ("10 qtrs"), 910, "valid duration 10 qtrs"); - t.is (convertDuration ("10 qtr"), 910, "valid duration 10 qtr"); + t.is (convertDuration ("10qtrs"), 910, "valid duration 10qtrs"); + t.is (convertDuration ("10qtr"), 910, "valid duration 10qtr"); t.is (convertDuration ("10q"), 910, "valid duration 10q"); - t.is (convertDuration ("0 mths"), 0, "valid duration 0 mths"); - t.is (convertDuration ("0 mth"), 0, "valid duration 0 mth"); + t.is (convertDuration ("0mths"), 0, "valid duration 0mths"); + t.is (convertDuration ("0mth"), 0, "valid duration 0mth"); t.is (convertDuration ("0mo"), 0, "valid duration 0mo"); - t.is (convertDuration ("1 mths"), 30, "valid duration 1 mths"); - t.is (convertDuration ("1 mth"), 30, "valid duration 1 mth"); + t.is (convertDuration ("1mths"), 30, "valid duration 1mths"); + t.is (convertDuration ("1mth"), 30, "valid duration 1mth"); t.is (convertDuration ("1mo"), 30, "valid duration 1mo"); - t.is (convertDuration ("10 mths"), 300, "valid duration 10 mths"); - t.is (convertDuration ("10 mth"), 300, "valid duration 10 mth"); + t.is (convertDuration ("10mths"), 300, "valid duration 10mths"); + t.is (convertDuration ("10mth"), 300, "valid duration 10mth"); t.is (convertDuration ("10mo"), 300, "valid duration 10mo"); t.is (convertDuration ("0m"), 0, "valid duration 0m"); t.is (convertDuration ("1m"), 30, "valid duration 1m"); t.is (convertDuration ("10m"), 300, "valid duration 10m"); t.is (convertDuration ("-1m"), 30, "valid duration -1m"); - t.is (convertDuration ("0 wks"), 0, "valid duration 0 wks"); - t.is (convertDuration ("0 wk"), 0, "valid duration 0 wk"); + t.is (convertDuration ("0wks"), 0, "valid duration 0wks"); + t.is (convertDuration ("0wk"), 0, "valid duration 0wk"); t.is (convertDuration ("0w"), 0, "valid duration 0w"); - t.is (convertDuration ("1 wks"), 7, "valid duration 1 wks"); - t.is (convertDuration ("1 wk"), 7, "valid duration 1 wk"); + t.is (convertDuration ("1wks"), 7, "valid duration 1wks"); + t.is (convertDuration ("1wk"), 7, "valid duration 1wk"); t.is (convertDuration ("1w"), 7, "valid duration 1w"); - t.is (convertDuration ("10 wks"), 70, "valid duration 10 wks"); - t.is (convertDuration ("10 wk"), 70, "valid duration 10 wk"); + t.is (convertDuration ("10wks"), 70, "valid duration 10wks"); + t.is (convertDuration ("10wk"), 70, "valid duration 10wk"); t.is (convertDuration ("10w"), 70, "valid duration 10w"); - t.is (convertDuration ("0 days"), 0, "valid duration 0 days"); - t.is (convertDuration ("0 day"), 0, "valid duration 0 day"); + t.is (convertDuration ("0days"), 0, "valid duration 0days"); + t.is (convertDuration ("0day"), 0, "valid duration 0day"); t.is (convertDuration ("0d"), 0, "valid duration 0d"); - t.is (convertDuration ("1 days"), 1, "valid duration 1 days"); - t.is (convertDuration ("1 day"), 1, "valid duration 1 day"); + t.is (convertDuration ("1days"), 1, "valid duration 1days"); + t.is (convertDuration ("1day"), 1, "valid duration 1day"); t.is (convertDuration ("1d"), 1, "valid duration 1d"); - t.is (convertDuration ("10 days"), 10, "valid duration 10 days"); - t.is (convertDuration ("10 day"), 10, "valid duration 10 day"); + t.is (convertDuration ("10days"), 10, "valid duration 10days"); + t.is (convertDuration ("10day"), 10, "valid duration 10day"); t.is (convertDuration ("10d"), 10, "valid duration 10d"); t.is (convertDuration ("-"), 0, "valid duration -");