Update Goodies to use Test::Deep

* Ensure Test::Deep is imported.

* Replace '-ANY-' with ignore()

* Replace regexes with re(...)
master
Ben Moon 2016-05-16 14:07:57 +01:00
parent 8eeddb5c19
commit 5f85cf4121
180 changed files with 855 additions and 709 deletions

28
t/ABC.t
View File

@ -3,6 +3,7 @@
use strict; use strict;
use warnings; use warnings;
use Test::More; use Test::More;
use Test::Deep;
use DDG::Test::Goodie; use DDG::Test::Goodie;
zci answer_type => 'choice'; zci answer_type => 'choice';
@ -12,7 +13,7 @@ sub create_structured_answer
{ {
my $data = shift; my $data = shift;
return { return {
data => $data, #'-ANY-', data => $data, #ignore(),
templates => { templates => {
group => 'text', group => 'text',
moreAt => 0 moreAt => 0
@ -30,28 +31,28 @@ ddg_goodie_test(
'choose his or or her house' => undef, 'choose his or or her house' => undef,
'choose from products like turkey or venison' => undef, 'choose from products like turkey or venison' => undef,
'choose pick or axe' => test_zci( 'choose pick or axe' => test_zci(
qr/(pick|axe) \(Random\)/, re(qr/(pick|axe) \(Random\)/),
structured_answer => create_structured_answer('-ANY-') structured_answer => create_structured_answer(ignore())
), ),
'choose yes or no' => test_zci( 'choose yes or no' => test_zci(
qr/(yes|no) \(Random\)/, re(qr/(yes|no) \(Random\)/),
structured_answer => create_structured_answer('-ANY-') structured_answer => create_structured_answer(ignore())
), ),
'choose this or that or none' => test_zci( 'choose this or that or none' => test_zci(
qr/(this|that|none) \(Random\)/, re(qr/(this|that|none) \(Random\)/),
structured_answer => create_structured_answer('-ANY-') structured_answer => create_structured_answer(ignore())
), ),
'pick this or that or none' => test_zci( 'pick this or that or none' => test_zci(
qr/(this|that|none) \(Random\)/, re(qr/(this|that|none) \(Random\)/),
structured_answer => create_structured_answer('-ANY-') structured_answer => create_structured_answer(ignore())
), ),
'select heads or tails' => test_zci( 'select heads or tails' => test_zci(
qr/(heads|tails) \(Random\)/, re(qr/(heads|tails) \(Random\)/),
structured_answer => create_structured_answer('-ANY-') structured_answer => create_structured_answer(ignore())
), ),
'choose heads or tails' => test_zci( 'choose heads or tails' => test_zci(
qr/(heads|tails) \(Random\)/, re(qr/(heads|tails) \(Random\)/),
structured_answer => create_structured_answer('-ANY-') structured_answer => create_structured_answer(ignore())
), ),
'choose duckduckgo or google or bing or something' => test_zci( 'choose duckduckgo or google or bing or something' => test_zci(
'duckduckgo (Non-random)', 'duckduckgo (Non-random)',
@ -70,4 +71,3 @@ ddg_goodie_test(
); );
done_testing; done_testing;

View File

@ -3,6 +3,7 @@
use strict; use strict;
use warnings; use warnings;
use Test::More; use Test::More;
use Test::Deep;
use DDG::Test::Goodie; use DDG::Test::Goodie;
zci answer_type => 'date_conversion'; zci answer_type => 'date_conversion';
@ -84,4 +85,4 @@ sub make_structured_answer {
}; };
}; };
done_testing; done_testing;

View File

@ -3,6 +3,7 @@
use strict; use strict;
use warnings; use warnings;
use Test::More; use Test::More;
use Test::Deep;
use DDG::Test::Goodie; use DDG::Test::Goodie;
zci answer_type => 'anagram'; zci answer_type => 'anagram';
@ -42,4 +43,4 @@ ddg_goodie_test(
'anagrams of "Mixing it up"' => undef, 'anagrams of "Mixing it up"' => undef,
); );
done_testing; done_testing;

View File

@ -3,6 +3,7 @@
use strict; use strict;
use warnings; use warnings;
use Test::More; use Test::More;
use Test::Deep;
use DDG::Test::Goodie; use DDG::Test::Goodie;
zci answer_type => 'aspect_ratio'; zci answer_type => 'aspect_ratio';
@ -33,4 +34,4 @@ ddg_goodie_test(
'aspect ratio 1:1.5 ?:15' => build_test('1:1.5', '10:15') 'aspect ratio 1:1.5 ?:15' => build_test('1:1.5', '10:15')
); );
done_testing; done_testing;

View File

@ -3,6 +3,7 @@
use strict; use strict;
use warnings; use warnings;
use Test::More; use Test::More;
use Test::Deep;
use DDG::Test::Goodie; use DDG::Test::Goodie;
zci answer_type => 'atbash'; zci answer_type => 'atbash';
@ -92,4 +93,4 @@ ddg_goodie_test(
), ),
); );
done_testing; done_testing;

View File

@ -3,6 +3,7 @@
use strict; use strict;
use warnings; use warnings;
use Test::More; use Test::More;
use Test::Deep;
use DDG::Test::Goodie; use DDG::Test::Goodie;
zci answer_type => 'average'; zci answer_type => 'average';
@ -42,4 +43,3 @@ ddg_goodie_test(
); );
done_testing; done_testing;

View File

@ -3,6 +3,7 @@
use strict; use strict;
use warnings; use warnings;
use Test::More; use Test::More;
use Test::Deep;
use DDG::Test::Goodie; use DDG::Test::Goodie;
zci answer_type => "bpmto_ms"; zci answer_type => "bpmto_ms";
@ -30,49 +31,49 @@ ddg_goodie_test(
"120 beats per minute to ms" => test_zci( "120 beats per minute to ms" => test_zci(
$plaintext_120, $plaintext_120,
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
# [ # [
# { # {
# note_type => "Whole Note", # note_type => "Whole Note",
# triplet => 1333, # triplet => 1333,
# dotted => 3000, # dotted => 3000,
# milliseconds => 2000, # milliseconds => 2000,
# image => qr/.*/ # image => re(qr/.*/)
# }, # },
# { # {
# note_type => "Half Note", # note_type => "Half Note",
# triplet => 667, # triplet => 667,
# dotted => 1500, # dotted => 1500,
# milliseconds => 1000, # milliseconds => 1000,
# image => qr/.*/ # image => re(qr/.*/)
# }, # },
# { # {
# note_type => "Quarter Note", # note_type => "Quarter Note",
# triplet => 333, # triplet => 333,
# dotted => 750, # dotted => 750,
# milliseconds => 500, # milliseconds => 500,
# image => qr/.*/ # image => re(qr/.*/)
# }, # },
# { # {
# note_type => "1/8 Note", # note_type => "1/8 Note",
# triplet => 167, # triplet => 167,
# dotted => 375, # dotted => 375,
# milliseconds => 250, # milliseconds => 250,
# image => qr/.*/ # image => re(qr/.*/)
# }, # },
# { # {
# note_type => "1/16 Note", # note_type => "1/16 Note",
# triplet => 83, # triplet => 83,
# dotted => 188, # dotted => 188,
# milliseconds => 125, # milliseconds => 125,
# image => qr/.*/ # image => re(qr/.*/)
# }, # },
# { # {
# note_type => "1/32 Note", # note_type => "1/32 Note",
# triplet => 42, # triplet => 42,
# dotted => 94, # dotted => 94,
# milliseconds => 63, # milliseconds => 63,
# image => qr/.*/ # image => re(qr/.*/)
# } # }
# ], # ],
meta => { meta => {
@ -92,49 +93,49 @@ ddg_goodie_test(
"61 beats per minute to ms" => test_zci( "61 beats per minute to ms" => test_zci(
$plaintext_61, $plaintext_61,
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
# [ # [
# { # {
# note_type => "Whole Note", # note_type => "Whole Note",
# triplet => 2623, # triplet => 2623,
# dotted => 5902, # dotted => 5902,
# milliseconds => 3934, # milliseconds => 3934,
# image => qr/.*/ # image => re(qr/.*/)
# }, # },
# { # {
# note_type => "Half Note", # note_type => "Half Note",
# triplet => 1311, # triplet => 1311,
# dotted => 2951, # dotted => 2951,
# milliseconds => 1967, # milliseconds => 1967,
# image => qr/.*/ # image => re(qr/.*/)
# }, # },
# { # {
# note_type => "Quarter Note", # note_type => "Quarter Note",
# triplet => 656, # triplet => 656,
# dotted => 1475, # dotted => 1475,
# milliseconds => 984, # milliseconds => 984,
# image => qr/.*/ # image => re(qr/.*/)
# }, # },
# { # {
# note_type => "1/8 Note", # note_type => "1/8 Note",
# triplet => 328, # triplet => 328,
# dotted => 738, # dotted => 738,
# milliseconds => 492, # milliseconds => 492,
# image => qr/.*/ # image => re(qr/.*/)
# }, # },
# { # {
# note_type => "1/16 Note", # note_type => "1/16 Note",
# triplet => 164, # triplet => 164,
# dotted => 369, # dotted => 369,
# milliseconds => 246, # milliseconds => 246,
# image => qr/.*/ # image => re(qr/.*/)
# }, # },
# { # {
# note_type => "1/32 Note", # note_type => "1/32 Note",
# triplet => 82, # triplet => 82,
# dotted => 184, # dotted => 184,
# milliseconds => 123, # milliseconds => 123,
# image => qr/.*/ # image => re(qr/.*/)
# } # }
# ], # ],
meta => { meta => {
@ -156,4 +157,4 @@ ddg_goodie_test(
'bpm' => undef, 'bpm' => undef,
); );
done_testing; done_testing;

View File

@ -3,6 +3,7 @@
use strict; use strict;
use warnings; use warnings;
use Test::More; use Test::More;
use Test::Deep;
use DDG::Test::Goodie; use DDG::Test::Goodie;
zci answer_type => "brt"; zci answer_type => "brt";
@ -30,4 +31,4 @@ ddg_goodie_test(
"brt 12345678901234567890" => undef "brt 12345678901234567890" => undef
); );
done_testing; done_testing;

View File

@ -3,6 +3,7 @@
use strict; use strict;
use warnings; use warnings;
use Test::More; use Test::More;
use Test::Deep;
use DDG::Test::Goodie; use DDG::Test::Goodie;
zci answer_type => 'conversion'; zci answer_type => 'conversion';
@ -39,4 +40,3 @@ ddg_goodie_test(
); );
done_testing; done_testing;

View File

@ -3,6 +3,7 @@
use strict; use strict;
use warnings; use warnings;
use Test::More; use Test::More;
use Test::Deep;
use DDG::Test::Goodie; use DDG::Test::Goodie;
zci answer_type => 'base64_conversion'; zci answer_type => 'base64_conversion';
@ -45,4 +46,4 @@ ddg_goodie_test(
"base64 decode" => undef, "base64 decode" => undef,
); );
done_testing; done_testing;

View File

@ -2,6 +2,7 @@ use strict;
use warnings; use warnings;
use Test::More; use Test::More;
use Test::Deep;
use DDG::Test::Goodie; use DDG::Test::Goodie;
zci answer_type => 'expression_description'; zci answer_type => 'expression_description';
@ -12,7 +13,7 @@ ddg_goodie_test(
'DDG::Goodie::BashPrimaryExpressions' 'DDG::Goodie::BashPrimaryExpressions'
], ],
"bash [ -a b ]" => test_zci( "bash [ -a b ]" => test_zci(
qr/.+ true if b exists./, re(qr/.+ true if b exists./),
structured_answer => { structured_answer => {
data => { data => {
intro => "[ -a b ]", intro => "[ -a b ]",
@ -39,9 +40,9 @@ ddg_goodie_test(
} }
), ),
'bash [[ "abc" < "cba" ]]' => test_zci( 'bash [[ "abc" < "cba" ]]' => test_zci(
qr/.+ true if "abc" string-sorts before "cba" in the current locale./, re(qr/.+ true if "abc" string-sorts before "cba" in the current locale./),
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'text', group => 'text',
item => 0, item => 0,
@ -52,9 +53,9 @@ ddg_goodie_test(
} }
), ),
'bash [ 2 -gt 1 ]' => test_zci( 'bash [ 2 -gt 1 ]' => test_zci(
qr/.+ true if 2 is numerically greater than 1./, re(qr/.+ true if 2 is numerically greater than 1./),
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'text', group => 'text',
item => 0, item => 0,
@ -65,9 +66,9 @@ ddg_goodie_test(
} }
), ),
'bash [ ! hello == world ]' => test_zci( 'bash [ ! hello == world ]' => test_zci(
qr/.+ false if the strings hello and world are equal./, re(qr/.+ false if the strings hello and world are equal./),
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'text', group => 'text',
item => 0, item => 0,
@ -78,9 +79,9 @@ ddg_goodie_test(
} }
), ),
'bash [[ /tmp/hello -nt /etc/test ]]' => test_zci ( 'bash [[ /tmp/hello -nt /etc/test ]]' => test_zci (
qr#.+ true if /tmp/hello has been changed more recently than /etc/test or if /tmp/hello exists and /etc/test does not.#, re(qr#.+ true if /tmp/hello has been changed more recently than /etc/test or if /tmp/hello exists and /etc/test does not.#),
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'text', group => 'text',
item => 0, item => 0,
@ -91,9 +92,9 @@ ddg_goodie_test(
} }
), ),
'bash [ -z hello ]' => test_zci( 'bash [ -z hello ]' => test_zci(
qr/.+ true if the length of 'hello' is zero./, re(qr/.+ true if the length of 'hello' is zero./),
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'text', group => 'text',
item => 0, item => 0,
@ -104,9 +105,9 @@ ddg_goodie_test(
} }
), ),
'bash if [[ "abc" -lt "cba" ]]' => test_zci( 'bash if [[ "abc" -lt "cba" ]]' => test_zci(
qr/.+ true if "abc" is numerically less than "cba"./, re(qr/.+ true if "abc" is numerically less than "cba"./),
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'text', group => 'text',
item => 0, item => 0,
@ -120,4 +121,4 @@ ddg_goodie_test(
'bash if [ ![ 1 -lt 2 ] ]' => undef, 'bash if [ ![ 1 -lt 2 ] ]' => undef,
); );
done_testing; done_testing;

View File

@ -3,6 +3,7 @@
use strict; use strict;
use warnings; use warnings;
use Test::More; use Test::More;
use Test::Deep;
use DDG::Test::Goodie; use DDG::Test::Goodie;
zci answer_type => "beam_me_up_scotty"; zci answer_type => "beam_me_up_scotty";
@ -32,4 +33,4 @@ ddg_goodie_test(
'scotty beam us up' => undef, 'scotty beam us up' => undef,
); );
done_testing; done_testing;

View File

@ -1,6 +1,7 @@
#!/usr/bin/env perl #!/usr/bin/env perl
use Test::More; use Test::More;
use Test::Deep;
use DDG::Test::Goodie; use DDG::Test::Goodie;
use utf8; use utf8;
@ -77,4 +78,4 @@ ddg_goodie_test(
%ctrl_tests %ctrl_tests
); );
done_testing; done_testing;

View File

@ -3,6 +3,7 @@
use strict; use strict;
use warnings; use warnings;
use Test::More; use Test::More;
use Test::Deep;
use DDG::Test::Goodie; use DDG::Test::Goodie;
zci answer_type => 'binary_conversion'; zci answer_type => 'binary_conversion';
@ -56,4 +57,4 @@ ddg_goodie_test(
'to binary' => undef, 'to binary' => undef,
); );
done_testing; done_testing;

View File

@ -3,6 +3,7 @@
use strict; use strict;
use warnings; use warnings;
use Test::More; use Test::More;
use Test::Deep;
use DDG::Test::Goodie; use DDG::Test::Goodie;
use utf8; use utf8;
@ -65,4 +66,4 @@ ddg_goodie_test(
'what do number and letter codes in a lens name mean' => undef 'what do number and letter codes in a lens name mean' => undef
); );
done_testing; done_testing;

View File

@ -3,6 +3,7 @@
use strict; use strict;
use warnings; use warnings;
use Test::More; use Test::More;
use Test::Deep;
use DDG::Test::Goodie; use DDG::Test::Goodie;
zci answer_type => "birth_stone"; zci answer_type => "birth_stone";
@ -35,4 +36,4 @@ ddg_goodie_test(
'may birth stone' => build_test('May', 'Emerald') 'may birth stone' => build_test('May', 'Emerald')
); );
done_testing; done_testing;

View File

@ -3,6 +3,7 @@
use strict; use strict;
use warnings; use warnings;
use Test::More; use Test::More;
use Test::Deep;
use DDG::Test::Goodie; use DDG::Test::Goodie;
zci answer_type => "bitsum"; zci answer_type => "bitsum";
@ -46,4 +47,4 @@ ddg_goodie_test(
'bitsum 0b' => undef, 'bitsum 0b' => undef,
); );
done_testing; done_testing;

View File

@ -3,6 +3,7 @@
use strict; use strict;
use warnings; use warnings;
use Test::More; use Test::More;
use Test::Deep;
use DDG::Test::Goodie; use DDG::Test::Goodie;
zci answer_type => "blood_donor"; zci answer_type => "blood_donor";
@ -89,4 +90,4 @@ ddg_goodie_test(
), ),
); );
done_testing; done_testing;

View File

@ -3,6 +3,7 @@
use strict; use strict;
use warnings; use warnings;
use Test::More; use Test::More;
use Test::Deep;
use DDG::Test::Goodie; use DDG::Test::Goodie;
use Convert::Braille; use Convert::Braille;
use utf8; use utf8;
@ -43,4 +44,4 @@ ddg_goodie_test(
'braille to braille is good' => undef, 'braille to braille is good' => undef,
); );
done_testing; done_testing;

View File

@ -3,13 +3,14 @@
use strict; use strict;
use warnings; use warnings;
use Test::More; use Test::More;
use Test::Deep;
use DDG::Test::Goodie; use DDG::Test::Goodie;
zci answer_type => 'caesar_cipher'; zci answer_type => 'caesar_cipher';
zci is_cached => 1; zci is_cached => 1;
my $decode_response = { my $decode_response = {
data => '-ANY-', # We only need to check it is the right template. data => ignore(), # We only need to check it is the right template.
meta => { meta => {
sourceUrl => 'https://en.wikipedia.org/wiki/Caesar_cipher', sourceUrl => 'https://en.wikipedia.org/wiki/Caesar_cipher',
sourceName => 'Wikipedia', sourceName => 'Wikipedia',
@ -70,4 +71,4 @@ ddg_goodie_test(
'how to decode caesar' => undef, 'how to decode caesar' => undef,
); );
done_testing; done_testing;

View File

@ -3,6 +3,7 @@
use strict; use strict;
use warnings; use warnings;
use Test::More; use Test::More;
use Test::Deep;
use DDG::Test::Goodie; use DDG::Test::Goodie;
zci answer_type => 'root'; zci answer_type => 'root';
@ -49,4 +50,4 @@ ddg_goodie_test(
} }
), ),
); );
done_testing; done_testing;

View File

