Move common dates to variables, change ambiguous date formats to ISO8601.

master
rpohankar 2016-05-17 19:17:16 +00:00
parent 8d79af13d1
commit b48932b0a4
1 changed files with 61 additions and 48 deletions

View File

@ -11,6 +11,19 @@ use Test::MockTime qw( :all );
zci answer_type => 'workdays_between';
zci is_cached => 0;
my @jan_6_to_10 = ('06 Jan 2014', '10 Jan 2014', 5);
my @jan_2014_to_2015 = ('01 Jan 2014', '01 Jan 2015', 251);
my @jan_31_2000_to_2001 = ('31 Jan 2000', '31 Jan 2001',253);
my @june_5_to_20 = ('05 Jun 2014', '20 Jun 2014', 12);
my @jan_6_to_13 = ('06 Jan 2014', '13 Jan 2014', 6);
my @jan_6_to_12 = ('06 Jan 2014', '12 Jan 2014', 5);
my @jan_11_to_14_sat = ('11 Jan 2014', '14 Jan 2014', 2);
my @jan_12_to_14_sun = ('12 Jan 2014', '14 Jan 2014', 2);
my @jun_16_to_20 = ('16 Jun 2014', '20 Jun 2014', 5);
my @jan_3_sameday = ('03 Jan 2014', '03 Jan 2014',1);
my @jan_4_samedaywknd = ('04 Jan 2014', '04 Jan 2014', 0);
my @jan_3_to_6_weekend_middle = ('03 Jan 2014', '06 Jan 2014', 2);
sub build_structured_answer {
my ($start_str, $end_str, $workdays, $regex) = @_;
@ -46,95 +59,95 @@ set_fixed_time("2015-01-11T09:45:56");
ddg_goodie_test(
[qw(DDG::Goodie::WorkdaysBetween)],
'Workdays between 01/31/2000 01/31/2001' => build_test('31 Jan 2000', '31 Jan 2001', 253),
'Workdays between 01/31/2000 and 01/31/2001 inclusive' => build_test('31 Jan 2000', '31 Jan 2001', 253),
'Workdays between 01/31/2000 01/31/2001 inclusive' => build_test('31 Jan 2000', '31 Jan 2001', 253),
'Workdays between jan 3 2013 and jan 4 2013' => build_test('03 Jan 2013', '04 Jan 2013', 2),
'Workdays between 01/31/2000 01/31/2001' => build_test(@jan_31_2000_to_2001),
'Workdays between 01/31/2000 and 01/31/2001 inclusive' => build_test(@jan_31_2000_to_2001),
'Workdays between 01/31/2000 01/31/2001 inclusive' => build_test(@jan_31_2000_to_2001),
#weekend in the middle with to
'Workdays between jan 3, 2014 to jan 6, 2014 inclusive' => build_test('03 Jan 2014', '06 Jan 2014', 2),
'Workdays between jan 3, 2014 to jan 6, 2014' => build_test('03 Jan 2014', '06 Jan 2014', 2),
'Workdays between jan 3, 2014 to jan 6, 2014 inclusive' => build_test(@jan_3_to_6_weekend_middle),
'Workdays between jan 3, 2014 to jan 6, 2014' => build_test(@jan_3_to_6_weekend_middle),
#weekend in the middle
'Workdays between jan 3, 2014 jan 6, 2014' => build_test('03 Jan 2014', '06 Jan 2014', 2),
'Workdays between jan 3, 2014 jan 6, 2014 inclusive' => build_test('03 Jan 2014', '06 Jan 2014', 2),
'Workdays between jan 3, 2014 jan 6, 2014' => build_test(@jan_3_to_6_weekend_middle),
'Workdays between jan 3, 2014 jan 6, 2014 inclusive' => build_test(@jan_3_to_6_weekend_middle),
#same day on a weekend
'Workdays between jan 4, 2014 jan 4, 2014' => build_test('04 Jan 2014', '04 Jan 2014', 0),
'Workdays between jan 4, 2014 jan 4, 2014 inclusive' => build_test('04 Jan 2014', '04 Jan 2014', 0),
'Workdays between jan 4, 2014 jan 4, 2014' => build_test(@jan_4_samedaywknd),
'Workdays between jan 4, 2014 jan 4, 2014 inclusive' => build_test(@jan_4_samedaywknd),
# Same day
'Workdays between jan 3, 2014 jan 3, 2014' => build_test('03 Jan 2014', '03 Jan 2014', 1),
'Workdays between jan 3, 2014 jan 3, 2014 inclusive' => build_test('03 Jan 2014', '03 Jan 2014', 1),
'Workdays between jan 3, 2014 jan 3, 2014' => build_test(@jan_3_sameday),
'Workdays between jan 3, 2014 jan 3, 2014 inclusive' => build_test(@jan_3_sameday),
# Unambiguous date format with comma separator
'Workdays between jan 6, 2014 jan 10, 2014' => build_test('06 Jan 2014', '10 Jan 2014', 5),
'Workdays between jan 6, 2014 jan 10, 2014 inclusive' => build_test('06 Jan 2014', '10 Jan 2014', 5),
'Workdays between jan 6, 2014 jan 10, 2014' => build_test(@jan_6_to_10),
'Workdays between jan 6, 2014 jan 10, 2014 inclusive' => build_test(@jan_6_to_10),
# Unambiguous date format
'Workdays between jan 6 2014 jan 10 2014' => build_test('06 Jan 2014', '10 Jan 2014', 5),
'Workdays between jan 6 2014 jan 10 2014 inclusive' => build_test('06 Jan 2014', '10 Jan 2014', 5),
'Workdays between jan 6 2014 jan 10 2014' => build_test(@jan_6_to_10),
'Workdays between jan 6 2014 jan 10 2014 inclusive' => build_test(@jan_6_to_10),
# Single digit days and months - Dash format
'Workdays between 1-6-2014 1-10-2014' => build_test('06 Jan 2014', '10 Jan 2014', 5),
'Workdays between 1-6-2014 1-10-2014 inclusive' => build_test('06 Jan 2014', '10 Jan 2014', 5),
'Workdays between 1-6-2014 1-10-2014' => build_test(@jan_6_to_10),
'Workdays between 1-6-2014 1-10-2014 inclusive' => build_test(@jan_6_to_10),
# Month and Date are backwards - Dash format
'Workdays between 16-06-2014 20-06-2014' => build_test('16 Jun 2014', '20 Jun 2014', 5),
'Workdays between 5-06-2014 20-06-2014' => build_test('05 Jun 2014', '20 Jun 2014', 12),
'Workdays between 20-06-2014 5-06-2014' => build_test('05 Jun 2014', '20 Jun 2014', 12),
'Workdays between 16-06-2014 20-06-2014' => build_test(@jun_16_to_20),
'Workdays between 5-06-2014 20-06-2014' => build_test(@june_5_to_20),
'Workdays between 20-06-2014 5-06-2014' => build_test(@june_5_to_20),
# Business Days - Dash format
'business days between 01-06-2014 01-10-2014' => build_test('06 Jan 2014', '10 Jan 2014', 5),
'business days between 01-06-2014 01-10-2014 inclusive' => build_test('06 Jan 2014', '10 Jan 2014', 5),
'business days between 2014-01-06 2014-01-10' => build_test(@jan_6_to_10),
'business days between 2014-01-06 2014-01-10 inclusive' => build_test(@jan_6_to_10),
# Workdays in a year - Dash format
'Workdays between 01-01-2014 01-01-2015' => build_test('01 Jan 2014', '01 Jan 2015', 251),
'Workdays between 01-01-2014 01-01-2015 inclusive' => build_test('01 Jan 2014', '01 Jan 2015', 251),
'Workdays between 01-01-2014 01-01-2015' => build_test(@jan_2014_to_2015),
'Workdays between 01-01-2014 01-01-2015 inclusive' => build_test(@jan_2014_to_2015),
# Single digit days and months
'Workdays between 1/6/2014 1/10/2014' => build_test('06 Jan 2014', '10 Jan 2014', 5),
'Workdays between 1/6/2014 1/10/2014 inclusive' => build_test('06 Jan 2014', '10 Jan 2014', 5),
'Workdays between 2014-01-06 2014-01-10' => build_test(@jan_6_to_10),
'Workdays between 2014-01-06 2014-01-10 inclusive' => build_test(@jan_6_to_10),
# Month and Date are backwards
'Workdays between 16/06/2014 20/06/2014' => build_test('16 Jun 2014', '20 Jun 2014', 5),
'Workdays between 5/06/2014 20/06/2014' => build_test('05 Jun 2014', '20 Jun 2014', 12),
'Workdays between 20/06/2014 5/06/2014' => build_test('05 Jun 2014', '20 Jun 2014', 12),
'Workdays between 16/06/2014 20/06/2014' => build_test(@jun_16_to_20),
'Workdays between 2014-06-05 2014-06-20' => build_test(@june_5_to_20),
'Workdays between 2014-06-20 2014-06-05' => build_test(@june_5_to_20),
# Workdays in a year
'Workdays between 01/01/2014 01/01/2015' => build_test('01 Jan 2014', '01 Jan 2015', 251),
'Workdays between 01/01/2014 01/01/2015 inclusive' => build_test('01 Jan 2014', '01 Jan 2015', 251),
'Workdays between 01/01/2014 01/01/2015' => build_test(@jan_2014_to_2015),
'Workdays between 01/01/2014 01/01/2015 inclusive' => build_test(@jan_2014_to_2015),
# Starting on a Sunday
'Workdays between 01/12/2014 01/14/2014' => build_test('12 Jan 2014', '14 Jan 2014', 2),
'Workdays between 01/12/2014 01/14/2014 inclusive' => build_test('12 Jan 2014', '14 Jan 2014', 2),
'Workdays between 2014-01-12 2014-01-14' => build_test(@jan_12_to_14_sun),
'Workdays between 2014-01-12 2014-01-14 inclusive' => build_test(@jan_12_to_14_sun),
# Starting on a Saturday
'Workdays between 01/11/2014 01/14/2014' => build_test('11 Jan 2014', '14 Jan 2014', 2),
'Workdays between 01/11/2014 01/14/2014 inclusive' => build_test('11 Jan 2014', '14 Jan 2014', 2),
'Workdays between 2014-01-11 2014-01-14' => build_test(@jan_11_to_14_sat),
'Workdays between 2014-01-11 2014-01-14 inclusive' => build_test(@jan_11_to_14_sat),
# Including the weekend -- Backwards
'Workdays between 01/13/2014 01/06/2014' => build_test('06 Jan 2014', '13 Jan 2014', 6),
'Workdays between 01/13/2014 01/06/2014 inclusive' => build_test('06 Jan 2014', '13 Jan 2014', 6),
'Workdays between 2014-01-13 2014-01-06' => build_test(@jan_6_to_13),
'Workdays between 2014-01-13 2014-01-06 inclusive' => build_test(@jan_6_to_13),
# Including the weekend
'Workdays between 01/06/2014 01/13/2014' => build_test('06 Jan 2014', '13 Jan 2014', 6),
'Workdays between 01/06/2014 01/13/2014 inclusive' => build_test('06 Jan 2014', '13 Jan 2014', 6),
'Workdays between 2014-01-06 2014-01-13' => build_test(@jan_6_to_13),
'Workdays between 2014-01-06 2014-01-13 inclusive' => build_test(@jan_6_to_13),
# Standard work week
'Workdays between 01/06/2014 01/10/2014' => build_test('06 Jan 2014', '10 Jan 2014', 5),
'Workdays between 01/06/2014 01/10/2014 inclusive' => build_test('06 Jan 2014', '10 Jan 2014', 5),
'Workdays between 01/06/2014 01/10/2014' => build_test(@jan_6_to_10),
'Workdays between 01/06/2014 01/10/2014 inclusive' => build_test(@jan_6_to_10),
# Ending date first
'Workdays between 01/10/2014 01/06/2014' => build_test('06 Jan 2014', '10 Jan 2014', 5),
'Workdays between 01/10/2014 01/06/2014 inclusive' => build_test('06 Jan 2014', '10 Jan 2014', 5),
'Workdays between 2014-01-06 2014-01-10' => build_test(@jan_6_to_10),
'Workdays between 2014-01-06 2014-01-10 inclusive' => build_test(@jan_6_to_10),
# Ending date on a weekend
'Workdays between 01/06/2014 01/12/2014' => build_test('06 Jan 2014', '12 Jan 2014', 5),
'Workdays between 01/06/2014 01/12/2014 inclusive' => build_test('06 Jan 2014', '12 Jan 2014', 5),
'Workdays between 2014-01-06 2014-01-12' => build_test(@jan_6_to_12),
'Workdays between 2014-01-06 2014-01-12 inclusive' => build_test(@jan_6_to_12),
'business days between jan 10 and jan 20' => build_test(qr/10 Jan [0-9]{4}/, qr/20 Jan [0-9]{4}/, qr/[1-9]/, 'true'),
'business days between january and february' => build_test(qr/01 Jan [0-9]{4}/, qr/01 Feb [0-9]{4}/, qr/[1-9][0-9]/, 'true'),
'Workdays between jan 3 2013 and jan 4 2013' => build_test('03 Jan 2013', '04 Jan 2013', 2),
'business days between jan 10 and jan 20' => build_test(qr/10 Jan [0-9]{4}/, qr/20 Jan [0-9]{4}/, qr/[1-9]/, 'true'),
'business days between january and february' => build_test(qr/01 Jan [0-9]{4}/, qr/01 Feb [0-9]{4}/, qr/[1-9][0-9]/, 'true'),
# Invalid input
'Workdays between 01/2014 01/2015' => undef,