2012-05-08 19:01:16 -07:00
|
|
|
#!/usr/bin/env perl
|
|
|
|
|
|
|
|
use strict;
|
|
|
|
use warnings;
|
|
|
|
use Test::More;
|
2014-12-27 00:42:14 -08:00
|
|
|
use Test::MockTime qw( :all );
|
2012-05-08 19:01:16 -07:00
|
|
|
use DDG::Test::Goodie;
|
|
|
|
|
|
|
|
zci answer_type => 'date_math';
|
2014-10-06 03:26:19 -07:00
|
|
|
zci is_cached => 1;
|
2012-05-08 19:01:16 -07:00
|
|
|
|
2016-01-14 08:45:57 -08:00
|
|
|
sub build_structured_answer {
|
|
|
|
my ($result, $input) = @_;
|
|
|
|
return $result, structured_answer => {
|
|
|
|
id => 'date_math',
|
|
|
|
name => 'Answer',
|
|
|
|
data => {
|
|
|
|
title => "$result",
|
|
|
|
subtitle => "$input",
|
|
|
|
},
|
|
|
|
templates => {
|
|
|
|
group => 'text',
|
|
|
|
},
|
|
|
|
};
|
|
|
|
}
|
2014-10-06 03:26:19 -07:00
|
|
|
|
2016-01-14 08:45:57 -08:00
|
|
|
sub build_test { test_zci(build_structured_answer(@_)) }
|
|
|
|
|
2016-01-14 08:46:21 -08:00
|
|
|
my @overjan = ('02 Feb 2012', '01 Jan 2012 + 32 days');
|
|
|
|
my @first_sec = ('02 Jan 2012', '01 Jan 2012 + 1 day');
|
2014-10-06 03:26:19 -07:00
|
|
|
|
2014-12-27 00:42:14 -08:00
|
|
|
set_fixed_time("2014-03-12T10:00:00");
|
2014-12-25 08:23:31 -08:00
|
|
|
|
2016-01-14 08:46:21 -08:00
|
|
|
ddg_goodie_test([ qw( DDG::Goodie::DateMath ) ],
|
|
|
|
# 2012 Jan tests
|
|
|
|
'Jan 1 2012 plus 32 days' => build_test(@overjan),
|
|
|
|
'January 1 2012 plus 32 days' => build_test(@overjan),
|
|
|
|
'January 1, 2012 plus 32 days' => build_test(@overjan),
|
|
|
|
'January 1st 2012 plus 32 days' => build_test(@overjan),
|
|
|
|
'32 days from January 1st 2012' => build_test(@overjan),
|
|
|
|
# Relative (to today)
|
|
|
|
'date January 1st' => build_test('01 Jan 2014', 'january 1st'),
|
|
|
|
'6 weeks ago' => build_test('29 Jan 2014', '6 weeks ago'),
|
|
|
|
'2 weeks from today' => build_test('26 Mar 2014', '12 Mar 2014 + 2 weeks'),
|
|
|
|
'in 3 weeks' => build_test('02 Apr 2014', 'in 3 weeks'),
|
|
|
|
'date today' => build_test('12 Mar 2014', 'today'),
|
|
|
|
'January 1st plus 32 days' => build_test('02 Feb 2014', '01 Jan 2014 + 32 days'),
|
2016-01-14 11:08:04 -08:00
|
|
|
'5 minutes from now' => build_test('12 Mar 2014 06:05:00', '12 Mar 2014 06:00:00 + 5 minutes'),
|
|
|
|
'twelve seconds ago' => build_test('12 Mar 2014 05:59:48', '12 Mar 2014 06:00:00 - 12 seconds'),
|
|
|
|
'01 Jan + 12 hours' => build_test('01 Jan 2014 12:00:00', '01 Jan 2014 00:00:00 + 12 hours'),
|
|
|
|
'date today plus 24 hours' => build_test('13 Mar 2014 06:00:00', '12 Mar 2014 06:00:00 + 24 hours'),
|
2016-01-15 11:31:03 -08:00
|
|
|
# time form
|
|
|
|
'time now' => build_test('12 Jan 2014 05:00:00 EST', 'now'),
|
|
|
|
'time 3 days ago' => build_test('09 Jan 2014 05:00:00 EST', '3 days ago'),
|
2016-01-14 08:46:21 -08:00
|
|
|
# Misc
|
2016-01-15 03:09:50 -08:00
|
|
|
'1 jan 2014 plus 2 weeks' => build_test('15 Jan 2014', '01 Jan 2014 + 2 weeks'),
|
|
|
|
'2nd Jan 2013 - 3000 seconds' => build_test('01 Jan 2013 23:10:00', '02 Jan 2013 00:00:00 - 3,000 seconds'),
|
2016-01-14 08:46:21 -08:00
|
|
|
# / form
|
|
|
|
'1/1/2012 plus 32 days' => build_test(@overjan),
|
|
|
|
'1/1/2012 plus 5 weeks' => build_test('05 Feb 2012', '01 Jan 2012 + 5 weeks'),
|
|
|
|
'1/1/2012 PlUs 5 months' => build_test('01 Jun 2012', '01 Jan 2012 + 5 months'),
|
|
|
|
'1/1/2012 PLUS 5 years' => build_test('01 Jan 2017', '01 Jan 2012 + 5 years'),
|
|
|
|
'1 day from 1/1/2012' => build_test(@first_sec),
|
|
|
|
'1/1/2012 plus 1 day' => build_test(@first_sec),
|
|
|
|
'1/1/2012 plus 1 days' => build_test(@first_sec),
|
|
|
|
'01/01/2012 + 1 day' => build_test(@first_sec),
|
|
|
|
'1/1/2012 minus ten days' => build_test('22 Dec 2011', '01 Jan 2012 - 10 days'),
|
2016-01-14 11:08:04 -08:00
|
|
|
'1/1/2012 + 1 second' => build_test('01 Jan 2012 00:00:01', '01 Jan 2012 00:00:00 + 1 second'),
|
2016-01-15 11:13:04 -08:00
|
|
|
# Feb 29
|
|
|
|
'Jan 1st 2012 + 59 days' => build_test('29 Feb 2012', '01 Jan 2012 + 59 days'),
|
|
|
|
'Jan 1st 2013 + 59 days' => build_test('01 Mar 2013', '01 Jan 2013 + 59 days'),
|
2016-01-14 08:46:21 -08:00
|
|
|
# Should not trigger
|
|
|
|
'yesterday' => undef,
|
|
|
|
'today' => undef,
|
2014-12-25 08:23:31 -08:00
|
|
|
'five years' => undef,
|
|
|
|
'two months' => undef,
|
2016-01-14 08:46:21 -08:00
|
|
|
'2 months' => undef,
|
|
|
|
'5 years' => undef,
|
2016-01-15 11:13:04 -08:00
|
|
|
'time ago' => undef,
|
2012-05-08 19:01:16 -07:00
|
|
|
);
|
|
|
|
|
|
|
|
done_testing;
|