@ -3,6 +3,7 @@
use strict; use strict;
use warnings; use warnings;
use Test::More; use Test::More;
use Test::Deep;
use DDG::Test::Goodie; use DDG::Test::Goodie;
use DDG::Goodie::Calculator; # For function subtests. use DDG::Goodie::Calculator; # For function subtests.
use utf8; use utf8;
@ -18,7 +19,7 @@ ddg_goodie_test(
structured_answer => { structured_answer => {
input => ['2 - 2'], input => ['2 - 2'],
operation => 'Calculate', operation => 'Calculate',
result => qr/>0</ result => re(qr/>0</)
} }
), ),
'solve 2+2' => test_zci( 'solve 2+2' => test_zci(
@ -27,7 +28,7 @@ ddg_goodie_test(
structured_answer => { structured_answer => {
input => ['2 + 2'], input => ['2 + 2'],
operation => 'Calculate', operation => 'Calculate',
result => qr/>4</ result => re(qr/>4</)
} }
), ),
'2^8' => test_zci( '2^8' => test_zci(
@ -36,7 +37,7 @@ ddg_goodie_test(
structured_answer => { structured_answer => {
input => ['2 ^ 8'], input => ['2 ^ 8'],
operation => 'Calculate', operation => 'Calculate',
result => qr/>256</ result => re(qr/>256</)
} }
), ),
'2 *7' => test_zci( '2 *7' => test_zci(
@ -45,7 +46,7 @@ ddg_goodie_test(
structured_answer => { structured_answer => {
input => ['2 * 7'], input => ['2 * 7'],
operation => 'Calculate', operation => 'Calculate',
result => qr/>14</ result => re(qr/>14</)
} }
), ),
'4 ∙ 5' => test_zci( '4 ∙ 5' => test_zci(
@ -54,7 +55,7 @@ ddg_goodie_test(
structured_answer => { structured_answer => {
input => ['4 * 5'], input => ['4 * 5'],
operation => 'Calculate', operation => 'Calculate',
result => qr/>20</ result => re(qr/>20</)
} }
), ),
'6 ⋅ 7' => test_zci( '6 ⋅ 7' => test_zci(
@ -63,7 +64,7 @@ ddg_goodie_test(
structured_answer => { structured_answer => {
input => ['6 * 7'], input => ['6 * 7'],
operation => 'Calculate', operation => 'Calculate',
result => qr/>42</ result => re(qr/>42</)
} }
), ),
'3 × dozen' => test_zci( '3 × dozen' => test_zci(
@ -72,7 +73,7 @@ ddg_goodie_test(
structured_answer => { structured_answer => {
input => ['3 * dozen'], input => ['3 * dozen'],
operation => 'Calculate', operation => 'Calculate',
result => qr/>36</ result => re(qr/>36</)
} }
), ),
'dozen ÷ 4' => test_zci( 'dozen ÷ 4' => test_zci(
@ -81,7 +82,7 @@ ddg_goodie_test(
structured_answer => { structured_answer => {
input => ['dozen / 4'], input => ['dozen / 4'],
operation => 'Calculate', operation => 'Calculate',
result => qr/>3</ result => re(qr/>3</)
} }
), ),
'1 dozen * 2' => test_zci( '1 dozen * 2' => test_zci(
@ -90,7 +91,7 @@ ddg_goodie_test(
structured_answer => { structured_answer => {
input => ['1 dozen * 2'], input => ['1 dozen * 2'],
operation => 'Calculate', operation => 'Calculate',
result => qr/>24</ result => re(qr/>24</)
} }
), ),
'dozen + dozen' => test_zci( 'dozen + dozen' => test_zci(
@ -99,7 +100,7 @@ ddg_goodie_test(
structured_answer => { structured_answer => {
input => ['dozen + dozen'], input => ['dozen + dozen'],
operation => 'Calculate', operation => 'Calculate',
result => qr/>24</ result => re(qr/>24</)
} }
), ),
'2divided by 4' => test_zci( '2divided by 4' => test_zci(
@ -108,7 +109,7 @@ ddg_goodie_test(
structured_answer => { structured_answer => {
input => ['2 divided by 4'], input => ['2 divided by 4'],
operation => 'Calculate', operation => 'Calculate',
result => qr/>0.5</ result => re(qr/>0.5</)
} }
), ),
'2^2' => test_zci( '2^2' => test_zci(
@ -117,7 +118,7 @@ ddg_goodie_test(
structured_answer => { structured_answer => {
input => ['2 ^ 2'], input => ['2 ^ 2'],
operation => 'Calculate', operation => 'Calculate',
result => qr/>4</ result => re(qr/>4</)
} }
), ),
'2^0.2' => test_zci( '2^0.2' => test_zci(
@ -126,7 +127,7 @@ ddg_goodie_test(
structured_answer => { structured_answer => {
input => ['2 ^ 0.2'], input => ['2 ^ 0.2'],
operation => 'Calculate', operation => 'Calculate',
result => qr/>1\.14869835499704</ result => re(qr/>1\.14869835499704</)
} }
), ),
'cos(0)' => test_zci( 'cos(0)' => test_zci(
@ -135,7 +136,7 @@ ddg_goodie_test(
structured_answer => { structured_answer => {
input => ['cos(0)'], input => ['cos(0)'],
operation => 'Calculate', operation => 'Calculate',
result => qr/>1</ result => re(qr/>1</)
} }
), ),
'tan(1)' => test_zci( 'tan(1)' => test_zci(
@ -144,7 +145,7 @@ ddg_goodie_test(
structured_answer => { structured_answer => {
input => ['tan(1)'], input => ['tan(1)'],
operation => 'Calculate', operation => 'Calculate',
result => qr/>1\.5574077246549</ result => re(qr/>1\.5574077246549</)
} }
), ),
'tanh(1)' => test_zci( 'tanh(1)' => test_zci(
@ -153,7 +154,7 @@ ddg_goodie_test(
structured_answer => { structured_answer => {
input => ['tanh(1)'], input => ['tanh(1)'],
operation => 'Calculate', operation => 'Calculate',
result => qr/>0\.761594155955765</ result => re(qr/>0\.761594155955765</)
} }
), ),
'cotan(1)' => test_zci( 'cotan(1)' => test_zci(
@ -162,7 +163,7 @@ ddg_goodie_test(
structured_answer => { structured_answer => {
input => ['cotan(1)'], input => ['cotan(1)'],
operation => 'Calculate', operation => 'Calculate',
result => qr/>0\.642092615934331</ result => re(qr/>0\.642092615934331</)
} }
), ),
'sin(1)' => test_zci( 'sin(1)' => test_zci(
@ -171,7 +172,7 @@ ddg_goodie_test(
structured_answer => { structured_answer => {
input => ['sin(1)'], input => ['sin(1)'],
operation => 'Calculate', operation => 'Calculate',
result => qr/>0\.841470984807897</ result => re(qr/>0\.841470984807897</)
} }
), ),
'csc(1)' => test_zci( 'csc(1)' => test_zci(
@ -180,7 +181,7 @@ ddg_goodie_test(
structured_answer => { structured_answer => {
input => ['csc(1)'], input => ['csc(1)'],
operation => 'Calculate', operation => 'Calculate',
result => qr/>1\.18839510577812</ result => re(qr/>1\.18839510577812</)
} }
), ),
'sec(1)' => test_zci( 'sec(1)' => test_zci(
@ -189,7 +190,7 @@ ddg_goodie_test(
structured_answer => { structured_answer => {
input => ['sec(1)'], input => ['sec(1)'],
operation => 'Calculate', operation => 'Calculate',
result => qr/>1\.85081571768093</ result => re(qr/>1\.85081571768093</)
} }
), ),
'log(3)' => test_zci( 'log(3)' => test_zci(
@ -198,7 +199,7 @@ ddg_goodie_test(
structured_answer => { structured_answer => {
input => ['log(3)'], input => ['log(3)'],
operation => 'Calculate', operation => 'Calculate',
result => qr/>1\.09861228866811</ result => re(qr/>1\.09861228866811</)
} }
), ),
'ln(3)' => test_zci( 'ln(3)' => test_zci(
@ -207,7 +208,7 @@ ddg_goodie_test(
structured_answer => { structured_answer => {
input => ['log(3)'], input => ['log(3)'],
operation => 'Calculate', operation => 'Calculate',
result => qr/>1\.09861228866811</ result => re(qr/>1\.09861228866811</)
} }
), ),
'log10(100.00)' => test_zci( 'log10(100.00)' => test_zci(
@ -216,7 +217,7 @@ ddg_goodie_test(
structured_answer => { structured_answer => {
input => ['log10(100.00)'], input => ['log10(100.00)'],
operation => 'Calculate', operation => 'Calculate',
result => qr/>2</ result => re(qr/>2</)
} }
), ),
'log_10(100.00)' => test_zci( 'log_10(100.00)' => test_zci(
@ -225,7 +226,7 @@ ddg_goodie_test(
structured_answer => { structured_answer => {
input => ['log_10(100.00)'], input => ['log_10(100.00)'],
operation => 'Calculate', operation => 'Calculate',
result => qr/>2</ result => re(qr/>2</)
} }
), ),
'log_2(16)' => test_zci( 'log_2(16)' => test_zci(
@ -234,7 +235,7 @@ ddg_goodie_test(
structured_answer => { structured_answer => {
input => ['log_2(16)'], input => ['log_2(16)'],
operation => 'Calculate', operation => 'Calculate',
result => qr/>4</ result => re(qr/>4</)
} }
), ),
'log_23(25)' => test_zci( 'log_23(25)' => test_zci(
@ -243,7 +244,7 @@ ddg_goodie_test(
structured_answer => { structured_answer => {
input => ['log_23(25)'], input => ['log_23(25)'],
operation => 'Calculate', operation => 'Calculate',
result => qr/>1\.0265928122321</ result => re(qr/>1\.0265928122321</)
} }
), ),
'log23(25)' => test_zci( 'log23(25)' => test_zci(
@ -252,7 +253,7 @@ ddg_goodie_test(
structured_answer => { structured_answer => {
input => ['log23(25)'], input => ['log23(25)'],
operation => 'Calculate', operation => 'Calculate',
result => qr/>1\.0265928122321</ result => re(qr/>1\.0265928122321</)
} }
), ),
'$3.43+$34.45' => test_zci( '$3.43+$34.45' => test_zci(
@ -261,7 +262,7 @@ ddg_goodie_test(
structured_answer => { structured_answer => {
input => ['$3.43 + $34.45'], input => ['$3.43 + $34.45'],
operation => 'Calculate', operation => 'Calculate',
result => qr/>\$37\.88</ result => re(qr/>\$37\.88</)
} }
), ),
'$3.45+$34.45' => test_zci( '$3.45+$34.45' => test_zci(
@ -270,7 +271,7 @@ ddg_goodie_test(
structured_answer => { structured_answer => {
input => ['$3.45 + $34.45'], input => ['$3.45 + $34.45'],
operation => 'Calculate', operation => 'Calculate',
result => qr/>\$37\.90</ result => re(qr/>\$37\.90</)
} }
), ),
'$3+$34' => test_zci( '$3+$34' => test_zci(
@ -279,7 +280,7 @@ ddg_goodie_test(
structured_answer => { structured_answer => {
input => ['$3 + $34'], input => ['$3 + $34'],
operation => 'Calculate', operation => 'Calculate',
result => qr/>\$37\.00</ result => re(qr/>\$37\.00</)
} }
), ),
'$3,4+$34,4' => test_zci( '$3,4+$34,4' => test_zci(
@ -288,7 +289,7 @@ ddg_goodie_test(
structured_answer => { structured_answer => {
input => ['$3,4 + $34,4'], input => ['$3,4 + $34,4'],
operation => 'Calculate', operation => 'Calculate',
result => qr/>\$37,80</ result => re(qr/>\$37,80</)
} }
), ),
'64*343' => test_zci( '64*343' => test_zci(
@ -297,7 +298,7 @@ ddg_goodie_test(
structured_answer => { structured_answer => {
input => ['64 * 343'], input => ['64 * 343'],
operation => 'Calculate', operation => 'Calculate',
result => qr/>21,952</ result => re(qr/>21,952</)
} }
), ),
'1E2 + 1' => test_zci( '1E2 + 1' => test_zci(
@ -306,7 +307,7 @@ ddg_goodie_test(
structured_answer => { structured_answer => {
input => ['(1 * 10 ^ 2) + 1'], input => ['(1 * 10 ^ 2) + 1'],
operation => 'Calculate', operation => 'Calculate',
result => qr/>101</ result => re(qr/>101</)
} }
), ),
'1 + 1E2' => test_zci( '1 + 1E2' => test_zci(
@ -315,7 +316,7 @@ ddg_goodie_test(
structured_answer => { structured_answer => {
input => ['1 + (1 * 10 ^ 2)'], input => ['1 + (1 * 10 ^ 2)'],
operation => 'Calculate', operation => 'Calculate',
result => qr/>101</ result => re(qr/>101</)
} }
), ),
'2 * 3 + 1E2' => test_zci( '2 * 3 + 1E2' => test_zci(
@ -324,7 +325,7 @@ ddg_goodie_test(
structured_answer => { structured_answer => {
input => ['2 * 3 + (1 * 10 ^ 2)'], input => ['2 * 3 + (1 * 10 ^ 2)'],
operation => 'Calculate', operation => 'Calculate',
result => qr/>106</ result => re(qr/>106</)
} }
), ),
'1E2 + 2 * 3' => test_zci( '1E2 + 2 * 3' => test_zci(
@ -333,7 +334,7 @@ ddg_goodie_test(
structured_answer => { structured_answer => {
input => ['(1 * 10 ^ 2) + 2 * 3'], input => ['(1 * 10 ^ 2) + 2 * 3'],
operation => 'Calculate', operation => 'Calculate',
result => qr/>106</ result => re(qr/>106</)
} }
), ),
'1E2 / 2' => test_zci( '1E2 / 2' => test_zci(
@ -342,7 +343,7 @@ ddg_goodie_test(
structured_answer => { structured_answer => {
input => ['(1 * 10 ^ 2) / 2'], input => ['(1 * 10 ^ 2) / 2'],
operation => 'Calculate', operation => 'Calculate',
result => qr/>50</ result => re(qr/>50</)
} }
), ),
'2 / 1E2' => test_zci( '2 / 1E2' => test_zci(
@ -351,7 +352,7 @@ ddg_goodie_test(
structured_answer => { structured_answer => {
input => ['2 / (1 * 10 ^ 2)'], input => ['2 / (1 * 10 ^ 2)'],
operation => 'Calculate', operation => 'Calculate',
result => qr/>0\.02</ result => re(qr/>0\.02</)
} }
), ),
'424334+2253828' => test_zci( '424334+2253828' => test_zci(
@ -360,7 +361,7 @@ ddg_goodie_test(
structured_answer => { structured_answer => {
input => ['424334 + 2253828'], input => ['424334 + 2253828'],
operation => 'Calculate', operation => 'Calculate',
result => qr/>2,678,162</ result => re(qr/>2,678,162</)
} }
), ),
'4.243,34+22.538,28' => test_zci( '4.243,34+22.538,28' => test_zci(
@ -369,7 +370,7 @@ ddg_goodie_test(
structured_answer => { structured_answer => {
input => ['4.243,34 + 22.538,28'], input => ['4.243,34 + 22.538,28'],
operation => 'Calculate', operation => 'Calculate',
result => qr/>26\.781,62</ result => re(qr/>26\.781,62</)
} }
), ),
'sin(1,0) + 1,05' => test_zci( 'sin(1,0) + 1,05' => test_zci(
@ -378,7 +379,7 @@ ddg_goodie_test(
structured_answer => { structured_answer => {
input => ['sin(1,0) + 1,05'], input => ['sin(1,0) + 1,05'],
operation => 'Calculate', operation => 'Calculate',
result => qr/>1,8914709848079</ result => re(qr/>1,8914709848079</)
} }
), ),
'21 + 15 x 0 + 5' => test_zci( '21 + 15 x 0 + 5' => test_zci(
@ -387,7 +388,7 @@ ddg_goodie_test(
structured_answer => { structured_answer => {
input => ['21 + 15 * 0 + 5'], input => ['21 + 15 * 0 + 5'],
operation => 'Calculate', operation => 'Calculate',
result => qr/>26</ result => re(qr/>26</)
} }
), ),
'0.8158 - 0.8157' => test_zci( '0.8158 - 0.8157' => test_zci(
@ -396,7 +397,7 @@ ddg_goodie_test(
structured_answer => { structured_answer => {
input => ['0.8158 - 0.8157'], input => ['0.8158 - 0.8157'],
operation => 'Calculate', operation => 'Calculate',
result => qr/>0\.0001</ result => re(qr/>0\.0001</)
} }
), ),
'2,90 + 4,6' => test_zci( '2,90 + 4,6' => test_zci(
@ -405,7 +406,7 @@ ddg_goodie_test(
structured_answer => { structured_answer => {
input => ['2,90 + 4,6'], input => ['2,90 + 4,6'],
operation => 'Calculate', operation => 'Calculate',
result => qr/>7,50</ result => re(qr/>7,50</)
} }
), ),
'2,90 + sec(4,6)' => test_zci( '2,90 + sec(4,6)' => test_zci(
@ -414,7 +415,7 @@ ddg_goodie_test(
structured_answer => { structured_answer => {
input => ['2,90 + sec(4,6)'], input => ['2,90 + sec(4,6)'],
operation => 'Calculate', operation => 'Calculate',
result => qr/>-6,01642861135959</ result => re(qr/>-6,01642861135959</)
} }
), ),
'100 - 96.54' => test_zci( '100 - 96.54' => test_zci(
@ -423,7 +424,7 @@ ddg_goodie_test(
structured_answer => { structured_answer => {
input => ['100 - 96.54'], input => ['100 - 96.54'],
operation => 'Calculate', operation => 'Calculate',
result => qr/>3\.46</ result => re(qr/>3\.46</)
} }
), ),
'1. + 1.' => test_zci( '1. + 1.' => test_zci(
@ -432,7 +433,7 @@ ddg_goodie_test(
structured_answer => { structured_answer => {
input => ['1. + 1.'], input => ['1. + 1.'],
operation => 'Calculate', operation => 'Calculate',
result => qr/>2</ result => re(qr/>2</)
} }
), ),
'1 + sin(pi)' => test_zci( '1 + sin(pi)' => test_zci(
@ -441,7 +442,7 @@ ddg_goodie_test(
structured_answer => { structured_answer => {
input => ['1 + sin(pi)'], input => ['1 + sin(pi)'],
operation => 'Calculate', operation => 'Calculate',
result => qr/>1</ result => re(qr/>1</)
} }
), ),
'1 - 1' => test_zci( '1 - 1' => test_zci(
@ -450,7 +451,7 @@ ddg_goodie_test(
structured_answer => { structured_answer => {
input => ['1 - 1'], input => ['1 - 1'],
operation => 'Calculate', operation => 'Calculate',
result => qr/>0</ result => re(qr/>0</)
} }
), ),
'sin(pi/2)' => test_zci( 'sin(pi/2)' => test_zci(
@ -459,7 +460,7 @@ ddg_goodie_test(
structured_answer => { structured_answer => {
input => ['sin(pi / 2)'], input => ['sin(pi / 2)'],
operation => 'Calculate', operation => 'Calculate',
result => qr/>1</ result => re(qr/>1</)
} }
), ),
'sin(pi)' => test_zci( 'sin(pi)' => test_zci(
@ -468,7 +469,7 @@ ddg_goodie_test(
structured_answer => { structured_answer => {
input => ['sin(pi)'], input => ['sin(pi)'],
operation => 'Calculate', operation => 'Calculate',
result => qr/>0</ result => re(qr/>0</)
} }
), ),
'cos(2pi)' => test_zci( 'cos(2pi)' => test_zci(
@ -477,7 +478,7 @@ ddg_goodie_test(
structured_answer => { structured_answer => {
input => ['cos(2 pi)'], input => ['cos(2 pi)'],
operation => 'Calculate', operation => 'Calculate',
result => qr/>1</ result => re(qr/>1</)
} }
), ),
'5 squared' => test_zci( '5 squared' => test_zci(
@ -486,7 +487,7 @@ ddg_goodie_test(
structured_answer => { structured_answer => {
input => ['5 ^ 2'], input => ['5 ^ 2'],
operation => 'Calculate', operation => 'Calculate',
result => qr/>25</ result => re(qr/>25</)
} }
), ),
'sqrt(4)' => test_zci( 'sqrt(4)' => test_zci(
@ -495,7 +496,7 @@ ddg_goodie_test(
structured_answer => { structured_answer => {
input => ['sqrt(4)'], input => ['sqrt(4)'],
operation => 'Calculate', operation => 'Calculate',
result => qr/>2</ result => re(qr/>2</)
} }
), ),
'1.0 + 5 squared' => test_zci( '1.0 + 5 squared' => test_zci(
@ -504,7 +505,7 @@ ddg_goodie_test(
structured_answer => { structured_answer => {
input => ['1.0 + 5 ^ 2'], input => ['1.0 + 5 ^ 2'],
operation => 'Calculate', operation => 'Calculate',
result => qr/>26</ result => re(qr/>26</)
} }
), ),
'3 squared + 4 squared' => test_zci( '3 squared + 4 squared' => test_zci(
@ -513,7 +514,7 @@ ddg_goodie_test(
structured_answer => { structured_answer => {
input => ['3 ^ 2 + 4 ^ 2'], input => ['3 ^ 2 + 4 ^ 2'],
operation => 'Calculate', operation => 'Calculate',
result => qr/>25</ result => re(qr/>25</)
} }
), ),
'2,2 squared' => test_zci( '2,2 squared' => test_zci(
@ -522,7 +523,7 @@ ddg_goodie_test(
structured_answer => { structured_answer => {
input => ['2,2 ^ 2'], input => ['2,2 ^ 2'],
operation => 'Calculate', operation => 'Calculate',
result => qr/>4,84</ result => re(qr/>4,84</)
} }
), ),
'0.8^2 + 0.6^2' => test_zci( '0.8^2 + 0.6^2' => test_zci(
@ -531,7 +532,7 @@ ddg_goodie_test(
structured_answer => { structured_answer => {
input => ['0.8 ^ 2 + 0.6 ^ 2'], input => ['0.8 ^ 2 + 0.6 ^ 2'],
operation => 'Calculate', operation => 'Calculate',
result => qr/>1</, result => re(qr/>1</),
} }
), ),
'2 squared ^ 3' => test_zci( '2 squared ^ 3' => test_zci(
@ -540,7 +541,7 @@ ddg_goodie_test(
structured_answer => { structured_answer => {
input => ['2 ^ 2 ^ 3'], input => ['2 ^ 2 ^ 3'],
operation => 'Calculate', operation => 'Calculate',
result => qr/>256</ result => re(qr/>256</)
} }
), ),
'2 squared ^ 3.06' => test_zci( '2 squared ^ 3.06' => test_zci(
@ -549,7 +550,7 @@ ddg_goodie_test(
structured_answer => { structured_answer => {
input => ['2 ^ 2 ^ 3.06'], input => ['2 ^ 2 ^ 3.06'],
operation => 'Calculate', operation => 'Calculate',
result => qr/>323\.972172143725</ result => re(qr/>323\.972172143725</)
} }
), ),
'2^3 squared' => test_zci( '2^3 squared' => test_zci(
@ -558,7 +559,7 @@ ddg_goodie_test(
structured_answer => { structured_answer => {
input => ['2 ^ 3 ^ 2'], input => ['2 ^ 3 ^ 2'],
operation => 'Calculate', operation => 'Calculate',
result => qr/>512</ result => re(qr/>512</)
} }
), ),
'sqrt(2)' => test_zci( 'sqrt(2)' => test_zci(
@ -567,7 +568,7 @@ ddg_goodie_test(
structured_answer => { structured_answer => {
input => ['sqrt(2)'], input => ['sqrt(2)'],
operation => 'Calculate', operation => 'Calculate',
result => qr/>1\.4142135623731</ result => re(qr/>1\.4142135623731</)
} }
), ),
'sqrt(3 pi / 4 + 1) + 1' => test_zci( 'sqrt(3 pi / 4 + 1) + 1' => test_zci(
@ -576,7 +577,7 @@ ddg_goodie_test(
structured_answer => { structured_answer => {
input => ['sqrt(3 pi / 4 + 1) + 1'], input => ['sqrt(3 pi / 4 + 1) + 1'],
operation => 'Calculate', operation => 'Calculate',
result => qr/>2\.83199194599549</ result => re(qr/>2\.83199194599549</)
} }
), ),
'4 score + 7' => test_zci( '4 score + 7' => test_zci(
@ -585,7 +586,7 @@ ddg_goodie_test(
structured_answer => { structured_answer => {
input => ['4 score + 7'], input => ['4 score + 7'],
operation => 'Calculate', operation => 'Calculate',
result => qr/>87</ result => re(qr/>87</)
} }
), ),
'418.1 / 2' => test_zci( '418.1 / 2' => test_zci(
@ -594,7 +595,7 @@ ddg_goodie_test(
structured_answer => { structured_answer => {
input => ['418.1 / 2'], input => ['418.1 / 2'],
operation => 'Calculate', operation => 'Calculate',
result => qr/>209\.05</ result => re(qr/>209\.05</)
} }
), ),
'418.005 / 8' => test_zci( '418.005 / 8' => test_zci(
@ -603,7 +604,7 @@ ddg_goodie_test(
structured_answer => { structured_answer => {
input => ['418.005 / 8'], input => ['418.005 / 8'],
operation => 'Calculate', operation => 'Calculate',
result => qr/>52\.250625</ result => re(qr/>52\.250625</)
} }
), ),
'(pi^4+pi^5)^(1/6)' => test_zci( '(pi^4+pi^5)^(1/6)' => test_zci(
@ -612,7 +613,7 @@ ddg_goodie_test(
structured_answer => { structured_answer => {
input => ['(pi ^ 4 + pi ^ 5) ^ (1 / 6)'], input => ['(pi ^ 4 + pi ^ 5) ^ (1 / 6)'],
operation => 'Calculate', operation => 'Calculate',
result => qr/>2\.71828180861191</ result => re(qr/>2\.71828180861191</)
} }
), ),
'(pi^4+pi^5)^(1/6)+1' => test_zci( '(pi^4+pi^5)^(1/6)+1' => test_zci(
@ -621,7 +622,7 @@ ddg_goodie_test(
structured_answer => { structured_answer => {
input => ['(pi ^ 4 + pi ^ 5) ^ (1 / 6) + 1'], input => ['(pi ^ 4 + pi ^ 5) ^ (1 / 6) + 1'],
operation => 'Calculate', operation => 'Calculate',
result => qr/>3\.71828180861191</ result => re(qr/>3\.71828180861191</)
} }
), ),
'5^4^(3-2)^1' => test_zci( '5^4^(3-2)^1' => test_zci(
@ -630,7 +631,7 @@ ddg_goodie_test(
structured_answer => { structured_answer => {
input => ['5 ^ 4 ^ (3 - 2) ^ 1'], input => ['5 ^ 4 ^ (3 - 2) ^ 1'],
operation => 'Calculate', operation => 'Calculate',
result => qr/>625</ result => re(qr/>625</)
} }
), ),
'(5-4)^(3-2)^1' => test_zci( '(5-4)^(3-2)^1' => test_zci(
@ -639,7 +640,7 @@ ddg_goodie_test(
structured_answer => { structured_answer => {
input => ['(5 - 4) ^ (3 - 2) ^ 1'], input => ['(5 - 4) ^ (3 - 2) ^ 1'],
operation => 'Calculate', operation => 'Calculate',
result => qr/>1</ result => re(qr/>1</)
} }
), ),
'(5+4-3)^(2-1)' => test_zci( '(5+4-3)^(2-1)' => test_zci(
@ -648,7 +649,7 @@ ddg_goodie_test(
structured_answer => { structured_answer => {
input => ['(5 + 4 - 3) ^ (2 - 1)'], input => ['(5 + 4 - 3) ^ (2 - 1)'],
operation => 'Calculate', operation => 'Calculate',
result => qr/>6</ result => re(qr/>6</)
} }
), ),
'5^((4-3)*(2+1))+6' => test_zci( '5^((4-3)*(2+1))+6' => test_zci(
@ -657,7 +658,7 @@ ddg_goodie_test(
structured_answer => { structured_answer => {
input => ['5 ^ ((4 - 3) * (2 + 1)) + 6'], input => ['5 ^ ((4 - 3) * (2 + 1)) + 6'],
operation => 'Calculate', operation => 'Calculate',
result => qr/>131</ result => re(qr/>131</)
} }
), ),
'20x07' => test_zci( '20x07' => test_zci(
@ -666,7 +667,7 @@ ddg_goodie_test(
structured_answer => { structured_answer => {
input => ['20 * 07'], input => ['20 * 07'],
operation => 'Calculate', operation => 'Calculate',
result => qr/>140</ result => re(qr/>140</)
} }
), ),
'83.166.167.160/33' => test_zci( '83.166.167.160/33' => test_zci(
@ -675,7 +676,7 @@ ddg_goodie_test(
structured_answer => { structured_answer => {
input => ['83.166.167.160 / 33'], input => ['83.166.167.160 / 33'],
operation => 'Calculate', operation => 'Calculate',
result => qr/>2\.520\.186\.883,63636</ result => re(qr/>2\.520\.186\.883,63636</)
} }
), ),
'123.123.123.123/255.255.255.256' => test_zci( '123.123.123.123/255.255.255.256' => test_zci(
@ -684,7 +685,7 @@ ddg_goodie_test(
structured_answer => { structured_answer => {
input => ['123.123.123.123 / 255.255.255.256'], input => ['123.123.123.123 / 255.255.255.256'],
operation => 'Calculate', operation => 'Calculate',
result => qr/>0,482352941174581</ result => re(qr/>0,482352941174581</)
} }
), ),
'4E5 +1 ' => test_zci( '4E5 +1 ' => test_zci(
@ -693,7 +694,7 @@ ddg_goodie_test(
structured_answer => { structured_answer => {
input => ['(4 * 10 ^ 5) + 1'], input => ['(4 * 10 ^ 5) + 1'],
operation => 'Calculate', operation => 'Calculate',
result => qr/>400,001</ result => re(qr/>400,001</)
} }
), ),
'4e5 +1 ' => test_zci( '4e5 +1 ' => test_zci(
@ -702,7 +703,7 @@ ddg_goodie_test(
structured_answer => { structured_answer => {
input => ['(4 * 10 ^ 5) + 1'], input => ['(4 * 10 ^ 5) + 1'],
operation => 'Calculate', operation => 'Calculate',
result => qr/>400,001</ result => re(qr/>400,001</)
} }
), ),
'3e-2* 9 ' => test_zci( '3e-2* 9 ' => test_zci(
@ -711,7 +712,7 @@ ddg_goodie_test(
structured_answer => { structured_answer => {
input => ['(3 * 10 ^- 2) * 9'], input => ['(3 * 10 ^- 2) * 9'],
operation => 'Calculate', operation => 'Calculate',
result => qr/>0.27</ result => re(qr/>0.27</)
} }
), ),
'7e-4 *8' => test_zci( '7e-4 *8' => test_zci(
@ -720,7 +721,7 @@ ddg_goodie_test(
structured_answer => { structured_answer => {
input => ['(7 * 10 ^- 4) * 8'], input => ['(7 * 10 ^- 4) * 8'],
operation => 'Calculate', operation => 'Calculate',
result => qr/>0.0056</ result => re(qr/>0.0056</)
} }
), ),
'6 * 2e-11' => test_zci( '6 * 2e-11' => test_zci(
@ -729,7 +730,7 @@ ddg_goodie_test(
structured_answer => { structured_answer => {
input => ['6 * (2 * 10 ^- 11)'], input => ['6 * (2 * 10 ^- 11)'],
operation => 'Calculate', operation => 'Calculate',
result => qr/>1\.2 \* 10<sup>-10<\/sup></ result => re(qr/>1\.2 \* 10<sup>-10<\/sup></)
} }
), ),
'7 + 7e-7' => test_zci( '7 + 7e-7' => test_zci(
@ -738,7 +739,7 @@ ddg_goodie_test(
structured_answer => { structured_answer => {
input => ['7 + (7 * 10 ^- 7)'], input => ['7 + (7 * 10 ^- 7)'],
operation => 'Calculate', operation => 'Calculate',
result => qr/>7.0000007</ result => re(qr/>7.0000007</)
} }
), ),
'1 * 7 + e-7' => test_zci( '1 * 7 + e-7' => test_zci(
@ -747,7 +748,7 @@ ddg_goodie_test(
structured_answer => { structured_answer => {
input => ['1 * 7 + e - 7'], input => ['1 * 7 + e - 7'],
operation => 'Calculate', operation => 'Calculate',
result => qr/>2.71828182845905</ result => re(qr/>2.71828182845905</)
} }
), ),
'7 * e- 5' => test_zci( '7 * e- 5' => test_zci(
@ -756,7 +757,7 @@ ddg_goodie_test(
structured_answer => { structured_answer => {
input => ['7 * e - 5'], input => ['7 * e - 5'],
operation => 'Calculate', operation => 'Calculate',
result => qr/>14.0279727992134</ result => re(qr/>14.0279727992134</)
} }
), ),
'pi/1e9' => test_zci( 'pi/1e9' => test_zci(
@ -765,7 +766,7 @@ ddg_goodie_test(
structured_answer => { structured_answer => {
input => ['pi / (1 * 10 ^ 9)'], input => ['pi / (1 * 10 ^ 9)'],
operation => 'Calculate', operation => 'Calculate',
result => qr/>3\.14159265358979 \* 10<sup>-9<\/sup></ result => re(qr/>3\.14159265358979 \* 10<sup>-9<\/sup></)
} }
), ),
'pi*1e9' => test_zci( 'pi*1e9' => test_zci(
@ -774,7 +775,7 @@ ddg_goodie_test(
structured_answer => { structured_answer => {
input => ['pi * (1 * 10 ^ 9)'], input => ['pi * (1 * 10 ^ 9)'],
operation => 'Calculate', operation => 'Calculate',
result => qr/>3,141,592,653\.58979</ result => re(qr/>3,141,592,653\.58979</)
} }
), ),
'1 234 + 5 432' => test_zci( '1 234 + 5 432' => test_zci(
@ -783,7 +784,7 @@ ddg_goodie_test(
structured_answer => { structured_answer => {
input => ['1234 + 5432'], input => ['1234 + 5432'],
operation => 'Calculate', operation => 'Calculate',
result => qr/6,666/ result => re(qr/6,666/)
} }
), ),
'1_234 + 5_432' => test_zci( '1_234 + 5_432' => test_zci(
@ -792,7 +793,7 @@ ddg_goodie_test(
structured_answer => { structured_answer => {
input => ['1234 + 5432'], input => ['1234 + 5432'],
operation => 'Calculate', operation => 'Calculate',
result => qr/6,666/ result => re(qr/6,666/)
} }
), ),
'(0.4e^(0))*cos(0)' => test_zci( '(0.4e^(0))*cos(0)' => test_zci(
@ -801,7 +802,7 @@ ddg_goodie_test(
structured_answer => { structured_answer => {
input => ['(0.4e ^ (0)) * cos(0)'], input => ['(0.4e ^ (0)) * cos(0)'],
operation => 'Calculate', operation => 'Calculate',
result => qr'0.4' result => re(qr'0.4')
} }
), ),
'2pi' => test_zci( '2pi' => test_zci(
@ -810,7 +811,7 @@ ddg_goodie_test(
structured_answer => { structured_answer => {
input => ['2 pi'], input => ['2 pi'],
operation => 'Calculate', operation => 'Calculate',
result => qr"6.28318530717958" result => re(qr"6.28318530717958")
} }
), ),
'fact(3)' => test_zci( 'fact(3)' => test_zci(
@ -819,7 +820,7 @@ ddg_goodie_test(
structured_answer => { structured_answer => {
input => ['fact(3)'], input => ['fact(3)'],
operation => 'Calculate', operation => 'Calculate',
result => qr/>6</ result => re(qr/>6</)
} }
), ),
'factorial(3)' => test_zci( 'factorial(3)' => test_zci(
@ -828,7 +829,7 @@ ddg_goodie_test(
structured_answer => { structured_answer => {
input => ['fact(3)'], input => ['fact(3)'],
operation => 'Calculate', operation => 'Calculate',
result => qr/>6</ result => re(qr/>6</)
} }
), ),
'123.123.123.123/255.255.255.255' => undef, '123.123.123.123/255.255.255.255' => undef,
@ -860,4 +861,4 @@ ddg_goodie_test(
'(01780) 111 111' => undef, '(01780) 111 111' => undef,
); );
done_testing; done_testing;

View File

@ -3,6 +3,7 @@
use strict; use strict;
use warnings; use warnings;
use Test::More; use Test::More;
use Test::Deep;
use DDG::Test::Goodie; use DDG::Test::Goodie;
zci answer_type => 'calendar_conversion'; zci answer_type => 'calendar_conversion';
@ -48,4 +49,4 @@ ddg_goodie_test(
'22nd Aug 2003 in gregorian time' => undef, '22nd Aug 2003 in gregorian time' => undef,
); );
done_testing; done_testing;

View File

@ -3,6 +3,7 @@
use strict; use strict;
use warnings; use warnings;
use Test::More; use Test::More;
use Test::Deep;
use DDG::Test::Goodie; use DDG::Test::Goodie;
use Test::MockTime qw( :all ); use Test::MockTime qw( :all );
@ -14,9 +15,9 @@ ddg_goodie_test(
DDG::Goodie::CalendarToday DDG::Goodie::CalendarToday
)], )],
'calendar' => test_zci( 'calendar' => test_zci(
qr/\nS M T W T F S[ ]+[A-Za-z]+ [0-9]{4}\n.+/, re(qr/\nS M T W T F S[ ]+[A-Za-z]+ [0-9]{4}\n.+/),
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'text', group => 'text',
item => 0, item => 0,
@ -27,9 +28,9 @@ ddg_goodie_test(
} }
), ),
'calendar november' => test_zci( 'calendar november' => test_zci(
qr/\nS M T W T F S November [0-9]{4}\n.+/, re(qr/\nS M T W T F S November [0-9]{4}\n.+/),
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'text', group => 'text',
item => 0, item => 0,
@ -40,9 +41,9 @@ ddg_goodie_test(
} }
), ),
'calendar november 12th' => test_zci( 'calendar november 12th' => test_zci(
qr/\nS M T W T F S November [0-9]{4}\n.+/, re(qr/\nS M T W T F S November [0-9]{4}\n.+/),
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'text', group => 'text',
item => 0, item => 0,
@ -53,9 +54,9 @@ ddg_goodie_test(
} }
), ),
'calendar last november' => test_zci( 'calendar last november' => test_zci(
qr/\nS M T W T F S November [0-9]{4}\n.+/, re(qr/\nS M T W T F S November [0-9]{4}\n.+/),
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'text', group => 'text',
item => 0, item => 0,
@ -66,9 +67,9 @@ ddg_goodie_test(
} }
), ),
'calendar next november' => test_zci( 'calendar next november' => test_zci(
qr/\nS M T W T F S November [0-9]{4}\n.+/, re(qr/\nS M T W T F S November [0-9]{4}\n.+/),
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'text', group => 'text',
item => 0, item => 0,
@ -217,7 +218,7 @@ S M T W T F S November 2009
29 30 29 30
", ",
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'text', group => 'text',
item => 0, item => 0,
@ -236,7 +237,7 @@ S M T W T F S November 2015
|29| 30 |29| 30
", ",
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'text', group => 'text',
item => 0, item => 0,
@ -255,7 +256,7 @@ S M T W T F S November 2015
|29| 30 |29| 30
", ",
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'text', group => 'text',
item => 0, item => 0,
@ -275,7 +276,7 @@ S M T W T F S November 1980
30 30
", ",
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'text', group => 'text',
item => 0, item => 0,
@ -294,7 +295,7 @@ S M T W T F S November 2009
29 30 29 30
", ",
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'text', group => 'text',
item => 0, item => 0,
@ -305,9 +306,9 @@ S M T W T F S November 2009
} }
), ),
'next november on a calendar' => test_zci( 'next november on a calendar' => test_zci(
qr/\nS M T W T F S November [0-9]{4}\n.+/, re(qr/\nS M T W T F S November [0-9]{4}\n.+/),
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'text', group => 'text',
item => 0, item => 0,
@ -318,9 +319,9 @@ S M T W T F S November 2009
} }
), ),
'calendar for november' => test_zci( 'calendar for november' => test_zci(
qr/\nS M T W T F S November [0-9]{4}\n.+/, re(qr/\nS M T W T F S November [0-9]{4}\n.+/),
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'text', group => 'text',
item => 0, item => 0,
@ -339,7 +340,7 @@ S M T W T F S November 2009
29 30 29 30
", ",
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'text', group => 'text',
item => 0, item => 0,
@ -351,9 +352,9 @@ S M T W T F S November 2009
), ),
'22/8/2003 to the hijri calendar' => undef, '22/8/2003 to the hijri calendar' => undef,
"today's calendar" => test_zci( "today's calendar" => test_zci(
qr/\nS M T W T F S [A-Z][a-z]+ [0-9]{4}\n.+/, re(qr/\nS M T W T F S [A-Z][a-z]+ [0-9]{4}\n.+/),
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'text', group => 'text',
item => 0, item => 0,
@ -364,9 +365,9 @@ S M T W T F S November 2009
} }
), ),
"november's calendar" => test_zci( "november's calendar" => test_zci(
qr/\nS M T W T F S November [0-9]{4}\n.+/, re(qr/\nS M T W T F S November [0-9]{4}\n.+/),
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'text', group => 'text',
item => 0, item => 0,
@ -379,14 +380,14 @@ S M T W T F S November 2009
); );
# Special focus on relative dates, examining the "today" circle # Special focus on relative dates, examining the "today" circle
my $test_location_tz = qr/\(EDT, UTC-4\)/; my $test_location_tz = re(qr/\(EDT, UTC-4\)/);
set_fixed_time("2014-06-11T09:45:56"); set_fixed_time("2014-06-11T09:45:56");
ddg_goodie_test( ddg_goodie_test(
[qw( [qw(
DDG::Goodie::CalendarToday DDG::Goodie::CalendarToday
)], )],
"calendar yesterday" => test_zci( "calendar yesterday" => test_zci(
qr/June 2014.*\|10\|/s, re(qr/June 2014.*\|10\|/s),
structured_answer => { structured_answer => {
data => { data => {
month_year => "June 2014", month_year => "June 2014",
@ -445,7 +446,7 @@ ddg_goodie_test(
} }
), ),
"calendar today" => test_zci( "calendar today" => test_zci(
qr/June 2014.*\|11\|/s, re(qr/June 2014.*\|11\|/s),
structured_answer => { structured_answer => {
data => { data => {
month_year => "June 2014", month_year => "June 2014",
@ -504,7 +505,7 @@ ddg_goodie_test(
} }
), ),
"calendar tomorrow" => test_zci( "calendar tomorrow" => test_zci(
qr/June 2014.*\|12\|/s, re(qr/June 2014.*\|12\|/s),
structured_answer => { structured_answer => {
data => { data => {
month_year => "June 2014", month_year => "June 2014",
@ -563,7 +564,7 @@ ddg_goodie_test(
} }
), ),
"calendar 20 days ago" => test_zci( "calendar 20 days ago" => test_zci(
qr/May 2014.*\|22\|/s, re(qr/May 2014.*\|22\|/s),
structured_answer => { structured_answer => {
data => { data => {
month_year => "May 2014", month_year => "May 2014",
@ -627,7 +628,7 @@ ddg_goodie_test(
} }
), ),
"calendar in 20 days" => test_zci( "calendar in 20 days" => test_zci(
qr/July 2014.*\| 1\|/s, re(qr/July 2014.*\| 1\|/s),
structured_answer => { structured_answer => {
data => { data => {
month_year => "July 2014", month_year => "July 2014",
@ -689,7 +690,7 @@ ddg_goodie_test(
} }
), ),
"calendar last week" => test_zci( "calendar last week" => test_zci(
qr/June 2014.*\| 4\|/s, re(qr/June 2014.*\| 4\|/s),
structured_answer => { structured_answer => {
data => { data => {
month_year => "June 2014", month_year => "June 2014",
@ -748,7 +749,7 @@ ddg_goodie_test(
} }
), ),
"calendar next week" => "calendar next week" =>
test_zci(qr/June 2014.*\|18\|/s, test_zci(re(qr/June 2014.*\|18\|/s),
structured_answer => { structured_answer => {
data => { data => {
month_year => "June 2014", month_year => "June 2014",
@ -807,7 +808,7 @@ ddg_goodie_test(
} }
), ),
"calendar last year" => "calendar last year" =>
test_zci(qr/June 2013.*\|11\|/s, test_zci(re(qr/June 2013.*\|11\|/s),
structured_answer => { structured_answer => {
data => { data => {
month_year => "June 2013", month_year => "June 2013",
@ -874,7 +875,7 @@ ddg_goodie_test(
} }
), ),
"calendar next year" => "calendar next year" =>
test_zci(qr/June 2015.*\|11\|/s, test_zci(re(qr/June 2015.*\|11\|/s),
structured_answer => { structured_answer => {
data => { data => {
month_year => "June 2015", month_year => "June 2015",
@ -937,4 +938,3 @@ ddg_goodie_test(
restore_time(); restore_time();
done_testing; done_testing;

View File

@ -4,6 +4,7 @@ use strict;
use warnings; use warnings;
use Test::More; use Test::More;
use Test::Deep;
use DDG::Test::Goodie; use DDG::Test::Goodie;
zci answer_type => "calling_codes"; zci answer_type => "calling_codes";
@ -93,4 +94,4 @@ ddg_goodie_test(
"calling code 599" => undef, "calling code 599" => undef,
); );
done_testing; done_testing;

View File

@ -3,6 +3,7 @@
use strict; use strict;
use warnings; use warnings;
use Test::More; use Test::More;
use Test::Deep;
use DDG::Test::Goodie; use DDG::Test::Goodie;
zci answer_type => "camel_case"; zci answer_type => "camel_case";
@ -44,4 +45,4 @@ ddg_goodie_test(
'camelcase this' => undef 'camelcase this' => undef
); );
done_testing; done_testing;

View File

@ -3,6 +3,7 @@
use strict; use strict;
use warnings; use warnings;
use Test::More; use Test::More;
use Test::Deep;
use DDG::Test::Goodie; use DDG::Test::Goodie;
zci answer_type => 'chars'; zci answer_type => 'chars';
@ -103,4 +104,3 @@ ddg_goodie_test(
); );
done_testing; done_testing;

View File

@ -3,6 +3,7 @@
use strict; use strict;
use warnings; use warnings;
use Test::More; use Test::More;
use Test::Deep;
use DDG::Test::Goodie; use DDG::Test::Goodie;
zci answer_type => 'chess960_position'; zci answer_type => 'chess960_position';
@ -15,7 +16,7 @@ ddg_goodie_test(
'chess960 random' => test_zci( 'chess960 random' => test_zci(
'Chess 960', 'Chess 960',
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => "text", group => "text",
item => 0, item => 0,
@ -28,4 +29,3 @@ ddg_goodie_test(
); );
done_testing; done_testing;

View File

@ -4,6 +4,7 @@ use strict;
use warnings; use warnings;
use Test::MockTime qw( :all ); use Test::MockTime qw( :all );
use Test::More; use Test::More;
use Test::Deep;
use DDG::Test::Goodie; use DDG::Test::Goodie;
use utf8; use utf8;
@ -132,4 +133,3 @@ ddg_goodie_test(
restore_time(); restore_time();
done_testing; done_testing;

View File

@ -3,6 +3,7 @@
use strict; use strict;
use warnings; use warnings;
use Test::More; use Test::More;
use Test::Deep;
use DDG::Test::Goodie; use DDG::Test::Goodie;
zci answer_type => "coffee_to_water_ratio"; zci answer_type => "coffee_to_water_ratio";
@ -79,4 +80,4 @@ ddg_goodie_test(
), ),
); );
done_testing; done_testing;

View File

@ -3,6 +3,7 @@
use strict; use strict;
use warnings; use warnings;
use Test::More; use Test::More;
use Test::Deep;
use DDG::Test::Goodie; use DDG::Test::Goodie;
zci answer_type => 'coin'; zci answer_type => 'coin';
@ -11,85 +12,85 @@ zci is_cached => 0;
ddg_goodie_test( ddg_goodie_test(
[qw( DDG::Goodie::Coin )], [qw( DDG::Goodie::Coin )],
'flip a coin' => test_zci( 'flip a coin' => test_zci(
qr/(heads|tails) \(random\)/, re(qr/(heads|tails) \(random\)/),
structured_answer => { structured_answer => {
input => [1], input => [1],
operation => 'Flip coin', operation => 'Flip coin',
result => qr/^(heads|tails)$/ result => re(qr/^(heads|tails)$/)
} }
), ),
'flip coin' => test_zci( 'flip coin' => test_zci(
qr/(heads|tails) \(random\)/, re(qr/(heads|tails) \(random\)/),
structured_answer => { structured_answer => {
input => [1], input => [1],
operation => 'Flip coin', operation => 'Flip coin',
result => qr/^(heads|tails)$/ result => re(qr/^(heads|tails)$/)
} }
), ),
'flip 1 coin' => test_zci( 'flip 1 coin' => test_zci(
qr/(heads|tails) \(random\)/, re(qr/(heads|tails) \(random\)/),
structured_answer => { structured_answer => {
input => [1], input => [1],
operation => 'Flip coin', operation => 'Flip coin',
result => qr/^(heads|tails)$/ result => re(qr/^(heads|tails)$/)
} }
), ),
'flip 2 coins' => test_zci( 'flip 2 coins' => test_zci(
qr/(heads|tails), (heads|tails) \(random\)/, re(qr/(heads|tails), (heads|tails) \(random\)/),
structured_answer => { structured_answer => {
input => [2], input => [2],
operation => 'Flip coin', operation => 'Flip coin',
result => qr/(heads|tails), / result => re(qr/(heads|tails), /)
} }
), ),
'toss a coin' => test_zci( 'toss a coin' => test_zci(
qr/(heads|tails) \(random\)/, re(qr/(heads|tails) \(random\)/),
structured_answer => { structured_answer => {
input => [1], input => [1],
operation => 'Flip coin', operation => 'Flip coin',
result => qr/^(heads|tails)$/ result => re(qr/^(heads|tails)$/)
} }
), ),
'toss 1 coin' => test_zci( 'toss 1 coin' => test_zci(
qr/(heads|tails) \(random\)/, re(qr/(heads|tails) \(random\)/),
structured_answer => { structured_answer => {
input => [1], input => [1],
operation => 'Flip coin', operation => 'Flip coin',
result => qr/^(heads|tails)$/ result => re(qr/^(heads|tails)$/)
} }
), ),
'toss 2 coins' => test_zci( 'toss 2 coins' => test_zci(
qr/(heads|tails), (heads|tails) \(random\)/, re(qr/(heads|tails), (heads|tails) \(random\)/),
structured_answer => { structured_answer => {
input => [2], input => [2],
operation => 'Flip coin', operation => 'Flip coin',
result => qr/(heads|tails), / result => re(qr/(heads|tails), /)
} }
), ),
'heads or tails' => test_zci( 'heads or tails' => test_zci(
qr/(heads|tails) \(random\)/, re(qr/(heads|tails) \(random\)/),
structured_answer => { structured_answer => {
input => [1], input => [1],
operation => 'Flip coin', operation => 'Flip coin',
result => qr/^(heads|tails)$/ result => re(qr/^(heads|tails)$/)
} }
), ),
'heads or tails?' => test_zci( 'heads or tails?' => test_zci(
qr/(heads|tails) \(random\)/, re(qr/(heads|tails) \(random\)/),
structured_answer => { structured_answer => {
input => [1], input => [1],
operation => 'Flip coin', operation => 'Flip coin',
result => qr/^(heads|tails)$/ result => re(qr/^(heads|tails)$/)
} }
), ),
'flip 4 coins' => test_zci( 'flip 4 coins' => test_zci(
qr/((heads|tails),? ){4}\(random\)/, re(qr/((heads|tails),? ){4}\(random\)/),
structured_answer => { structured_answer => {
input => [4], input => [4],
operation => 'Flip coin', operation => 'Flip coin',
result => qr/(heads|tails),? / result => re(qr/(heads|tails),? /)
} }
), ),
); );
done_testing; done_testing;

View File

@ -3,6 +3,7 @@
use strict; use strict;
use warnings; use warnings;
use Test::More; use Test::More;
use Test::Deep;
use DDG::Test::Goodie; use DDG::Test::Goodie;
zci answer_type => 'color_code'; zci answer_type => 'color_code';
@ -13,7 +14,7 @@ my $green_answer = 'Hex: #00FF00 ~ RGBA(0, 255, 0, 1) ~ RGB(0%, 100%, 0%) ~ HSL(
my %basic_answer = ( my %basic_answer = (
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'text', group => 'text',
item => 0, item => 0,

View File

@ -3,6 +3,7 @@
use strict; use strict;
use warnings; use warnings;
use Test::More; use Test::More;
use Test::Deep;
use DDG::Test::Goodie; use DDG::Test::Goodie;
zci answer_type => "combination"; zci answer_type => "combination";
@ -38,4 +39,4 @@ ddg_goodie_test(
'1000000000000 choose 2000' => undef, '1000000000000 choose 2000' => undef,
); );
done_testing; done_testing;

View File

@ -4,6 +4,7 @@ use strict;
use warnings; use warnings;
use utf8; use utf8;
use Test::More; use Test::More;
use Test::Deep;
use DDG::Test::Goodie; use DDG::Test::Goodie;
zci answer_type => "constants"; zci answer_type => "constants";
@ -54,4 +55,4 @@ ddg_goodie_test(
"why?" => undef, "why?" => undef,
); );
done_testing; done_testing;

View File

@ -2,6 +2,7 @@
use strict; use strict;
use warnings; use warnings;
use Test::More; use Test::More;
use Test::Deep;
use DDG::Test::Goodie; use DDG::Test::Goodie;
use utf8; use utf8;
zci answer_type => 'conversions'; zci answer_type => 'conversions';
@ -2815,4 +2816,4 @@ ddg_goodie_test(
'1E300 miles in metres' => undef, '1E300 miles in metres' => undef,
'5 pas.i to atm' => undef, '5 pas.i to atm' => undef,
); );
done_testing; done_testing;

View File

@ -3,6 +3,7 @@
use strict; use strict;
use warnings; use warnings;
use Test::More; use Test::More;
use Test::Deep;
use DDG::Test::Goodie; use DDG::Test::Goodie;
use utf8; use utf8;
@ -102,14 +103,14 @@ ddg_goodie_test(
'convert 39.75 degrees to farenheit' => undef, 'convert 39.75 degrees to farenheit' => undef,
#Check for to-format name #Check for to-format name
'16.5° S, 68.15° W dms' => test_zci(qr/./, '16.5° S, 68.15° W dms' => test_zci(re(qr/./),
structured_answer => { structured_answer => {
input => ["16.5° S", "68.15° W"], input => ["16.5° S", "68.15° W"],
operation => "Convert to DMS", operation => "Convert to DMS",
result => "16&deg; 30&prime; S, 68&deg; 9&prime; W", result => "16&deg; 30&prime; S, 68&deg; 9&prime; W",
} }
), ),
'16° 30 S, 68° 9 W decimal' => test_zci(qr/./, '16° 30 S, 68° 9 W decimal' => test_zci(re(qr/./),
structured_answer => { structured_answer => {
input => ["16° 30 S", "68° 9 W"], input => ["16° 30 S", "68° 9 W"],
operation => "Convert to decimal", operation => "Convert to decimal",
@ -119,4 +120,3 @@ ddg_goodie_test(
); );
done_testing; done_testing;

View File

@ -4,6 +4,7 @@ use strict;
use warnings; use warnings;
use Test::More; use Test::More;
use Test::Deep;
use DDG::Test::Goodie; use DDG::Test::Goodie;
zci answer_type => "country_codes"; zci answer_type => "country_codes";
@ -44,4 +45,4 @@ ddg_goodie_test(
'iso code for english' => undef, 'iso code for english' => undef,
); );
done_testing; done_testing;

View File

@ -3,6 +3,7 @@
use strict; use strict;
use warnings; use warnings;
use Test::More; use Test::More;
use Test::Deep;
use DDG::Test::Goodie; use DDG::Test::Goodie;
zci answer_type => 'crypthashcheck'; zci answer_type => 'crypthashcheck';
@ -171,4 +172,3 @@ ddg_goodie_test(
done_testing; done_testing;

View File

@ -3,6 +3,7 @@
use strict; use strict;
use warnings; use warnings;
use Test::More; use Test::More;
use Test::Deep;
use DDG::Test::Goodie; use DDG::Test::Goodie;
zci answer_type => 'currency_in'; zci answer_type => 'currency_in';
@ -84,4 +85,4 @@ ddg_goodie_test(
) )
); );
done_testing; done_testing;

View File

@ -3,6 +3,7 @@
use strict; use strict;
use warnings; use warnings;
use Test::More; use Test::More;
use Test::Deep;
use DDG::Test::Goodie; use DDG::Test::Goodie;
zci answer_type => "cusip"; zci answer_type => "cusip";
@ -56,7 +57,7 @@ ddg_goodie_test(
), ),
'cusip check 037833100' => test_zci("037833100 is a properly formatted CUSIP number.", 'cusip check 037833100' => test_zci("037833100 is a properly formatted CUSIP number.",
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'text', group => 'text',
} }
@ -64,7 +65,7 @@ ddg_goodie_test(
), ),
'cusip 844741108' => test_zci("844741108 is a properly formatted CUSIP number.", 'cusip 844741108' => test_zci("844741108 is a properly formatted CUSIP number.",
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'text', group => 'text',
} }
@ -72,7 +73,7 @@ ddg_goodie_test(
), ),
'037833100 cusip' => test_zci("037833100 is a properly formatted CUSIP number.", '037833100 cusip' => test_zci("037833100 is a properly formatted CUSIP number.",
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'text', group => 'text',
} }
@ -80,7 +81,7 @@ ddg_goodie_test(
), ),
'037833100 cusip check' => test_zci("037833100 is a properly formatted CUSIP number.", '037833100 cusip check' => test_zci("037833100 is a properly formatted CUSIP number.",
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'text', group => 'text',
} }
@ -90,7 +91,7 @@ ddg_goodie_test(
# starting white space should be stripped # starting white space should be stripped
'cusip 037833100' => test_zci("037833100 is a properly formatted CUSIP number.", 'cusip 037833100' => test_zci("037833100 is a properly formatted CUSIP number.",
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'text', group => 'text',
} }
@ -100,7 +101,7 @@ ddg_goodie_test(
# ending white space should be stripped # ending white space should be stripped
'cusip 037833100 ' => test_zci("037833100 is a properly formatted CUSIP number.", 'cusip 037833100 ' => test_zci("037833100 is a properly formatted CUSIP number.",
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'text', group => 'text',
} }
@ -110,7 +111,7 @@ ddg_goodie_test(
# starting and ending white space should be stripped # starting and ending white space should be stripped
'cusip 037833100 ' => test_zci("037833100 is a properly formatted CUSIP number.", 'cusip 037833100 ' => test_zci("037833100 is a properly formatted CUSIP number.",
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'text', group => 'text',
} }
@ -120,7 +121,7 @@ ddg_goodie_test(
# same AAPL queries with an incorrect check digit # same AAPL queries with an incorrect check digit
'cusip 03783310A' => test_zci("03783310A is not a properly formatted CUSIP number.", 'cusip 03783310A' => test_zci("03783310A is not a properly formatted CUSIP number.",
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'text', group => 'text',
} }
@ -128,7 +129,7 @@ ddg_goodie_test(
), ),
'cusip 03783310A' => test_zci("03783310A is not a properly formatted CUSIP number.", 'cusip 03783310A' => test_zci("03783310A is not a properly formatted CUSIP number.",
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'text', group => 'text',
} }
@ -136,7 +137,7 @@ ddg_goodie_test(
), ),
'cusip 03783310A ' => test_zci("03783310A is not a properly formatted CUSIP number.", 'cusip 03783310A ' => test_zci("03783310A is not a properly formatted CUSIP number.",
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'text', group => 'text',
} }
@ -144,7 +145,7 @@ ddg_goodie_test(
), ),
'cusip 03783310A ' => test_zci("03783310A is not a properly formatted CUSIP number.", 'cusip 03783310A ' => test_zci("03783310A is not a properly formatted CUSIP number.",
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'text', group => 'text',
} }
@ -154,7 +155,7 @@ ddg_goodie_test(
# check CUSIP IDs with capital letters (these are for GOOG and Blackberry) # check CUSIP IDs with capital letters (these are for GOOG and Blackberry)
'cusip 38259P706' => test_zci("38259P706 is a properly formatted CUSIP number.", 'cusip 38259P706' => test_zci("38259P706 is a properly formatted CUSIP number.",
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'text', group => 'text',
} }
@ -162,7 +163,7 @@ ddg_goodie_test(
), ),
'cusip 38259P508' => test_zci("38259P508 is a properly formatted CUSIP number.", 'cusip 38259P508' => test_zci("38259P508 is a properly formatted CUSIP number.",
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'text', group => 'text',
} }
@ -170,7 +171,7 @@ ddg_goodie_test(
), ),
'cusip 09228F103' => test_zci("09228F103 is a properly formatted CUSIP number.", 'cusip 09228F103' => test_zci("09228F103 is a properly formatted CUSIP number.",
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'text', group => 'text',
} }
@ -180,7 +181,7 @@ ddg_goodie_test(
# check the same CUSIP IDs with lower case letters # check the same CUSIP IDs with lower case letters
'cusip 38259p706' => test_zci("38259P706 is a properly formatted CUSIP number.", 'cusip 38259p706' => test_zci("38259P706 is a properly formatted CUSIP number.",
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'text', group => 'text',
} }
@ -188,7 +189,7 @@ ddg_goodie_test(
), ),
'cusip 38259p508' => test_zci("38259P508 is a properly formatted CUSIP number.", 'cusip 38259p508' => test_zci("38259P508 is a properly formatted CUSIP number.",
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'text', group => 'text',
} }
@ -196,7 +197,7 @@ ddg_goodie_test(
), ),
'cusip 09228f103' => test_zci("09228F103 is a properly formatted CUSIP number.", 'cusip 09228f103' => test_zci("09228F103 is a properly formatted CUSIP number.",
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'text', group => 'text',
} }
@ -208,7 +209,7 @@ ddg_goodie_test(
# if possible, these tests should be replaced with verified CUSIP IDs # if possible, these tests should be replaced with verified CUSIP IDs
'cusip 037833*00' => test_zci("037833*00 is not a properly formatted CUSIP number.", 'cusip 037833*00' => test_zci("037833*00 is not a properly formatted CUSIP number.",
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'text', group => 'text',
} }
@ -216,7 +217,7 @@ ddg_goodie_test(
), ),
'cusip 037833*02' => test_zci("037833*02 is a properly formatted CUSIP number.", 'cusip 037833*02' => test_zci("037833*02 is a properly formatted CUSIP number.",
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'text', group => 'text',
} }
@ -224,7 +225,7 @@ ddg_goodie_test(
), ),
'cusip 0378331#0' => test_zci("0378331#0 is not a properly formatted CUSIP number.", 'cusip 0378331#0' => test_zci("0378331#0 is not a properly formatted CUSIP number.",
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'text', group => 'text',
} }
@ -232,7 +233,7 @@ ddg_goodie_test(
), ),
'cusip 0378331#7' => test_zci("0378331#7 is a properly formatted CUSIP number.", 'cusip 0378331#7' => test_zci("0378331#7 is a properly formatted CUSIP number.",
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'text', group => 'text',
} }
@ -240,7 +241,7 @@ ddg_goodie_test(
), ),
'cusip 037833@00' => test_zci("037833\@00 is not a properly formatted CUSIP number.", 'cusip 037833@00' => test_zci("037833\@00 is not a properly formatted CUSIP number.",
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'text', group => 'text',
} }
@ -248,7 +249,7 @@ ddg_goodie_test(
), ),
'cusip 037833@01' => test_zci("037833\@01 is a properly formatted CUSIP number.", 'cusip 037833@01' => test_zci("037833\@01 is a properly formatted CUSIP number.",
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'text', group => 'text',
} }
@ -259,7 +260,7 @@ ddg_goodie_test(
# even though they are always invalid IDs # even though they are always invalid IDs
'cusip 03783310*' => test_zci("03783310* is not a properly formatted CUSIP number.", 'cusip 03783310*' => test_zci("03783310* is not a properly formatted CUSIP number.",
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'text', group => 'text',
} }
@ -267,7 +268,7 @@ ddg_goodie_test(
), ),
'cusip 03783310#' => test_zci("03783310# is not a properly formatted CUSIP number.", 'cusip 03783310#' => test_zci("03783310# is not a properly formatted CUSIP number.",
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'text', group => 'text',
} }
@ -275,7 +276,7 @@ ddg_goodie_test(
), ),
'cusip 03783310@' => test_zci("03783310\@ is not a properly formatted CUSIP number.", 'cusip 03783310@' => test_zci("03783310\@ is not a properly formatted CUSIP number.",
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'text', group => 'text',
} }
@ -285,7 +286,7 @@ ddg_goodie_test(
# Odd CUSIP IDs should not break the IA # Odd CUSIP IDs should not break the IA
'cusip ********8' => test_zci("********8 is not a properly formatted CUSIP number.", 'cusip ********8' => test_zci("********8 is not a properly formatted CUSIP number.",
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'text', group => 'text',
} }
@ -293,7 +294,7 @@ ddg_goodie_test(
), ),
'cusip ########9' => test_zci("########9 is not a properly formatted CUSIP number.", 'cusip ########9' => test_zci("########9 is not a properly formatted CUSIP number.",
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'text', group => 'text',
} }
@ -301,7 +302,7 @@ ddg_goodie_test(
), ),
'cusip @#*@#*@#*' => test_zci("\@#*\@#*\@#* is not a properly formatted CUSIP number.", 'cusip @#*@#*@#*' => test_zci("\@#*\@#*\@#* is not a properly formatted CUSIP number.",
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'text', group => 'text',
} }
@ -310,4 +311,3 @@ ddg_goodie_test(
); );
done_testing; done_testing;

View File

@ -3,6 +3,7 @@
use strict; use strict;
use warnings; use warnings;
use Test::More; use Test::More;
use Test::Deep;
use DDG::Test::Goodie; use DDG::Test::Goodie;
zci answer_type => 'dhl'; zci answer_type => 'dhl';
@ -28,4 +29,3 @@ ddg_goodie_test(
); );
done_testing; done_testing;

View File

@ -3,6 +3,7 @@
use strict; use strict;
use warnings; use warnings;
use Test::More; use Test::More;
use Test::Deep;
use Test::MockTime qw( :all ); use Test::MockTime qw( :all );
use DDG::Test::Goodie; use DDG::Test::Goodie;
use DDG::Test::Location; use DDG::Test::Location;
@ -125,4 +126,4 @@ location_test([ qw( DDG::Goodie::DateMath ) ],
'time ago' => undef, 'time ago' => undef,
); );
done_testing; done_testing;

View File

@ -3,6 +3,7 @@
use strict; use strict;
use warnings; use warnings;
use Test::More; use Test::More;
use Test::Deep;
use DDG::Test::Goodie; use DDG::Test::Goodie;
use Test::MockTime qw( :all ); use Test::MockTime qw( :all );
@ -70,4 +71,4 @@ ddg_goodie_test(
restore_time(); restore_time();
done_testing; done_testing;

View File

@ -3,6 +3,7 @@
use strict; use strict;
use warnings; use warnings;
use Test::More; use Test::More;
use Test::Deep;
use DDG::Test::Goodie; use DDG::Test::Goodie;
use Test::MockTime qw( :all ); use Test::MockTime qw( :all );
@ -76,57 +77,57 @@ ddg_goodie_test(
}, },
), ),
'days between jan 1 and jan 15 inclusive' => test_zci( 'days between jan 1 and jan 15 inclusive' => test_zci(
qr/^There are 15 days between.+inclusive\.$/, re(qr/^There are 15 days between.+inclusive\.$/),
structured_answer => { structured_answer => {
input => '-ANY-', input => ignore(),
operation => 'Days between, inclusive', operation => 'Days between, inclusive',
result => 15 result => 15
}, },
), ),
'days between jan 1 and 15th feb' => test_zci( 'days between jan 1 and 15th feb' => test_zci(
qr/^There are 45 days between.+and 15 Feb [0-9]{4}\.$/, re(qr/^There are 45 days between.+and 15 Feb [0-9]{4}\.$/),
structured_answer => { structured_answer => {
input => '-ANY-', input => ignore(),
operation => 'Days between', operation => 'Days between',
result => 45 result => 45
}, },
), ),
'number of days between jan 1 and 15th feb' => test_zci( 'number of days between jan 1 and 15th feb' => test_zci(
qr/^There are 45 days between.+and 15 Feb [0-9]{4}\.$/, re(qr/^There are 45 days between.+and 15 Feb [0-9]{4}\.$/),
structured_answer => { structured_answer => {
input => '-ANY-', input => ignore(),
operation => 'Days between', operation => 'Days between',
result => 45 result => 45
}, },
), ),
'number of days from jan 1 and 15th feb' => test_zci( 'number of days from jan 1 and 15th feb' => test_zci(
qr/^There are 45 days between.+and 15 Feb [0-9]{4}\.$/, re(qr/^There are 45 days between.+and 15 Feb [0-9]{4}\.$/),
structured_answer => { structured_answer => {
input => '-ANY-', input => ignore(),
operation => 'Days between', operation => 'Days between',
result => 45 result => 45
}, },
), ),
'days from jan 1 and 15th feb' => test_zci( 'days from jan 1 and 15th feb' => test_zci(
qr/^There are 45 days between.+and 15 Feb [0-9]{4}\.$/, re(qr/^There are 45 days between.+and 15 Feb [0-9]{4}\.$/),
structured_answer => { structured_answer => {
input => '-ANY-', input => ignore(),
operation => 'Days between', operation => 'Days between',
result => 45 result => 45
}, },
), ),
'days between today and tomorrow' => test_zci( 'days between today and tomorrow' => test_zci(
qr/^There are 1 days between.+ and.+\.$/, re(qr/^There are 1 days between.+ and.+\.$/),
structured_answer => { structured_answer => {
input => '-ANY-', input => ignore(),
operation => 'Days between', operation => 'Days between',
result => 1 result => 1
}, },
), ),
'how many days between feb 2 and feb 17' => test_zci( 'how many days between feb 2 and feb 17' => test_zci(
qr/^There are 15 days between.+ and.+\.$/, re(qr/^There are 15 days between.+ and.+\.$/),
structured_answer => { structured_answer => {
input => '-ANY-', input => ignore(),
operation => 'Days between', operation => 'Days between',
result => 15 result => 15
}, },
@ -149,4 +150,4 @@ ddg_goodie_test(
); );
restore_time(); restore_time();
done_testing; done_testing;

View File

@ -3,6 +3,7 @@
use strict; use strict;
use warnings; use warnings;
use Test::More; use Test::More;
use Test::Deep;
use DDG::Test::Goodie; use DDG::Test::Goodie;
zci answer_type => 'dessert'; zci answer_type => 'dessert';
@ -13,81 +14,81 @@ ddg_goodie_test(
'DDG::Goodie::Dessert' 'DDG::Goodie::Dessert'
], ],
'desserts beginning with a' => test_zci( 'desserts beginning with a' => test_zci(
qr/(.*?) is a dessert that begins with 'a'\.$/, re(qr/(.*?) is a dessert that begins with 'a'\.$/),
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'info', group => 'info',
} }
} }
), ),
'desserts beginning with A' => test_zci( 'desserts beginning with A' => test_zci(
qr/(.*?) is a dessert that begins with 'A'\.$/, re(qr/(.*?) is a dessert that begins with 'A'\.$/),
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'info', group => 'info',
} }
} }
), ),
'dessert start with a' => test_zci( 'dessert start with a' => test_zci(
qr/(.*?) is a dessert that begins with 'a'\.$/, re(qr/(.*?) is a dessert that begins with 'a'\.$/),
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'info', group => 'info',
} }
} }
), ),
'desserts starting with a' => test_zci( 'desserts starting with a' => test_zci(
qr/(.*?) is a dessert that begins with 'a'\.$/, re(qr/(.*?) is a dessert that begins with 'a'\.$/),
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'info', group => 'info',
} }
} }
), ),
'dessert starts with a' => test_zci( 'dessert starts with a' => test_zci(
qr/(.*?) is a dessert that begins with 'a'\.$/, re(qr/(.*?) is a dessert that begins with 'a'\.$/),
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'info', group => 'info',
} }
} }
), ),
'desserts beginning with z' => test_zci( 'desserts beginning with z' => test_zci(
qr/(.*?) is a dessert that begins with 'z'\.$/, re(qr/(.*?) is a dessert that begins with 'z'\.$/),
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'info', group => 'info',
} }
} }
), ),
'a dessert that begins with a' => test_zci( 'a dessert that begins with a' => test_zci(
qr/(.*?) is a dessert that begins with 'a'\.$/, re(qr/(.*?) is a dessert that begins with 'a'\.$/),
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'info', group => 'info',
} }
} }
), ),
'a dessert that starts with the letter a' => test_zci( 'a dessert that starts with the letter a' => test_zci(
qr/(.*?) is a dessert that begins with 'a'\.$/, re(qr/(.*?) is a dessert that begins with 'a'\.$/),
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'info', group => 'info',
} }
} }
), ),
'dessert that begins with the letter z' => test_zci( 'dessert that begins with the letter z' => test_zci(
qr/(.*?) is a dessert that begins with 'z'\.$/, re(qr/(.*?) is a dessert that begins with 'z'\.$/),
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'info', group => 'info',
} }
@ -95,4 +96,4 @@ ddg_goodie_test(
), ),
); );
done_testing; done_testing;

View File

@ -3,6 +3,7 @@
use strict; use strict;
use warnings; use warnings;
use Test::More; use Test::More;
use Test::Deep;
use DDG::Test::Goodie; use DDG::Test::Goodie;
zci answer_type => 'dewey_decimal'; zci answer_type => 'dewey_decimal';
@ -21,4 +22,4 @@ ddg_goodie_test(
'dewey 644' => test_zci('644 is household utilities in the Dewey Decimal System.', html => '644 is <a href="/?q=household">household</a> utilities in the Dewey Decimal System.'), 'dewey 644' => test_zci('644 is household utilities in the Dewey Decimal System.', html => '644 is <a href="/?q=household">household</a> utilities in the Dewey Decimal System.'),
); );
done_testing; done_testing;

111
t/Dice.t
View File

@ -3,6 +3,7 @@
use strict; use strict;
use warnings; use warnings;
use Test::More; use Test::More;
use Test::Deep;
use DDG::Test::Goodie; use DDG::Test::Goodie;
zci answer_type => 'dice_roll'; zci answer_type => 'dice_roll';
@ -17,9 +18,9 @@ ddg_goodie_test(
# Check trigger kicks in. # Check trigger kicks in.
'throw dice' => test_zci( 'throw dice' => test_zci(
qr/^., .$/, re(qr/^., .$/),
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'text', group => 'text',
options => { options => {
@ -29,9 +30,9 @@ ddg_goodie_test(
} }
), ),
'throw dices' => test_zci( 'throw dices' => test_zci(
qr/^., .$/, re(qr/^., .$/),
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'text', group => 'text',
options => { options => {
@ -41,9 +42,9 @@ ddg_goodie_test(
} }
), ),
'roll dice' => test_zci( 'roll dice' => test_zci(
qr/^., .$/, re(qr/^., .$/),
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'text', group => 'text',
options => { options => {
@ -53,9 +54,9 @@ ddg_goodie_test(
} }
), ),
'throw die' => test_zci( 'throw die' => test_zci(
qr/^.$/, re(qr/^.$/),
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'text', group => 'text',
options => { options => {
@ -68,9 +69,9 @@ ddg_goodie_test(
# Simple "dice" query # Simple "dice" query
"roll 5 dice" => test_zci( "roll 5 dice" => test_zci(
qr/., ., ., ., .$/, re(qr/., ., ., ., .$/),
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'text', group => 'text',
options => { options => {
@ -82,9 +83,9 @@ ddg_goodie_test(
# Simple shorthand query # Simple shorthand query
"roll 2d6" => test_zci( "roll 2d6" => test_zci(
qr/^\d (\+|-) \d$/, re(qr/^\d (\+|-) \d$/),
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'text', group => 'text',
options => { options => {
@ -96,9 +97,9 @@ ddg_goodie_test(
# Query with numbers as words # Query with numbers as words
"roll five dice" => test_zci( "roll five dice" => test_zci(
qr/., ., ., ., .$/, re(qr/., ., ., ., .$/),
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'text', group => 'text',
options => { options => {
@ -108,9 +109,9 @@ ddg_goodie_test(
} }
), ),
"roll twenty five dice" => test_zci( "roll twenty five dice" => test_zci(
qr/., ., ., ., .$/, re(qr/., ., ., ., .$/),
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'text', group => 'text',
options => { options => {
@ -120,9 +121,9 @@ ddg_goodie_test(
} }
), ),
"roll fifty-four dice" => test_zci( "roll fifty-four dice" => test_zci(
qr/., ., ., ., .$/, re(qr/., ., ., ., .$/),
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'text', group => 'text',
options => { options => {
@ -132,9 +133,9 @@ ddg_goodie_test(
} }
), ),
"roll seven dices" => test_zci( "roll seven dices" => test_zci(
qr/., ., ., ., .$/, re(qr/., ., ., ., .$/),
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'text', group => 'text',
options => { options => {
@ -147,9 +148,9 @@ ddg_goodie_test(
"roll foo dice" => undef, "roll foo dice" => undef,
"throw 1d20" => test_zci( "throw 1d20" => test_zci(
qr/^\d{1,2}$/, re(qr/^\d{1,2}$/),
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'text', group => 'text',
options => { options => {
@ -159,9 +160,9 @@ ddg_goodie_test(
} }
), ),
"roll d20" => test_zci( "roll d20" => test_zci(
qr/^\d{1,2}$/, re(qr/^\d{1,2}$/),
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'text', group => 'text',
options => { options => {
@ -173,9 +174,9 @@ ddg_goodie_test(
# Simple shorthand queries with +- # Simple shorthand queries with +-
"roll 3d12 + 4" => test_zci( "roll 3d12 + 4" => test_zci(
qr/^\d{1,2} (\+|-) \d{1,2} (\+|-) \d{1,2} (\+|-) \d{1,2}$/, re(qr/^\d{1,2} (\+|-) \d{1,2} (\+|-) \d{1,2} (\+|-) \d{1,2}$/),
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'text', group => 'text',
options => { options => {
@ -185,9 +186,9 @@ ddg_goodie_test(
} }
), ),
"roll 3d8 - 8" => test_zci( "roll 3d8 - 8" => test_zci(
qr/^\d (\+|-) \d (\+|-) \d (\+|-) \d$/, re(qr/^\d (\+|-) \d (\+|-) \d (\+|-) \d$/),
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'text', group => 'text',
options => { options => {
@ -197,9 +198,9 @@ ddg_goodie_test(
} }
), ),
"roll 4d6-l" => test_zci( "roll 4d6-l" => test_zci(
qr/^([1-6] \+ ){3}[1-6] - [1-6]$/, re(qr/^([1-6] \+ ){3}[1-6] - [1-6]$/),
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'text', group => 'text',
options => { options => {
@ -211,9 +212,9 @@ ddg_goodie_test(
# Simple conjunctive "dice" query # Simple conjunctive "dice" query
"throw 2 dice and 3 dice" => test_zci( "throw 2 dice and 3 dice" => test_zci(
qr/., .., ., .Total: \d+$/, re(qr/., .., ., .Total: \d+$/),
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'list', group => 'list',
options => { options => {
@ -225,9 +226,9 @@ ddg_goodie_test(
# Shorthand conjunctive query # Shorthand conjunctive query
"roll 2w6 and d20" => test_zci( "roll 2w6 and d20" => test_zci(
qr/^\d (\+|-) \d = \d+\d+Total: \d+$/, re(qr/^\d (\+|-) \d = \d+\d+Total: \d+$/),
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'list', group => 'list',
options => { options => {
@ -239,9 +240,9 @@ ddg_goodie_test(
# Shorthand conjunctive queries with +- # Shorthand conjunctive queries with +-
"roll 2d6 and 3d12 + 4" => test_zci( "roll 2d6 and 3d12 + 4" => test_zci(
qr/^\d (\+|-) \d = \d+\d{1,2} (\+|-) \d{1,2} (\+|-) \d{1,2} (\+|-) \d{1,2} = \d+Total: \d+$/, re(qr/^\d (\+|-) \d = \d+\d{1,2} (\+|-) \d{1,2} (\+|-) \d{1,2} (\+|-) \d{1,2} = \d+Total: \d+$/),
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'list', group => 'list',
options => { options => {
@ -251,9 +252,9 @@ ddg_goodie_test(
} }
), ),
"roll 2d6 and 3d12 - 4" => test_zci( "roll 2d6 and 3d12 - 4" => test_zci(
qr/^\d (\+|-) \d = \d+\d{1,2} (\+|-) \d{1,2} (\+|-) \d{1,2} (\+|-) \d{1,2} = -?\d+Total: \d+$/, re(qr/^\d (\+|-) \d = \d+\d{1,2} (\+|-) \d{1,2} (\+|-) \d{1,2} (\+|-) \d{1,2} = -?\d+Total: \d+$/),
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'list', group => 'list',
options => { options => {
@ -263,9 +264,9 @@ ddg_goodie_test(
} }
), ),
"throw 3d12 - 4 and 2d6" => test_zci( "throw 3d12 - 4 and 2d6" => test_zci(
qr/^\d{1,2} (\+|-) \d{1,2} (\+|-) \d{1,2} (\+|-) \d{1,2} = -?\d{1,2}\d (\+|-) \d = \d+Total: \d+$/, re(qr/^\d{1,2} (\+|-) \d{1,2} (\+|-) \d{1,2} (\+|-) \d{1,2} = -?\d{1,2}\d (\+|-) \d = \d+Total: \d+$/),
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'list', group => 'list',
options => { options => {
@ -275,9 +276,9 @@ ddg_goodie_test(
} }
), ),
"throw 2d6 and 3d12 + 4" => test_zci( "throw 2d6 and 3d12 + 4" => test_zci(
qr/^\d (\+|-) \d = \d+\d{1,2} (\+|-) \d{1,2} (\+|-) \d{1,2} (\+|-) \d{1,2} = \d+Total: \d+$/, re(qr/^\d (\+|-) \d = \d+\d{1,2} (\+|-) \d{1,2} (\+|-) \d{1,2} (\+|-) \d{1,2} = \d+Total: \d+$/),
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'list', group => 'list',
options => { options => {
@ -287,9 +288,9 @@ ddg_goodie_test(
} }
), ),
"roll 2d6 and 4w6-l" => test_zci( "roll 2d6 and 4w6-l" => test_zci(
qr/^\d (\+|-) \d = \d+([1-6] \+ ){3}[1-6] - [1-6] = \d{1,2}Total: \d+$/, re(qr/^\d (\+|-) \d = \d+([1-6] \+ ){3}[1-6] - [1-6] = \d{1,2}Total: \d+$/),
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'list', group => 'list',
options => { options => {
@ -299,9 +300,9 @@ ddg_goodie_test(
} }
), ),
"roll 2 dice and 3d5 + 4" => test_zci( "roll 2 dice and 3d5 + 4" => test_zci(
qr/^., .\d{1,2} (\+|-) \d{1,2} (\+|-) \d{1,2} (\+|-) \d{1,2} = \d+Total: \d+$/, re(qr/^., .\d{1,2} (\+|-) \d{1,2} (\+|-) \d{1,2} (\+|-) \d{1,2} = \d+Total: \d+$/),
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'list', group => 'list',
options => { options => {
@ -325,9 +326,9 @@ ddg_goodie_test(
"roll 2d3 and 2d4-a" => undef, "roll 2d3 and 2d4-a" => undef,
"throw die" => test_zci( "throw die" => test_zci(
qr/^.$/, re(qr/^.$/),
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'text', group => 'text',
options => { options => {
@ -338,9 +339,9 @@ ddg_goodie_test(
), ),
'roll 3d12' => test_zci( 'roll 3d12' => test_zci(
qr/\d{1,2} \+ \d{1,2} \+ \d{1,2}/, re(qr/\d{1,2} \+ \d{1,2} \+ \d{1,2}/),
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'text', group => 'text',
options => { options => {
@ -350,9 +351,9 @@ ddg_goodie_test(
} }
), ),
'roll 3d12 and 2d4' => test_zci( 'roll 3d12 and 2d4' => test_zci(
qr/\d{1,2} \+ \d{1,2} \+ \d{1,2} = \d+[1-4]+ \+ [1-4]+ = \dTotal: \d+/, re(qr/\d{1,2} \+ \d{1,2} \+ \d{1,2} = \d+[1-4]+ \+ [1-4]+ = \dTotal: \d+/),
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'list', group => 'list',
options => { options => {
@ -362,9 +363,9 @@ ddg_goodie_test(
} }
), ),
'roll 2 dice and 3d5' => test_zci( 'roll 2 dice and 3d5' => test_zci(
qr/[1-5]+ \+ [1-5]+ \+ [1-5]+ = \d+Total: \d+/, re(qr/[1-5]+ \+ [1-5]+ \+ [1-5]+ = \d+Total: \d+/),
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'list', group => 'list',
options => { options => {
@ -375,4 +376,4 @@ ddg_goodie_test(
), ),
); );
done_testing; done_testing;

View File

@ -3,6 +3,7 @@
use strict; use strict;
use warnings; use warnings;
use Test::More; use Test::More;
use Test::Deep;
use DDG::Test::Goodie; use DDG::Test::Goodie;
zci answer_type => 'duckduckgo'; zci answer_type => 'duckduckgo';
@ -174,4 +175,3 @@ ddg_goodie_test(
); );
done_testing; done_testing;

View File

@ -1,6 +1,7 @@
use strict; use strict;
use warnings; use warnings;
use Test::More; use Test::More;
use Test::Deep;
use DDG::Test::Goodie; use DDG::Test::Goodie;
zci answer_type => 'conversion'; zci answer_type => 'conversion';
@ -41,4 +42,4 @@ ddg_goodie_test(
'11px to em at base-pixel size 23px' => build_test('0.478em', '11', 'px', '23'), '11px to em at base-pixel size 23px' => build_test('0.478em', '11', 'px', '23'),
); );
done_testing; done_testing;

View File

@ -3,6 +3,7 @@
use strict; use strict;
use warnings; use warnings;
use Test::More; use Test::More;
use Test::Deep;
use DDG::Test::Goodie; use DDG::Test::Goodie;
zci answer_type => 'email_validation'; zci answer_type => 'email_validation';
@ -11,63 +12,63 @@ zci is_cached => 1;
ddg_goodie_test( ddg_goodie_test(
['DDG::Goodie::EmailValidator'], ['DDG::Goodie::EmailValidator'],
'validate my email foo@example.com' => test_zci( 'validate my email foo@example.com' => test_zci(
qr/appears to be valid/, re(qr/appears to be valid/),
structured_answer => { structured_answer => {
input => ['foo@example.com'], input => ['foo@example.com'],
operation => 'Email address validation', operation => 'Email address validation',
result => qr/appears to be valid/ result => re(qr/appears to be valid/)
} }
), ),
'validate my email foo+abc@example.com' => test_zci( 'validate my email foo+abc@example.com' => test_zci(
qr/appears to be valid/, re(qr/appears to be valid/),
structured_answer => { structured_answer => {
input => ['foo+abc@example.com'], input => ['foo+abc@example.com'],
operation => 'Email address validation', operation => 'Email address validation',
result => qr/appears to be valid/ result => re(qr/appears to be valid/)
} }
), ),
'validate my email foo.bar@example.com' => test_zci( 'validate my email foo.bar@example.com' => test_zci(
qr/appears to be valid/, re(qr/appears to be valid/),
structured_answer => { structured_answer => {
input => ['foo.bar@example.com'], input => ['foo.bar@example.com'],
operation => 'Email address validation', operation => 'Email address validation',
result => qr/appears to be valid/ result => re(qr/appears to be valid/)
} }
), ),
'validate user@exampleaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.com' 'validate user@exampleaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.com'
=> test_zci( => test_zci(
qr/Please check the address/, re(qr/Please check the address/),
structured_answer => { structured_answer => {
input => '-ANY-', input => ignore(),
operation => 'Email address validation', operation => 'Email address validation',
result => qr/Please check the address/, result => re(qr/Please check the address/),
} }
), ),
'validate foo@example.com' => test_zci( 'validate foo@example.com' => test_zci(
qr/appears to be valid/, re(qr/appears to be valid/),
structured_answer => { structured_answer => {
input => ['foo@example.com'], input => ['foo@example.com'],
operation => 'Email address validation', operation => 'Email address validation',
result => qr/appears to be valid/ result => re(qr/appears to be valid/)
} }
), ),
'validate foo@!!!.com' => test_zci( 'validate foo@!!!.com' => test_zci(
qr/Please check the fully qualified domain name/, re(qr/Please check the fully qualified domain name/),
structured_answer => { structured_answer => {
input => ['foo@!!!.com'], input => ['foo@!!!.com'],
operation => 'Email address validation', operation => 'Email address validation',
result => qr/Please check the fully qualified domain name/, result => re(qr/Please check the fully qualified domain name/),
} }
), ),
'validate foo@example.lmnop' => test_zci( 'validate foo@example.lmnop' => test_zci(
qr/Please check the top-level domain/, re(qr/Please check the top-level domain/),
structured_answer => { structured_answer => {
input => ['foo@example.lmnop'], input => ['foo@example.lmnop'],
operation => 'Email address validation', operation => 'Email address validation',
result => qr/Please check the top-level domain/, result => re(qr/Please check the top-level domain/),
} }
), ),
'validate foo' => undef, 'validate foo' => undef,
); );
done_testing; done_testing;

View File

@ -4,6 +4,7 @@ use strict;
use warnings; use warnings;
use Test::More; use Test::More;
use Test::Deep;
use DDG::Test::Goodie; use DDG::Test::Goodie;
zci answer_type => 'figlet'; zci answer_type => 'figlet';
@ -205,4 +206,4 @@ ddg_goodie_test(
'big text' => undef, 'big text' => undef,
); );
done_testing; done_testing;

View File

@ -3,6 +3,7 @@
use strict; use strict;
use warnings; use warnings;
use Test::More; use Test::More;
use Test::Deep;
use DDG::Test::Goodie; use DDG::Test::Goodie;
zci answer_type => "factors"; zci answer_type => "factors";
@ -30,4 +31,4 @@ ddg_goodie_test(
'72 factors' => build_test('Factors of 72: 1, 2, 3, 4, 6, 8, 9, 12, 18, 24, 36, 72', '72', '1, 2, 3, 4, 6, 8, 9, 12, 18, 24, 36, 72'), '72 factors' => build_test('Factors of 72: 1, 2, 3, 4, 6, 8, 9, 12, 18, 24, 36, 72', '72', '1, 2, 3, 4, 6, 8, 9, 12, 18, 24, 36, 72'),
); );
done_testing; done_testing;

View File

@ -3,6 +3,7 @@
use strict; use strict;
use warnings; use warnings;
use Test::More; use Test::More;
use Test::Deep;
use DDG::Test::Goodie; use DDG::Test::Goodie;
zci answer_type => 'fedex'; zci answer_type => 'fedex';
@ -33,4 +34,4 @@ ddg_goodie_test(
) )
); );
done_testing; done_testing;

View File

@ -3,6 +3,7 @@
use strict; use strict;
use warnings; use warnings;
use Test::More; use Test::More;
use Test::Deep;
use DDG::Test::Goodie; use DDG::Test::Goodie;
zci answer_type => "fen_viewer"; zci answer_type => "fen_viewer";
@ -20,4 +21,4 @@ ddg_goodie_test(
'fen ' => undef, 'fen ' => undef,
); );
done_testing; done_testing;

View File

@ -3,6 +3,7 @@
use strict; use strict;
use warnings; use warnings;
use Test::More; use Test::More;
use Test::Deep;
use DDG::Test::Goodie; use DDG::Test::Goodie;
zci answer_type => 'fibonacci'; zci answer_type => 'fibonacci';
@ -30,4 +31,4 @@ ddg_goodie_test(
'what are fibonacci numbers?' => undef, 'what are fibonacci numbers?' => undef,
); );
done_testing; done_testing;

View File

@ -3,6 +3,7 @@
use strict; use strict;
use warnings; use warnings;
use Test::More; use Test::More;
use Test::Deep;
use DDG::Test::Goodie; use DDG::Test::Goodie;
zci answer_type => "firefoxos"; zci answer_type => "firefoxos";
@ -10,7 +11,7 @@ zci is_cached => 1;
#Structured answer template data #Structured answer template data
my $templateData = { my $templateData = {
data => '-ANY-', data => ignore(),
meta => { meta => {
sourceName => "Mozilla Developer Network", sourceName => "Mozilla Developer Network",
sourceUrl => "https://developer.mozilla.org/en-US/Apps/Reference/Firefox_OS_device_APIs" sourceUrl => "https://developer.mozilla.org/en-US/Apps/Reference/Firefox_OS_device_APIs"
@ -39,4 +40,4 @@ ddg_goodie_test(
'firefox os api' => undef 'firefox os api' => undef
); );
done_testing; done_testing;

View File

@ -4,6 +4,7 @@ use strict;
use warnings; use warnings;
use utf8; use utf8;
use Test::More; use Test::More;
use Test::Deep;
use DDG::Test::Goodie; use DDG::Test::Goodie;
zci answer_type => 'flip_text'; zci answer_type => 'flip_text';
@ -38,4 +39,4 @@ ddg_goodie_test(
'spin text <<"hello\' % & * () = + . #@!^(/world">>' => build_test('<<"hello\' % & * () = + . #@!^(/world">>','<<„pʃɹoʍ/)∨¡@# ˙ + = () ⅋ % ,oʃʃǝɥ„>>'), 'spin text <<"hello\' % & * () = + . #@!^(/world">>' => build_test('<<"hello\' % & * () = + . #@!^(/world">>','<<„pʃɹoʍ/)∨¡@# ˙ + = () ⅋ % ,oʃʃǝɥ„>>'),
); );
done_testing; done_testing;

View File

@ -34,4 +34,3 @@ ddg_goodie_test(
); );
done_testing; done_testing;

View File

@ -3,6 +3,7 @@
use strict; use strict;
use warnings; use warnings;
use Test::More; use Test::More;
use Test::Deep;
use DDG::Test::Goodie; use DDG::Test::Goodie;
zci is_cached => 1; zci is_cached => 1;
@ -26,4 +27,4 @@ ddg_goodie_test(
'frequency of B in battle' => test_zci('Frequency: b:1/6'), 'frequency of B in battle' => test_zci('Frequency: b:1/6'),
); );
done_testing; done_testing;

View File

@ -8,6 +8,7 @@ use strict;
use warnings; use warnings;
use Test::More; use Test::More;
use Test::Deep;
use DDG::Test::Goodie; use DDG::Test::Goodie;
zci answer_type => 'frequency_spectrum'; zci answer_type => 'frequency_spectrum';
@ -18,10 +19,10 @@ ddg_goodie_test(
#Primary example #Primary example
'50 hz' => test_zci( '50 hz' => test_zci(
#qr/radio.+SLF.+audible.+double-bass.+piano.+tuba/, #re(qr/radio.+SLF.+audible.+double-bass.+piano.+tuba/),
qr/radio/, re(qr/radio/),
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'text', group => 'text',
item => 0, item => 0,
@ -34,9 +35,9 @@ ddg_goodie_test(
#Secondary example #Secondary example
'400 thz' => test_zci( '400 thz' => test_zci(
qr/infrared/, re(qr/infrared/),
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'text', group => 'text',
item => 0, item => 0,
@ -49,10 +50,10 @@ ddg_goodie_test(
#Misc #Misc
'1,000 hz' => test_zci( '1,000 hz' => test_zci(
#qr/radio.+audible.+human.+voice.+viola.+violin.+guitar.+mandolin.+banjo.+piano.+saxophone.+flute.+clarinet.+oboe/, #re(qr/radio.+audible.+human.+voice.+viola.+violin.+guitar.+mandolin.+banjo.+piano.+saxophone.+flute.+clarinet.+oboe/),
qr/radio/, re(qr/radio/),
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'text', group => 'text',
item => 0, item => 0,
@ -63,9 +64,9 @@ ddg_goodie_test(
} }
), ),
'1000000.99 hz' => test_zci( '1000000.99 hz' => test_zci(
qr/radio.+MF/, re(qr/radio.+MF/),
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'text', group => 'text',
item => 0, item => 0,
@ -76,9 +77,9 @@ ddg_goodie_test(
} }
), ),
'29.1 hz' => test_zci( '29.1 hz' => test_zci(
qr/radio.+ELF/, re(qr/radio.+ELF/),
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'text', group => 'text',
item => 0, item => 0,
@ -91,10 +92,10 @@ ddg_goodie_test(
#No whitespace between number and unit #No whitespace between number and unit
'50hz' => test_zci( '50hz' => test_zci(
#qr/radio.+SLF.+audible.+double-bass.+piano.+tuba/, #re(qr/radio.+SLF.+audible.+double-bass.+piano.+tuba/),
qr/radio/, re(qr/radio/),
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'text', group => 'text',
item => 0, item => 0,
@ -105,9 +106,9 @@ ddg_goodie_test(
} }
), ),
'400terahertz' => test_zci( '400terahertz' => test_zci(
qr/infrared/, re(qr/infrared/),
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'text', group => 'text',
item => 0, item => 0,
@ -120,9 +121,9 @@ ddg_goodie_test(
#Mixed case #Mixed case
'400 THz' => test_zci( '400 THz' => test_zci(
qr/infrared/, re(qr/infrared/),
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'text', group => 'text',
item => 0, item => 0,
@ -134,10 +135,10 @@ ddg_goodie_test(
), ),
'1000 HZ' => test_zci( '1000 HZ' => test_zci(
#qr/radio.+audible.+human.+voice.+viola.+violin.+guitar.+mandolin.+banjo.+piano.+saxophone.+flute.+clarinet.+oboe/, #re(qr/radio.+audible.+human.+voice.+viola.+violin.+guitar.+mandolin.+banjo.+piano.+saxophone.+flute.+clarinet.+oboe/),
qr/radio/, re(qr/radio/),
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'text', group => 'text',
item => 0, item => 0,
@ -150,9 +151,9 @@ ddg_goodie_test(
#Commas in number #Commas in number
'1,000,000.99 hz' => test_zci( '1,000,000.99 hz' => test_zci(
qr/radio.+MF/, re(qr/radio.+MF/),
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'text', group => 'text',
item => 0, item => 0,
@ -165,9 +166,9 @@ ddg_goodie_test(
#Can you test with all the colours of the wind? #Can you test with all the colours of the wind?
'650 nm' => test_zci( '650 nm' => test_zci(
qr/visible.+red/, re(qr/visible.+red/),
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'text', group => 'text',
item => 0, item => 0,
@ -178,9 +179,9 @@ ddg_goodie_test(
} }
), ),
'610 nanometers' => test_zci( '610 nanometers' => test_zci(
qr/visible.+orange/, re(qr/visible.+orange/),
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'text', group => 'text',
item => 0, item => 0,
@ -191,9 +192,9 @@ ddg_goodie_test(
} }
), ),
'580 nanometres' => test_zci( '580 nanometres' => test_zci(
qr/visible.+yellow/, re(qr/visible.+yellow/),
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'text', group => 'text',
item => 0, item => 0,
@ -204,9 +205,9 @@ ddg_goodie_test(
} }
), ),
'536 nanometer' => test_zci( '536 nanometer' => test_zci(
qr/visible.+green/, re(qr/visible.+green/),
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'text', group => 'text',
item => 0, item => 0,
@ -217,9 +218,9 @@ ddg_goodie_test(
} }
), ),
'478.1 nm' => test_zci( '478.1 nm' => test_zci(
qr/visible.+blue/, re(qr/visible.+blue/),
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'text', group => 'text',
item => 0, item => 0,
@ -230,9 +231,9 @@ ddg_goodie_test(
} }
), ),
'380.000000000 nanometres' => test_zci( '380.000000000 nanometres' => test_zci(
qr/visible.+violet/, re(qr/visible.+violet/),
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
templates => { templates => {
group => 'text', group => 'text',
item => 0, item => 0,
@ -258,4 +259,4 @@ ddg_goodie_test(
'600 nmeters' => undef, '600 nmeters' => undef,
); );
done_testing; done_testing;

View File

@ -3,12 +3,13 @@
use strict; use strict;
use warnings; use warnings;
use Test::More; use Test::More;
use Test::Deep;
use DDG::Test::Goodie; use DDG::Test::Goodie;
zci answer_type => 'guid'; zci answer_type => 'guid';
zci is_cached => 0; zci is_cached => 0;
my @answer = (qr/^([a-zA-Z]|\d){8}-([a-zA-Z]|\d){4}-([a-zA-Z]|\d){4}-([a-zA-Z]|\d){4}-([a-zA-Z]|\d){12}$/, structured_answer => { input =>[], operation => 'Random GUID', result =>qr/^([a-zA-Z]|\d){8}-([a-zA-Z]|\d){4}-([a-zA-Z]|\d){4}-([a-zA-Z]|\d){4}-([a-zA-Z]|\d){12}$/}); my @answer = (re(qr/^([a-zA-Z]|\d){8}-([a-zA-Z]|\d){4}-([a-zA-Z]|\d){4}-([a-zA-Z]|\d){4}-([a-zA-Z]|\d){12}$/), structured_answer => { input =>[], operation => 'Random GUID', result =>re(qr/^([a-zA-Z]|\d){8}-([a-zA-Z]|\d){4}-([a-zA-Z]|\d){4}-([a-zA-Z]|\d){4}-([a-zA-Z]|\d){12}$/)});
ddg_goodie_test([qw( DDG::Goodie::GUID ) ], ddg_goodie_test([qw( DDG::Goodie::GUID ) ],
@ -25,4 +26,4 @@ ddg_goodie_test([qw( DDG::Goodie::GUID ) ],
'what is a guid' => undef, 'what is a guid' => undef,
); );
done_testing; done_testing;

View File

@ -3,6 +3,7 @@
use strict; use strict;
use warnings; use warnings;
use Test::More; use Test::More;
use Test::Deep;
use DDG::Test::Goodie; use DDG::Test::Goodie;
zci answer_type => 2048; zci answer_type => 2048;
@ -16,7 +17,7 @@ ddg_goodie_test(
'Play 2048', 'Play 2048',
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
# data => [{ # data => [{
# dimension => 4, # dimension => 4,
@ -35,7 +36,7 @@ ddg_goodie_test(
'Play 256', 'Play 256',
structured_answer => { structured_answer => {
data => '-ANY-', data => ignore(),
# data => [{ # data => [{
# dimension => 7, # dimension => 7,
@ -53,4 +54,4 @@ ddg_goodie_test(
'2048 online' => undef '2048 online' => undef
); );
done_testing; done_testing;

View File

@ -35,4 +35,4 @@ ddg_goodie_test(
'please generate mac address' => build_test(), 'please generate mac address' => build_test(),
); );
done_testing; done_testing;

View File

@ -1,6 +1,7 @@
use strict; use strict;
use warnings; use warnings;
use Test::More; use Test::More;
use Test::Deep;
use DDG::Test::Goodie; use DDG::Test::Goodie;
use utf8; use utf8;
@ -9,8 +10,8 @@ zci is_cached => 0;
sub build_result { sub build_result {
my $result = shift; my $result = shift;
return $result, structured_answer => { return re($result), structured_answer => {
data => "-ANY-", data => ignore(),
templates => { templates => {
group => 'info', group => 'info',
options => { options => {
@ -75,4 +76,4 @@ ddg_goodie_test(
'30 words of utter Shakespearean nonsense' => build_test(werds($shake_word, 30)), '30 words of utter Shakespearean nonsense' => build_test(werds($shake_word, 30)),
); );
done_testing; done_testing;

View File

@ -3,6 +3,7 @@
use strict; use strict;
use warnings; use warnings;
use Test::More; use Test::More;
use Test::Deep;
use DDG::Test::Goodie; use DDG::Test::Goodie;
zci answer_type => 'golden_ratio'; zci answer_type => 'golden_ratio';
@ -29,4 +30,4 @@ ddg_goodie_test(
'golden ratio ?:123.345' => test_zci('Golden ratio: 76.2314023423558 : 123.345'), 'golden ratio ?:123.345' => test_zci('Golden ratio: 76.2314023423558 : 123.345'),
); );
done_testing; done_testing;

View File

@ -3,6 +3,7 @@
use strict; use strict;
use warnings; use warnings;
use Test::More; use Test::More;
use Test::Deep;
use DDG::Test::Goodie; use DDG::Test::Goodie;
zci answer_type => "greatest_common_factor"; zci answer_type => "greatest_common_factor";
@ -46,4 +47,4 @@ ddg_goodie_test(
'gcd 0 0' => build_test('0 and 0', 0), 'gcd 0 0' => build_test('0 and 0', 0),
); );
done_testing; done_testing;

View File

@ -4,6 +4,7 @@ use strict;
use warnings; use warnings;
use Test::More; use Test::More;
use Test::Deep;
use DDG::Test::Goodie; use DDG::Test::Goodie;
zci answer_type => 'guitarchord'; zci answer_type => 'guitarchord';
@ -14,32 +15,32 @@ ddg_goodie_test(
'G#m6 guitar chord' => test_zci( 'G#m6 guitar chord' => test_zci(
'G#m6', 'G#m6',
heading=>'G#m6', heading=>'G#m6',
html => qr#.*Guitar chord diagram for G\#m6.*#s html => re(qr#.*Guitar chord diagram for G\#m6.*#s)
), ),
'Abaug7 guitar chord' => test_zci( 'Abaug7 guitar chord' => test_zci(
'Abaug7', 'Abaug7',
heading=>'Abaug7', heading=>'Abaug7',
html => qr#.*Guitar chord diagram for Abaug7.*#s html => re(qr#.*Guitar chord diagram for Abaug7.*#s)
), ),
'A7/b9 guitar chord' => test_zci( 'A7/b9 guitar chord' => test_zci(
'A7(b9)', 'A7(b9)',
heading=>'A7(b9)', heading=>'A7(b9)',
html => qr#.*Guitar chord diagram for A7\(b9\).*#s html => re(qr#.*Guitar chord diagram for A7\(b9\).*#s)
), ),
'guitar chord Cm7' => test_zci( 'guitar chord Cm7' => test_zci(
'Cm7', 'Cm7',
heading=>'Cm7', heading=>'Cm7',
html => qr#.*Guitar chord diagram for Cm7.*#s html => re(qr#.*Guitar chord diagram for Cm7.*#s)
), ),
'guitar chord Db7sus4' => test_zci( 'guitar chord Db7sus4' => test_zci(
'Db7sus4', 'Db7sus4',
heading=>'Db7sus4', heading=>'Db7sus4',
html => qr#.*Guitar chord diagram for Db7sus4.*#s html => re(qr#.*Guitar chord diagram for Db7sus4.*#s)
), ),
'guitar chord f min' => test_zci( 'guitar chord f min' => test_zci(
'Fm', 'Fm',
heading=>'Fm', heading=>'Fm',
html => qr#.*Guitar chord diagram for Fm.*#s html => re(qr#.*Guitar chord diagram for Fm.*#s)
), ),
# check that certain things don't trigger it: # check that certain things don't trigger it:
'C# programming' => undef, 'C# programming' => undef,
@ -50,4 +51,4 @@ ddg_goodie_test(
'G' => undef 'G' => undef
); );
done_testing; done_testing;

View File

@ -3,6 +3,7 @@
use strict; use strict;
use warnings; use warnings;
use Test::More; use Test::More;
use Test::Deep;
use DDG::Test::Goodie; use DDG::Test::Goodie;
zci answer_type => 'hkdk'; zci answer_type => 'hkdk';
@ -23,4 +24,3 @@ ddg_goodie_test(
); );
done_testing; done_testing;

View File

@ -3,6 +3,7 @@
use strict; use strict;
use warnings; use warnings;
use Test::More; use Test::More;
use Test::Deep;
use DDG::Test::Goodie; use DDG::Test::Goodie;
zci answer_type => 'html_entity'; zci answer_type => 'html_entity';
@ -10,8 +11,8 @@ zci is_cached => 1;
sub any_structured_answer { sub any_structured_answer {
return { return {
input => '-ANY-', input => ignore(),
result => '-ANY-', result => ignore(),
operation => "HTML Entity Decode" operation => "HTML Entity Decode"
}; };
} }
@ -36,9 +37,9 @@ ddg_goodie_test(
'htmlentity for #x3c' => test_zci("Decoded HTML Entity: <", structured_answer => any_structured_answer()), 'htmlentity for #x3c' => test_zci("Decoded HTML Entity: <", structured_answer => any_structured_answer()),
# "&cent;" succeeds # "&cent;" succeeds
'html decode &cent;' => test_zci(qr/.*/, structured_answer => any_structured_answer()), 'html decode &cent;' => test_zci(re(qr/.*/), structured_answer => any_structured_answer()),
# "&cent" also succeeds (missing back ";" is OK) # "&cent" also succeeds (missing back ";" is OK)
'html decode &cent' => test_zci(qr/.*/, structured_answer => any_structured_answer()), 'html decode &cent' => test_zci(re(qr/.*/), structured_answer => any_structured_answer()),
# "cent" fails during the regex match because of the missing front "&" (stricter for text to eliminate false positive encoding hits) # "cent" fails during the regex match because of the missing front "&" (stricter for text to eliminate false positive encoding hits)
'html decode cent' => undef, 'html decode cent' => undef,
# "cent;" fails during the regex match for the same reasons as above # "cent;" fails during the regex match for the same reasons as above
@ -55,11 +56,11 @@ ddg_goodie_test(
'html decode apostrophe' => undef, 'html decode apostrophe' => undef,
# natural querying # natural querying
'What is the decoded html entity for &#960;?' => test_zci(qr/.*/, structured_answer => any_structured_answer()), 'What is the decoded html entity for &#960;?' => test_zci(re(qr/.*/), structured_answer => any_structured_answer()),
# natural querying # natural querying
'what is decoded html entity for #960 ?' => test_zci(qr/.*/, structured_answer => any_structured_answer()), 'what is decoded html entity for #960 ?' => test_zci(re(qr/.*/), structured_answer => any_structured_answer()),
# no "html" in query # no "html" in query
'the decoded entity for &#333; is?' => test_zci(qr/.*/, structured_answer => any_structured_answer()), 'the decoded entity for &#333; is?' => test_zci(re(qr/.*/), structured_answer => any_structured_answer()),
); );
done_testing; done_testing;

View File

@ -3,6 +3,7 @@
use strict; use strict;
use warnings; use warnings;
use Test::More; use Test::More;
use Test::Deep;
use DDG::Test::Goodie; use DDG::Test::Goodie;
use utf8; use utf8;
@ -12,7 +13,7 @@ zci is_cached => 1;
sub make_structured_answer { sub make_structured_answer {
my ($qr) = @_; my ($qr) = @_;
return { return {
input => '-ANY-', input => ignore(),
operation => "HTML Entity Encode", operation => "HTML Entity Encode",
result => $qr, result => $qr,
}; };
@ -40,26 +41,26 @@ ddg_goodie_test(
[qw(DDG::Goodie::HTMLEntitiesEncode)], [qw(DDG::Goodie::HTMLEntitiesEncode)],
# Simple tests # Simple tests
'html code em dash' => test_zci("Encoded HTML Entity: &mdash;", structured_answer => make_structured_answer(qr/mdash/)), 'html code em dash' => test_zci("Encoded HTML Entity: &mdash;", structured_answer => make_structured_answer(re(qr/mdash/))),
'html em dash' => test_zci("Encoded HTML Entity: &mdash;", structured_answer => make_structured_answer(qr/mdash/)), 'html em dash' => test_zci("Encoded HTML Entity: &mdash;", structured_answer => make_structured_answer(re(qr/mdash/))),
'em-dash html' => test_zci("Encoded HTML Entity: &mdash;", structured_answer => make_structured_answer(qr/mdash/)), # hyphens ignored 'em-dash html' => test_zci("Encoded HTML Entity: &mdash;", structured_answer => make_structured_answer(re(qr/mdash/))), # hyphens ignored
'html encode "em-dash"' => test_zci("Encoded HTML Entity: &mdash;", structured_answer => make_structured_answer(qr/mdash/)), # quotes ignored 'html encode "em-dash"' => test_zci("Encoded HTML Entity: &mdash;", structured_answer => make_structured_answer(re(qr/mdash/))), # quotes ignored
'ApoSTrophe escapehtml' => test_zci("Encoded HTML Entity: &#39;", structured_answer => make_structured_answer(qr/#39/)), # mixed cases in query 'ApoSTrophe escapehtml' => test_zci("Encoded HTML Entity: &#39;", structured_answer => make_structured_answer(re(qr/#39/))), # mixed cases in query
# Basic varieties in querying accented chars # Basic varieties in querying accented chars
'html entity A-acute' => test_zci("Encoded HTML Entity: &Aacute;",structured_answer => make_structured_answer(qr/Aacute/)), 'html entity A-acute' => test_zci("Encoded HTML Entity: &Aacute;",structured_answer => make_structured_answer(re(qr/Aacute/))),
'html entity for E Grave' => test_zci("Encoded HTML Entity: &Egrave;", structured_answer => make_structured_answer(qr/Egrave/)), 'html entity for E Grave' => test_zci("Encoded HTML Entity: &Egrave;", structured_answer => make_structured_answer(re(qr/Egrave/))),
'html Ograve' => test_zci("Encoded HTML Entity: &Ograve;", structured_answer => make_structured_answer(qr/Ograve/)), 'html Ograve' => test_zci("Encoded HTML Entity: &Ograve;", structured_answer => make_structured_answer(re(qr/Ograve/))),
# Single typed-in character queries # Single typed-in character queries
'html escape &' => test_zci("Encoded HTML Entity: &amp;", structured_answer => make_structured_answer(qr/amp/)), # & 'html escape &' => test_zci("Encoded HTML Entity: &amp;", structured_answer => make_structured_answer(re(qr/amp/))), # &
'html escape "' => test_zci("Encoded HTML Entity: &quot;", structured_answer => make_structured_answer(qr/quot/)), # " 'html escape "' => test_zci("Encoded HTML Entity: &quot;", structured_answer => make_structured_answer(re(qr/quot/))), # "
'how to html escape &?' => test_zci("Encoded HTML Entity: &amp;", structured_answer => make_structured_answer(qr/amp/)), # ? 'how to html escape &?' => test_zci("Encoded HTML Entity: &amp;", structured_answer => make_structured_answer(re(qr/amp/))), # ?
'how to html escape "&"?' => test_zci("Encoded HTML Entity: &amp;", structured_answer => make_structured_answer(qr/amp/)), # & 'how to html escape "&"?' => test_zci("Encoded HTML Entity: &amp;", structured_answer => make_structured_answer(re(qr/amp/))), # &
'how to html escape ??' => test_zci("Encoded HTML Entity: &#63;", structured_answer => make_structured_answer(qr/#63/)), # ? 'how to html escape ??' => test_zci("Encoded HTML Entity: &#63;", structured_answer => make_structured_answer(re(qr/#63/))), # ?
'how do you html escape a "?"?' => test_zci("Encoded HTML Entity: &#63;", structured_answer => make_structured_answer(qr/#63/)), # ? 'how do you html escape a "?"?' => test_zci("Encoded HTML Entity: &#63;", structured_answer => make_structured_answer(re(qr/#63/))), # ?
'html escape """' => test_zci("Encoded HTML Entity: &quot;", structured_answer => make_structured_answer(qr/quot/)), # " 'html escape """' => test_zci("Encoded HTML Entity: &quot;", structured_answer => make_structured_answer(re(qr/quot/))), # "
'$ sign htmlentity' => test_zci("Encoded HTML Entity: &#36;", structured_answer => make_structured_answer(qr/#36/)), # $ '$ sign htmlentity' => test_zci("Encoded HTML Entity: &#36;", structured_answer => make_structured_answer(re(qr/#36/))), # $
# Return two matching entities for ambiguous query # Return two matching entities for ambiguous query
'pound symbol html encode ' => test_zci( 'pound symbol html encode ' => test_zci(
@ -71,9 +72,9 @@ ddg_goodie_test(
), ),
# Ignore words and whitespace # Ignore words and whitespace
'html code of pilcrow sign' => test_zci("Encoded HTML Entity: &#182;", structured_answer => make_structured_answer(qr/#182/)), # of, sign 'html code of pilcrow sign' => test_zci("Encoded HTML Entity: &#182;", structured_answer => make_structured_answer(re(qr/#182/))), # of, sign
'html escape greater than symbol' => test_zci("Encoded HTML Entity: &gt;", structured_answer => make_structured_answer(qr/gt/)), # symbol 'html escape greater than symbol' => test_zci("Encoded HTML Entity: &gt;", structured_answer => make_structured_answer(re(qr/gt/))), # symbol
'space html character code' => test_zci("Encoded HTML Entity: &nbsp;", structured_answer => make_structured_answer(qr/nbsp/)), # Ignore extra whitespace 'space html character code' => test_zci("Encoded HTML Entity: &nbsp;", structured_answer => make_structured_answer(re(qr/nbsp/))), # Ignore extra whitespace
# Better hash hits substitutions # Better hash hits substitutions
# 'right angle brackets' should work even though the defined key contains the singular 'bracket' # 'right angle brackets' should work even though the defined key contains the singular 'bracket'
@ -85,7 +86,7 @@ ddg_goodie_test(
}, ["Single right pointing angle quote ()", "Double right pointing angle quote (»)"], "right angle brackets") }, ["Single right pointing angle quote ()", "Double right pointing angle quote (»)"], "right angle brackets")
), ),
# 'double quotes' should work even though the defined key contains the singular 'quote' # 'double quotes' should work even though the defined key contains the singular 'quote'
'double quotes htmlescape' => test_zci("Encoded HTML Entity: &quot;", structured_answer => make_structured_answer(qr/quot/)), 'double quotes htmlescape' => test_zci("Encoded HTML Entity: &quot;", structured_answer => make_structured_answer(re(qr/quot/))),
# Should not work # Should not work
'html encode &#43;' => undef, 'html encode &#43;' => undef,
@ -93,24 +94,24 @@ ddg_goodie_test(
'html encode is it magic' => undef, 'html encode is it magic' => undef,
# Natural querying # Natural querying
'What is the html character code for pi' => test_zci("Encoded HTML Entity: &#960;", structured_answer => make_structured_answer(qr/#960/)), 'What is the html character code for pi' => test_zci("Encoded HTML Entity: &#960;", structured_answer => make_structured_answer(re(qr/#960/))),
'whatis html entity for en-dash' => test_zci("Encoded HTML Entity: &ndash;", structured_answer => make_structured_answer(qr/ndash/)), # whatis spelling 'whatis html entity for en-dash' => test_zci("Encoded HTML Entity: &ndash;", structured_answer => make_structured_answer(re(qr/ndash/))), # whatis spelling
'how do I escape the greater-than symbol html' => test_zci("Encoded HTML Entity: &gt;", structured_answer => make_structured_answer(qr/gt/)), 'how do I escape the greater-than symbol html' => test_zci("Encoded HTML Entity: &gt;", structured_answer => make_structured_answer(re(qr/gt/))),
# the "a/A" belonging to "acute" matters, but the "a" immediately after "character" is removed # the "a/A" belonging to "acute" matters, but the "a" immediately after "character" is removed
'How to get a a acute character in html code' => test_zci("Encoded HTML Entity: &aacute;", structured_answer => make_structured_answer(qr/aacute/)), 'How to get a a acute character in html code' => test_zci("Encoded HTML Entity: &aacute;", structured_answer => make_structured_answer(re(qr/aacute/))),
'how to get a a-acute character in html code' => test_zci("Encoded HTML Entity: &aacute;", structured_answer => make_structured_answer(qr/aacute/)), 'how to get a a-acute character in html code' => test_zci("Encoded HTML Entity: &aacute;", structured_answer => make_structured_answer(re(qr/aacute/))),
'how to get a aacute character in html code' => test_zci("Encoded HTML Entity: &aacute;", structured_answer => make_structured_answer(qr/aacute/)), 'how to get a aacute character in html code' => test_zci("Encoded HTML Entity: &aacute;", structured_answer => make_structured_answer(re(qr/aacute/))),
'how to get a A acute character in html code' => test_zci("Encoded HTML Entity: &Aacute;", structured_answer => make_structured_answer(qr/Aacute/)), 'how to get a A acute character in html code' => test_zci("Encoded HTML Entity: &Aacute;", structured_answer => make_structured_answer(re(qr/Aacute/))),
'how to get a A-acute character in html code' => test_zci("Encoded HTML Entity: &Aacute;", structured_answer => make_structured_answer(qr/Aacute/)), 'how to get a A-acute character in html code' => test_zci("Encoded HTML Entity: &Aacute;", structured_answer => make_structured_answer(re(qr/Aacute/))),
'how to get a Aacute character in html code' => test_zci("Encoded HTML Entity: &Aacute;", structured_answer => make_structured_answer(qr/Aacute/)), 'how to get a Aacute character in html code' => test_zci("Encoded HTML Entity: &Aacute;", structured_answer => make_structured_answer(re(qr/Aacute/))),
# Question marks ignored # Question marks ignored
'the encoded html entity of apostrophe is?' => test_zci("Encoded HTML Entity: &#39;", structured_answer => make_structured_answer(qr/#39/)), 'the encoded html entity of apostrophe is?' => test_zci("Encoded HTML Entity: &#39;", structured_answer => make_structured_answer(re(qr/#39/))),
'how to encode an apostrophe in html ? ' => test_zci("Encoded HTML Entity: &#39;", structured_answer => make_structured_answer(qr/#39/)), # spaces around the end 'how to encode an apostrophe in html ? ' => test_zci("Encoded HTML Entity: &#39;", structured_answer => make_structured_answer(re(qr/#39/))), # spaces around the end
# Question mark matters # Question mark matters
'how to encode "?" in html' => test_zci("Encoded HTML Entity: &#63;", structured_answer => make_structured_answer(qr/#63/)), 'how to encode "?" in html' => test_zci("Encoded HTML Entity: &#63;", structured_answer => make_structured_answer(re(qr/#63/))),
); );
done_testing; done_testing;

View File

@ -3,6 +3,7 @@
use strict; use strict;
use warnings; use warnings;
use Test::More; use Test::More;
use Test::Deep;
use DDG::Test::Goodie; use DDG::Test::Goodie;
use DDG::Test::Location; use DDG::Test::Location;
use DDG::Request; use DDG::Request;
@ -48,7 +49,7 @@ ddg_goodie_test(
query_raw => "$query", query_raw => "$query",
location => test_location("$locations[$_]") location => test_location("$locations[$_]")
), ),
test_zci(qr/24 Hour Suicide Hotline/, structured_answer => { input => [], operation => qr/24 Hour Suicide Hotline/, result => qr/[0-9]{2}/}), test_zci(re(qr/24 Hour Suicide Hotline/), structured_answer => { input => [], operation => re(qr/24 Hour Suicide Hotline/), result => re(qr/[0-9]{2}/)}),
} 0 .. scalar @locations - 1 } 0 .. scalar @locations - 1
} 0 .. scalar @queries - 1), } 0 .. scalar @queries - 1),
(map { (map {
@ -63,4 +64,4 @@ ddg_goodie_test(
} 0 .. scalar @ok_queries - 1), } 0 .. scalar @ok_queries - 1),
); );
done_testing; done_testing;

View File

@ -3,6 +3,7 @@
use strict; use strict;
use warnings; use warnings;
use Test::More; use Test::More;
use Test::Deep;
use DDG::Test::Goodie; use DDG::Test::Goodie;
zci answer_type => 'ascii'; zci answer_type => 'ascii';
@ -35,4 +36,4 @@ ddg_goodie_test(
'ascii 0x466f7220736f6d6520726561736f6e2c2049206465636964656420746f2061736b20612073656172636820656e67696e6520746f20636f6e766572742068657820746f2041534349492e0d0a436f6f6c2c20746869732073656172636820656e67696e6520646f65732069742c20756e74696c20492072756e206f7574206f662073706163652e' => build_test('0x466f7220736f6d6520726561736f6e2c2049206465636964656420746f2061736b20612073656172636820656e67696e6520746f20636f6e766572742068657820746f2041534349492e0d0a436f6f6c2c20746869732073656172636820656e67696e6520646f65732069742c20756e74696c20492072756e206f7574206f662073706163652e', 'For some reason, I decided to ask a search engine to convert hex to ASCII.<code title="carriage return">[CR]</code><code title="linefeed">[LF]</code>Cool, this search engine does it, until I run out of &hellip;'), 'ascii 0x466f7220736f6d6520726561736f6e2c2049206465636964656420746f2061736b20612073656172636820656e67696e6520746f20636f6e766572742068657820746f2041534349492e0d0a436f6f6c2c20746869732073656172636820656e67696e6520646f65732069742c20756e74696c20492072756e206f7574206f662073706163652e' => build_test('0x466f7220736f6d6520726561736f6e2c2049206465636964656420746f2061736b20612073656172636820656e67696e6520746f20636f6e766572742068657820746f2041534349492e0d0a436f6f6c2c20746869732073656172636820656e67696e6520646f65732069742c20756e74696c20492072756e206f7574206f662073706163652e', 'For some reason, I decided to ask a search engine to convert hex to ASCII.<code title="carriage return">[CR]</code><code title="linefeed">[LF]</code>Cool, this search engine does it, until I run out of &hellip;'),
); );
done_testing; done_testing;

View File

@ -3,6 +3,7 @@
use strict; use strict;
use warnings; use warnings;
use Test::More; use Test::More;
use Test::Deep;
use DDG::Test::Goodie; use DDG::Test::Goodie;
zci answer_type => 'hex_to_dec'; zci answer_type => 'hex_to_dec';
@ -62,4 +63,3 @@ ddg_goodie_test(
); );
done_testing; done_testing;

View File

@ -3,6 +3,7 @@
use strict; use strict;
use warnings; use warnings;
use Test::More; use Test::More;
use Test::Deep;
use DDG::Test::Goodie; use DDG::Test::Goodie;
use utf8; use utf8;
@ -27,4 +28,3 @@ ddg_goodie_test(
); );
done_testing; done_testing;

View File

@ -3,6 +3,7 @@
use strict; use strict;
use warnings; use warnings;
use Test::More; use Test::More;
use Test::Deep;
use DDG::Test::Goodie; use DDG::Test::Goodie;
zci answer_type => 'ips'; zci answer_type => 'ips';
@ -28,4 +29,3 @@ ddg_goodie_test(
); );
done_testing; done_testing;

View File

@ -5,6 +5,7 @@ use strict;
use warnings; use warnings;
use Test::More; use Test::More;
use Test::Deep;
use DDG::Test::Goodie; use DDG::Test::Goodie;
zci answer_type => "iso639"; zci answer_type => "iso639";
@ -55,4 +56,4 @@ ddg_goodie_test(
"iso639 xyz" => undef, "iso639 xyz" => undef,
); );
done_testing; done_testing;

View File

@ -3,6 +3,7 @@
use strict; use strict;
use warnings; use warnings;
use Test::More; use Test::More;
use Test::Deep;
use DDG::Test::Goodie; use DDG::Test::Goodie;
use Locale::Country; use Locale::Country;
@ -50,4 +51,4 @@ ddg_goodie_test(
"day of independence of bhutan" => answer("Bhutan", "December 17th, 1907") "day of independence of bhutan" => answer("Bhutan", "December 17th, 1907")
); );
done_testing; done_testing;

View File

@ -3,6 +3,7 @@
use strict; use strict;
use warnings; use warnings;
use Test::More; use Test::More;
use Test::Deep;
use DDG::Test::Goodie; use DDG::Test::Goodie;
zci answer_type => 'jira'; zci answer_type => 'jira';
@ -61,4 +62,4 @@ ddg_goodie_test(
), ),
); );
done_testing; done_testing;

View File

@ -3,6 +3,7 @@
use strict; use strict;
use warnings; use warnings;
use Test::More; use Test::More;
use Test::Deep;
use DDG::Test::Goodie; use DDG::Test::Goodie;
zci answer_type => "john_cena"; zci answer_type => "john_cena";
@ -32,4 +33,4 @@ ddg_goodie_test(
'famous wrestler' => undef, 'famous wrestler' => undef,
); );
done_testing; done_testing;

View File

@ -3,6 +3,7 @@
use strict; use strict;
use warnings; use warnings;
use Test::More; use Test::More;
use Test::Deep;
use DDG::Test::Goodie; use DDG::Test::Goodie;
use utf8; use utf8;
@ -179,4 +180,4 @@ ddg_goodie_test(
'ハ.ツha.tsu in romaji' => undef, 'ハ.ツha.tsu in romaji' => undef,
); );
done_testing; done_testing;

View File

@ -3,6 +3,7 @@
use strict; use strict;
use warnings; use warnings;
use Test::More; use Test::More;
use Test::Deep;
use DDG::Test::Goodie; use DDG::Test::Goodie;
zci answer_type => 'kernel_taint'; zci answer_type => 'kernel_taint';
@ -19,4 +20,4 @@ ddg_goodie_test(
'2 kernel taint description' => test_zci('- A module was force loaded by insmod -f. Set by modutils >= 2.4.9 and module-init-tools.', html => '<ul><li>A module was force loaded by insmod -f. Set by modutils >= 2.4.9 and module-init-tools.</li></ul><a href="https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/Documentation/sysctl/kernel.txt">Read more</a>') '2 kernel taint description' => test_zci('- A module was force loaded by insmod -f. Set by modutils >= 2.4.9 and module-init-tools.', html => '<ul><li>A module was force loaded by insmod -f. Set by modutils >= 2.4.9 and module-init-tools.</li></ul><a href="https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/Documentation/sysctl/kernel.txt">Read more</a>')
); );
done_testing; done_testing;

View File

@ -3,6 +3,7 @@
use strict; use strict;
use warnings; use warnings;
use Test::More; use Test::More;
use Test::Deep;
use DDG::Test::Goodie; use DDG::Test::Goodie;
zci answer_type => 'lasership'; zci answer_type => 'lasership';
@ -24,4 +25,3 @@ ddg_goodie_test(
); );
done_testing; done_testing;

View File

@ -3,6 +3,7 @@
use strict; use strict;
use warnings; use warnings;
use Test::More; use Test::More;
use Test::Deep;
use DDG::Test::Goodie; use DDG::Test::Goodie;
zci answer_type => 'Latex'; zci answer_type => 'Latex';
@ -14,17 +15,17 @@ ddg_goodie_test(
)], )],
"latex integral" => test_zci('LaTeX command: \int_lowerbound^upperbound "latex integral" => test_zci('LaTeX command: \int_lowerbound^upperbound
Example: $\int_a^b f(x)dx$', Example: $\int_a^b f(x)dx$',
html => qr/\\int_lowerbound\^upperbound/, html => re(qr/\\int_lowerbound\^upperbound/),
heading => 'Integral (LaTeX)'), heading => 'Integral (LaTeX)'),
"tex integral" => test_zci('LaTeX command: \int_lowerbound^upperbound "tex integral" => test_zci('LaTeX command: \int_lowerbound^upperbound
Example: $\int_a^b f(x)dx$', Example: $\int_a^b f(x)dx$',
html => qr/\\int_lowerbound\^upperbound/, html => re(qr/\\int_lowerbound\^upperbound/),
heading => 'Integral (LaTeX)'), heading => 'Integral (LaTeX)'),
'latex summation' => test_zci('LaTeX command: \sum_{lower}^{upper} 'latex summation' => test_zci('LaTeX command: \sum_{lower}^{upper}
Example: $\sum_{i=0}^{10} x^{2}$', Example: $\sum_{i=0}^{10} x^{2}$',
html => qr/\\sum_\{lower\}\^\{upper\}/, html => re(qr/\\sum_\{lower\}\^\{upper\}/),
heading => 'Summation (LaTeX)'), heading => 'Summation (LaTeX)'),
); );
done_testing; done_testing;

View File

@ -5,6 +5,7 @@ use warnings;
use Test::MockTime qw( :all ); use Test::MockTime qw( :all );
use Test::More; use Test::More;
use Test::Deep;
use DDG::Test::Goodie; use DDG::Test::Goodie;
zci answer_type => 'leap_year'; zci answer_type => 'leap_year';
@ -137,4 +138,4 @@ ddg_goodie_test(
); );
restore_time(); restore_time();
done_testing(); done_testing();

View File

@ -4,6 +4,7 @@ use strict;
use warnings; use warnings;
use Test::More; use Test::More;
use Test::Deep;
use DDG::Test::Goodie; use DDG::Test::Goodie;
use utf8; use utf8;
@ -56,4 +57,4 @@ ddg_goodie_test(
'l33tsp34k' => undef, 'l33tsp34k' => undef,
); );
done_testing; done_testing;

View File

@ -3,6 +3,7 @@
use strict; use strict;
use warnings; use warnings;
use Test::More; use Test::More;
use Test::Deep;
use DDG::Test::Goodie; use DDG::Test::Goodie;
use DDG::Test::Location; use DDG::Test::Location;
use DDG::Request; use DDG::Request;
@ -237,4 +238,4 @@ ddg_goodie_test (
); );
done_testing; done_testing;

View File

@ -1,6 +1,7 @@
use strict; use strict;
use warnings; use warnings;
use Test::More; use Test::More;
use Test::Deep;
use DDG::Test::Goodie; use DDG::Test::Goodie;
use utf8; use utf8;
@ -9,8 +10,8 @@ zci is_cached => 0;
sub build_result { sub build_result {
my $result = shift; my $result = shift;
return $result, structured_answer => { return re($result), structured_answer => {
data => "-ANY-", data => ignore(),
meta => { meta => {
sourceName => "Lipsum", sourceName => "Lipsum",
sourceUrl => "http://lipsum.com/" sourceUrl => "http://lipsum.com/"
@ -83,4 +84,4 @@ ddg_goodie_test(
); );
done_testing; done_testing;

View File

@ -4,6 +4,7 @@ use strict;
use warnings; use warnings;
use Test::More; use Test::More;
use Test::Deep;
use DDG::Test::Goodie; use DDG::Test::Goodie;
zci answer_type => 'lowercase'; zci answer_type => 'lowercase';
@ -38,4 +39,4 @@ ddg_goodie_test(
'how to lowercase text' => undef 'how to lowercase text' => undef
); );
done_testing; done_testing;

View File

@ -3,6 +3,7 @@
use strict; use strict;
use warnings; use warnings;
use Test::More; use Test::More;
use Test::Deep;
use DDG::Test::Goodie; use DDG::Test::Goodie;
zci answer_type => "md4"; zci answer_type => "md4";
@ -85,4 +86,4 @@ ddg_goodie_test(
'md5 this string' => undef, 'md5 this string' => undef,
); );
done_testing; done_testing;

View File

@ -3,6 +3,7 @@
use strict; use strict;
use warnings; use warnings;
use Test::More; use Test::More;
use Test::Deep;
use DDG::Test::Goodie; use DDG::Test::Goodie;
zci answer_type => 'md5'; zci answer_type => 'md5';
@ -180,4 +181,4 @@ ddg_goodie_test(
), ),
); );
done_testing; done_testing;

View File

@ -3,6 +3,7 @@
use strict; use strict;
use warnings; use warnings;
use Test::More; use Test::More;
use Test::Deep;
use DDG::Test::Goodie; use DDG::Test::Goodie;
zci answer_type => "mac_address"; zci answer_type => "mac_address";
@ -57,4 +58,4 @@ ddg_goodie_test(
'mac address 1E:00:00:00:00:00' => undef, 'mac address 1E:00:00:00:00:00' => undef,
); );
done_testing; done_testing;

View File

@ -3,14 +3,15 @@
use strict; use strict;
use warnings; use warnings;
use Test::More; use Test::More;
use Test::Deep;
use DDG::Test::Goodie; use DDG::Test::Goodie;
zci answer_type => "magic_eight_ball"; zci answer_type => "magic_eight_ball";
zci is_cached => 0; zci is_cached => 0;
my $possibleAnswers = qr/(It is certain|It is decidedly so|Without a doubt|Yes, definitely|You may rely on it|As I see it, yes|Most likely|Outlook good|Yes|Signs point to yes|Reply hazy try again|Ask again later|Better not tell you now|Cannot predict now|Concentrate and ask again|Don't count on it|My reply is no|My sources say no|Outlook not so good|Very doubtful)/; my $possibleAnswers = re(qr/(It is certain|It is decidedly so|Without a doubt|Yes, definitely|You may rely on it|As I see it, yes|Most likely|Outlook good|Yes|Signs point to yes|Reply hazy try again|Ask again later|Better not tell you now|Cannot predict now|Concentrate and ask again|Don't count on it|My reply is no|My sources say no|Outlook not so good|Very doubtful)/);
my $possibleStructuredAnswer = qr/^(?:It is certain|It is decidedly so|Without a doubt|Yes, definitely|You may rely on it|As I see it, yes|Most likely|Outlook good|Yes|Signs point to yes|Reply hazy try again|Ask again later|Better not tell you now|Cannot predict now|Concentrate and ask again|Don&#39;t count on it|My reply is no|My sources say no|Outlook not so good|Very doubtful)$/; my $possibleStructuredAnswer = re(qr/^(?:It is certain|It is decidedly so|Without a doubt|Yes, definitely|You may rely on it|As I see it, yes|Most likely|Outlook good|Yes|Signs point to yes|Reply hazy try again|Ask again later|Better not tell you now|Cannot predict now|Concentrate and ask again|Don&#39;t count on it|My reply is no|My sources say no|Outlook not so good|Very doubtful)$/);
ddg_goodie_test( ddg_goodie_test(
[qw( DDG::Goodie::MagicEightBall )], [qw( DDG::Goodie::MagicEightBall )],
@ -43,4 +44,4 @@ ddg_goodie_test(
'magic 8ball' => undef 'magic 8ball' => undef
); );
done_testing; done_testing;

View File

@ -4,6 +4,7 @@ use strict;
use warnings; use warnings;
use Test::More; use Test::More;
use Test::Deep;
use DDG::Test::Goodie; use DDG::Test::Goodie;
zci answer_type => 'xkcd_sandwich'; zci answer_type => 'xkcd_sandwich';
@ -34,4 +35,4 @@ ddg_goodie_test(
'0 make me a sandwich' => undef, '0 make me a sandwich' => undef,
); );
done_testing; done_testing;

View File

@ -4,6 +4,7 @@ use strict;
use warnings; use warnings;
use Test::More; use Test::More;
use Test::Deep;
use DDG::Test::Goodie; use DDG::Test::Goodie;
zci answer_type => 'markdown_reference'; zci answer_type => 'markdown_reference';
@ -71,4 +72,4 @@ ddg_goodie_test(
'markdown cheat sheet list' => undef, 'markdown cheat sheet list' => undef,
); );
done_testing; done_testing;

View File

@ -4,6 +4,7 @@ use strict;
use warnings; use warnings;
use utf8; use utf8;
use Test::More; use Test::More;
use Test::Deep;
use DDG::Test::Goodie; use DDG::Test::Goodie;
use URI::Escape; use URI::Escape;
@ -141,4 +142,4 @@ sub make_structured_answer {
}; };
}; };
done_testing; done_testing;

View File

@ -3,6 +3,7 @@
use strict; use strict;
use warnings; use warnings;
use Test::More; use Test::More;
use Test::Deep;
use DDG::Test::Goodie; use DDG::Test::Goodie;
zci answer_type => 'moon_phase'; zci answer_type => 'moon_phase';
@ -14,8 +15,8 @@ my $quarter = qr/(?:First|Third)$space_plus(?:Quarter)/;
my $named = qr/(?:New|Full)$space_plus(?:Moon)/; my $named = qr/(?:New|Full)$space_plus(?:Moon)/;
my $phases = qr/$wax_wane|$quarter|$named/; my $phases = qr/$wax_wane|$quarter|$named/;
my $ascii_answer = qr/^The current lunar phase is: $phases$/; my $ascii_answer = re(qr/^The current lunar phase is: $phases$/);
my $html_answer = qr%^The current lunar phase is: <a href="\?q=$phases">$phases</a>$%; my $html_answer = re(qr%^The current lunar phase is: <a href="\?q=$phases">$phases</a>$%);
ddg_goodie_test( ddg_goodie_test(
[qw( DDG::Goodie::MoonPhases)], [qw( DDG::Goodie::MoonPhases)],
@ -24,7 +25,7 @@ ddg_goodie_test(
structured_answer => { structured_answer => {
input => [], input => [],
operation => 'Current lunar phase', operation => 'Current lunar phase',
result => $phases, result => re($phases),
} }
), ),
'lunar phase' => test_zci( 'lunar phase' => test_zci(
@ -32,7 +33,7 @@ ddg_goodie_test(
structured_answer => { structured_answer => {
input => [], input => [],
operation => 'Current lunar phase', operation => 'Current lunar phase',
result => $phases, result => re($phases),
} }
), ),
'phase of the moon' => test_zci( 'phase of the moon' => test_zci(
@ -40,7 +41,7 @@ ddg_goodie_test(
structured_answer => { structured_answer => {
input => [], input => [],
operation => 'Current lunar phase', operation => 'Current lunar phase',
result => $phases, result => re($phases),
} }
), ),
'what is the current lunar phase' => test_zci( 'what is the current lunar phase' => test_zci(
@ -48,9 +49,9 @@ ddg_goodie_test(
structured_answer => { structured_answer => {
input => [], input => [],
operation => 'Current lunar phase', operation => 'Current lunar phase',
result => $phases, result => re($phases),
} }
), ),
); );
done_testing; done_testing;

View File

@ -4,6 +4,7 @@ use strict;
use warnings; use warnings;
use utf8; use utf8;
use Test::More; use Test::More;
use Test::Deep;
use DDG::Test::Goodie; use DDG::Test::Goodie;
zci answer_type => 'morse'; zci answer_type => 'morse';
@ -43,4 +44,4 @@ ddg_goodie_test([qw(
'morse code for cheat sheet' => undef, 'morse code for cheat sheet' => undef,
); );
done_testing; done_testing;

View File

@ -3,6 +3,7 @@
use strict; use strict;
use warnings; use warnings;
use Test::More; use Test::More;
use Test::Deep;
use DDG::Test::Goodie; use DDG::Test::Goodie;
zci answer_type => 'nletterwords'; zci answer_type => 'nletterwords';
@ -16,8 +17,8 @@ ddg_goodie_test(
'1 char words' => test_zci('Random 1 letter words: a, I.'), '1 char words' => test_zci('Random 1 letter words: a, I.'),
'1 character word' => test_zci('Random 1 letter words: a, I.'), '1 character word' => test_zci('Random 1 letter words: a, I.'),
'one letter words' => test_zci('Random 1 letter words: a, I.'), 'one letter words' => test_zci('Random 1 letter words: a, I.'),
'5 letter words' => test_zci(qr/Random 5 letter words: ((\w){5},? ?){30}/), '5 letter words' => test_zci(re(qr/Random 5 letter words: ((\w){5},? ?){30}/)),
'12 character word' => test_zci(qr/Random 12 letter words: ((\w){12},? ?){30}/), '12 character word' => test_zci(re(qr/Random 12 letter words: ((\w){12},? ?){30}/)),
); );
done_testing; done_testing;

View File

@ -5,6 +5,7 @@ use strict;
use warnings; use warnings;
use Locale::Country; use Locale::Country;
use Test::More; use Test::More;
use Test::Deep;
use DDG::Test::Goodie; use DDG::Test::Goodie;
zci answer_type => "name_days"; zci answer_type => "name_days";
@ -176,4 +177,4 @@ ddg_goodie_test(
'name day' => undef, 'name day' => undef,
); );
done_testing; done_testing;

View File

@ -3,6 +3,7 @@
use strict; use strict;
use warnings; use warnings;
use Test::More; use Test::More;
use Test::Deep;
use DDG::Test::Goodie; use DDG::Test::Goodie;
zci answer_type => "note_frequency"; zci answer_type => "note_frequency";
@ -37,4 +38,4 @@ ddg_goodie_test(
"notefreq c9" => undef, "notefreq c9" => undef,
); );
done_testing; done_testing;

Some files were not shown because too many files have changed in this diff Show More