zeroclickinfo-goodies/t/CaesarCipher.t

75 lines
2.5 KiB
Perl

#!/usr/bin/env perl
use strict;
use warnings;
use Test::More;
use Test::Deep;
use DDG::Test::Goodie;
zci answer_type => 'caesar_cipher';
zci is_cached => 1;
my $decode_response = {
data => ignore(), # We only need to check it is the right template.
meta => {
sourceUrl => 'https://en.wikipedia.org/wiki/Caesar_cipher',
sourceName => 'Wikipedia',
},
templates => {
group => 'info',
options => {
content => 'DDH.caesar_cipher.content',
chompContent => 1,
},
},
};
sub decode_response {
return "Caesar Cipher", structured_answer => $decode_response;
}
sub build_structured_answer {
my ($result, $amount, $to_cipher) = @_;
return "$result",
structured_answer => {
data => {
title => "$result",
subtitle => "Caesar cipher $amount $to_cipher",
},
templates => {
group => 'text',
moreAt => 0,
},
};
}
sub build_test { test_zci(build_structured_answer(@_)) }
sub decode_test { test_zci(decode_response()) }
ddg_goodie_test(
[qw( DDG::Goodie::CaesarCipher )],
'caesar 2 abc' => build_test('cde', 2, 'abc'),
'caesar cipher -2 cde' => build_test('abc', -2, 'cde'),
'caesar 52 abc' => build_test('abc', 52, 'abc'),
'caesar 1 TtEeSsTt' => build_test('UuFfTtUu', 1, 'TtEeSsTt'),
'caesar 0 test' => build_test('test', 0, 'test'),
'caesar -26 test\\' => build_test('test\\', -26, 'test\\'),
'caesar 5 #test{]17TEST#' => build_test('#yjxy{]17YJXY#', 5, '#test{]17TEST#'),
'Caesar cipher 26 test text.' => build_test('test text.', 26, 'test text.'),
'ceasar 13 "More Test Text"' => build_test('"Zber Grfg Grkg"', 13, '"More Test Text"'),
'shift cipher 7 Mxlm mxqm' => build_test('Test text', 7, 'Mxlm mxqm'),
'caesar cipher hello' => undef,
'caesar cipher' => undef,
# Decoding information tests
'how to decode a caesar cipher?' => decode_test(),
'How to decode a Caesar cipher?' => decode_test(),
'how to use a shift cipher' => decode_test(),
'how to encrypt the caesar cipher' => decode_test(),
'caesar cipher decoder' => decode_test(),
'shift cipher encrypter' => decode_test(),
'shift cipher decrypt' => decode_test(),
'how to decode caesar' => undef,
);
done_testing;