73 lines
2.3 KiB
Perl
73 lines
2.3 KiB
Perl
#!/usr/bin/env perl
|
|
|
|
use strict;
|
|
use warnings;
|
|
use Test::More;
|
|
use Test::Deep;
|
|
use Test::MockTime;
|
|
use DDG::Test::Goodie;
|
|
|
|
zci answer_type => "duration_calculator";
|
|
zci is_cached => 1;
|
|
|
|
# Build a structured answer that should match the response from the
|
|
# Perl file.
|
|
sub build_structured_answer {
|
|
my @test_params = @_;
|
|
|
|
return $test_params[0],
|
|
structured_answer => {
|
|
|
|
data => {
|
|
title => $test_params[0],
|
|
subtitle => $test_params[1],
|
|
},
|
|
|
|
templates => {
|
|
group => "text",
|
|
}
|
|
};
|
|
}
|
|
|
|
# Use this to build expected results for your tests.
|
|
sub build_test { test_zci(build_structured_answer(@_)) }
|
|
|
|
my $add_query = "2 days 7 minutes 39 seconds + 1 day 9 hours 58 minutes 25 seconds";
|
|
my $sub_query = "1 day 9 hours 59 minutes 14 seconds - 1 day 9 hours 58 minutes 25 seconds";
|
|
my $add_query_plus = "1 day plus 48 hours";
|
|
my $sub_query_minus = "2 days minus 43 hours";
|
|
my $value_test = "1 second - 1000000000 nanoseconds";
|
|
my $month_test = "4 weeks + 2 days";
|
|
my $year_test = "23 months + 30 days";
|
|
my $neg_query1 = "1 year - 400 days";
|
|
my $neg_query2 = "1 day + -24 hours";
|
|
my $neg_query3 = "-1 week - 3 days";
|
|
my $neg_query4 = "-1 week + 7 days";
|
|
my $invalid_query1 = "2 day 2 day + 4 day";
|
|
my $invalid_query2 = "1 day + 1 hay";
|
|
my $invalid_query3 = "-54minutes - 39";
|
|
my $invalid_query4 = "4 hours";
|
|
Test::MockTime::set_absolute_time("2016-06-01T01:00:00Z");
|
|
|
|
ddg_goodie_test(
|
|
[qw( DDG::Goodie::DurationCalculator )],
|
|
|
|
$add_query => build_test("3 days, 10 hours, 6 minutes, and 4 seconds", $add_query),
|
|
$sub_query => build_test("49 seconds", $sub_query),
|
|
$add_query_plus => build_test("3 days", "1 day + 48 hours"),
|
|
$sub_query_minus => build_test("5 hours", "2 days - 43 hours"),
|
|
$value_test => build_test("no time", $value_test),
|
|
$month_test => build_test("1 month", $month_test),
|
|
$year_test => build_test("2 years", $year_test),
|
|
$neg_query1 => build_test("-(1 month and 3 days)", $neg_query1),
|
|
$neg_query2 => build_test("no time", $neg_query2),
|
|
$neg_query3 => build_test("-(1 week and 3 days)", $neg_query3),
|
|
$neg_query4 => build_test("no time", $neg_query4),
|
|
$invalid_query1 => undef,
|
|
$invalid_query3 =>undef,
|
|
$invalid_query2 =>undef,
|
|
$invalid_query4 =>undef,
|
|
);
|
|
Test::MockTime::restore();
|
|
done_testing;
|