82 lines
3.0 KiB
Perl
Executable File
82 lines
3.0 KiB
Perl
Executable File
#!/usr/bin/env perl
|
|
|
|
use strict;
|
|
use warnings;
|
|
use Test::More;
|
|
use Test::Deep;
|
|
use DDG::Test::Goodie;
|
|
|
|
zci answer_type => 'weekdays_between';
|
|
zci is_cached => 0;
|
|
|
|
my @plural = qw(are Weekdays);
|
|
my @jan_6_to_10 = ('06 Jan 2014', '10 Jan 2014', 5, @plural);
|
|
|
|
sub build_structured_answer {
|
|
my( $start_str, $end_str, $weekday_count, $verb, $weekday_plurality) = @_;
|
|
|
|
my $response = "There $verb $weekday_count $weekday_plurality between $start_str and $end_str.";
|
|
return $response,
|
|
structured_answer => {
|
|
data => {
|
|
title => $weekday_count,
|
|
subtitle => "$weekday_plurality between $start_str - $end_str",
|
|
},
|
|
templates => {
|
|
group => "text"
|
|
}
|
|
};
|
|
}
|
|
|
|
sub build_test{ test_zci(build_structured_answer(@_)) }
|
|
|
|
ddg_goodie_test(
|
|
[qw(DDG::Goodie::WeekdaysBetween)],
|
|
|
|
# Primary query example
|
|
'Weekdays between 2000-01-31 2001-01-31' => build_test('31 Jan 2000', '31 Jan 2001', 263, @plural),
|
|
|
|
# Test different trigger words
|
|
'week days between 2014-01-06 2014-01-10' => build_test(@jan_6_to_10),
|
|
'week days from 2014-01-06 2014-01-10' => build_test(@jan_6_to_10),
|
|
'Weekdays from 2014-01-06 2014-01-10' => build_test(@jan_6_to_10),
|
|
|
|
# Standard work week
|
|
'Weekdays between 2014-01-06 2014-01-10' => build_test(@jan_6_to_10),
|
|
|
|
# Ending date first
|
|
'Weekdays between 2014-01-06 2014-01-10' => build_test(@jan_6_to_10),
|
|
|
|
# Including the weekend -- Backwards
|
|
'Weekdays between 2014-01-13 2014-01-06' => build_test('06 Jan 2014', '13 Jan 2014', 6, @plural),
|
|
|
|
# Weekdays in a year
|
|
'Weekdays between 2014-01-01 2015-01-01' => build_test('01 Jan 2014', '01 Jan 2015', 262, @plural),
|
|
|
|
# Weekend in the middle
|
|
'Weekdays between jan 3, 2014 jan 6, 2014' => build_test('03 Jan 2014', '06 Jan 2014', 2, @plural),
|
|
|
|
# Same day
|
|
'Weekdays between jan 3, 2014 jan 3, 2014' => build_test('03 Jan 2014', '03 Jan 2014', 1, 'is', 'Weekday'),
|
|
|
|
# Same day on a weekend
|
|
'Weekdays between jan 4, 2014 jan 4, 2014' => build_test('04 Jan 2014', '04 Jan 2014', 0, @plural),
|
|
|
|
# Starting on a Saturday
|
|
'Weekdays between 2014-01-11 2014-01-14' => build_test('11 Jan 2014', '14 Jan 2014', 2, @plural),
|
|
|
|
# Starting on a Sunday
|
|
'Weekdays between 2014-01-12 2014-01-17' => build_test('12 Jan 2014', '17 Jan 2014', 5, @plural),
|
|
|
|
# Invalid input
|
|
'Weekdays between 01/2013 and 01/2014' => undef,
|
|
'Weekdays between feb 30, 2014 to mar 3, 2014' => undef,
|
|
'Weekdays between 01/01/2012' => undef,
|
|
'Weekdays between 18/17/2013 21/23/2015' => undef,
|
|
'Weekdays between 01/2013 and 01/2014 inclusive' => undef,
|
|
'Weekdays between feb 30, 2014 mar 3, 2014 inclusive' => undef,
|
|
'Weekdays between 01/01/2012 to' => undef,
|
|
'Weekdays between 18/17/2013 and 21/23/2015 inclusive' => undef,
|
|
);
|
|
|
|
done_testing; |