2017-03-23 09:51:39 -07:00
|
|
|
#!/usr/bin/env perl
|
|
|
|
|
|
|
|
use strict;
|
|
|
|
use warnings;
|
|
|
|
|
|
|
|
use Test::More;
|
|
|
|
use DDG::Test::Goodie;
|
|
|
|
|
2017-03-23 11:32:56 -07:00
|
|
|
zci answer_type => 'timer';
|
2017-03-23 09:51:39 -07:00
|
|
|
zci is_cached => 1;
|
|
|
|
|
2017-03-23 12:12:32 -07:00
|
|
|
# Get Goodie version for use with image paths
|
|
|
|
my $goodieVersion = $DDG::GoodieBundle::OpenSourceDuckDuckGo::VERSION // 999;
|
|
|
|
|
2017-03-23 09:51:39 -07:00
|
|
|
sub build_structured_answer {
|
|
|
|
my $time = shift;
|
|
|
|
$time = $time || 0;
|
|
|
|
return "$time",
|
|
|
|
structured_answer => {
|
2017-03-23 11:32:56 -07:00
|
|
|
id => 'timer',
|
2017-03-23 09:51:39 -07:00
|
|
|
name => 'Timer',
|
|
|
|
signal => 'high',
|
|
|
|
meta => {
|
|
|
|
sourceName => 'Timer',
|
|
|
|
itemType => 'timer',
|
|
|
|
},
|
|
|
|
data => {
|
|
|
|
time => "$time",
|
2017-03-23 12:12:32 -07:00
|
|
|
goodie_version => $goodieVersion
|
2017-03-23 09:51:39 -07:00
|
|
|
},
|
|
|
|
templates => {
|
|
|
|
group => 'base',
|
2017-03-23 11:32:56 -07:00
|
|
|
detail => 'DDH.timer.timer_wrapper',
|
2017-03-23 09:51:39 -07:00
|
|
|
wrap_detail => 'base_detail',
|
|
|
|
},
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
sub build_test { test_zci(build_structured_answer(@_)) }
|
|
|
|
|
|
|
|
ddg_goodie_test(
|
|
|
|
[
|
2017-03-23 11:32:56 -07:00
|
|
|
'DDG::Goodie::Timer'
|
2017-03-23 09:51:39 -07:00
|
|
|
],
|
|
|
|
# With no initial time
|
|
|
|
'timer' => build_test(),
|
|
|
|
'online timer' => build_test(),
|
|
|
|
'timer online' => build_test(),
|
|
|
|
'online alarm' => build_test(),
|
|
|
|
'countdown online' => build_test(),
|
|
|
|
'online timer' => build_test(),
|
|
|
|
'online alarm' => build_test(),
|
|
|
|
'countdown online' => build_test(),
|
|
|
|
'timer online for ' => build_test(),
|
|
|
|
'Countdown timer' => build_test(),
|
|
|
|
'Online Countdown timer' => build_test(),
|
2017-05-10 14:23:35 -07:00
|
|
|
'count down timer' => build_test(),
|
2017-03-23 09:51:39 -07:00
|
|
|
|
|
|
|
# With initial time
|
|
|
|
'timer 15 mins' => build_test('900'),
|
|
|
|
'timer 77 mins 13 secs' => build_test('4633'),
|
|
|
|
'1 minute timer' => build_test('60'),
|
|
|
|
'2min30sec online timer' => build_test('150'),
|
|
|
|
'3 hr 5 min timer' => build_test('11100'),
|
|
|
|
'timer 30 seconds' => build_test('30'),
|
|
|
|
'3.5 minute timer' => build_test('210'),
|
|
|
|
'alarm 30 minutes' => build_test('1800'),
|
|
|
|
'timer for 15 mins' => build_test('900'),
|
|
|
|
'timer for 77 mins 13 secs' => build_test('4633'),
|
|
|
|
'timer 2:30' => build_test('150'),
|
|
|
|
'begin timer for 15 mins' => build_test('900'),
|
|
|
|
'run timer for 77 mins 13 secs' => build_test('4633'),
|
|
|
|
'start timer 2:30' => build_test('150'),
|
|
|
|
'begin timer with 15 mins' => build_test('900'),
|
|
|
|
'run timer at 77 mins 13 secs' => build_test('4633'),
|
|
|
|
'start timer alarm 2:30' => build_test('150'),
|
|
|
|
'begin countdown timer with 15 mins' => build_test('900'),
|
|
|
|
'run timer alarm online at 77 mins 13 secs' => build_test('4633'),
|
|
|
|
'start timer alarm for 2:30 online' => build_test('150'),
|
|
|
|
'online start timer alarm for 2:30 online' => build_test('150'),
|
|
|
|
'timer 1:20:30' => build_test('4830'),
|
|
|
|
'timer 5s' => build_test('5'),
|
|
|
|
'timer 5m' => build_test('300'),
|
|
|
|
'timer 5h' => build_test('18000'),
|
|
|
|
'countdown for 10 minutes' => build_test('600'),
|
|
|
|
'Countdown timer 15 mins' => build_test('900'),
|
|
|
|
'Online Countdown Alarm timer 15 mins' => build_test('900'),
|
|
|
|
'Countdown Alarm timer 15 mins Online' => build_test('900'),
|
|
|
|
'online start alarm Timer for 10 minutes online' => build_test('600'),
|
|
|
|
'start online CountDown alarm for 10 minutes' => build_test('600'),
|
|
|
|
'CountDown Timer with 10 minutes' => build_test('600'),
|
|
|
|
'CountDown Timer at 10 minutes' => build_test('600'),
|
|
|
|
'3.5 minute countdown timer' => build_test('210'),
|
|
|
|
'begin alarm 30 minutes' => build_test('1800'),
|
|
|
|
'set alarm 30 minutes' => build_test('1800'),
|
|
|
|
'begin alarm at 30 minutes' => build_test('1800'),
|
|
|
|
'set alarm with 30 minutes' => build_test('1800'),
|
|
|
|
'set alarm with30 minutes' => build_test('1800'),
|
|
|
|
'countdown timer for 77 mins 13 secs' => build_test('4633'),
|
|
|
|
'start countdown timer for 77 mins 13 secs' => build_test('4633'),
|
2017-04-07 13:28:58 -07:00
|
|
|
'10 minutes' => build_test('600'),
|
|
|
|
'20 mins' => build_test('1200'),
|
2017-04-27 09:18:40 -07:00
|
|
|
'timer 20 minutes' => build_test('1200'),
|
2017-05-18 13:54:35 -07:00
|
|
|
'timer 60 minutes' => build_test('3600'),
|
2017-07-18 08:56:43 -07:00
|
|
|
'start a timer for 20 minutes' => build_test('1200'),
|
|
|
|
'set a timer to 60 minutes' => build_test('3600'),
|
2017-08-22 12:15:25 -07:00
|
|
|
'set a timer of 60 minutes' => build_test('3600'),
|
|
|
|
'timer of 5:15 mins' => build_test('315'),
|
2017-03-23 09:51:39 -07:00
|
|
|
# Should not trigger
|
|
|
|
'start 30 minutes for timer' => undef,
|
|
|
|
'run with timer' => undef,
|
|
|
|
'begin for 30 seconds' => undef,
|
|
|
|
'blahblah timer' => undef,
|
|
|
|
'wwdc 2015 countdown' => undef,
|
|
|
|
'timer 5 hellos' => undef,
|
|
|
|
'time' => undef,
|
|
|
|
'Time::Piece' => undef,
|
|
|
|
'timer.x' => undef,
|
|
|
|
'countdown.x' => undef,
|
|
|
|
'alarm.x' => undef,
|
|
|
|
'countdown.js 10 minutes' => undef,
|
2017-04-27 09:18:40 -07:00
|
|
|
'five-alarm' => undef, # issue 1937
|
|
|
|
'20 minutes' => undef,
|
|
|
|
' 22 minutes' => undef,
|
|
|
|
'60 minutes' => undef,
|
2017-08-22 12:15:25 -07:00
|
|
|
'48 hours ' => undef,
|
|
|
|
'5:15 + 32 minutes' => undef,
|
|
|
|
'3:32 - 8 mins' => undef
|
2017-03-23 09:51:39 -07:00
|
|
|
);
|
|
|
|
|
|
|
|
done_testing;
|