91 lines
2.3 KiB
Perl
91 lines
2.3 KiB
Perl
#!/usr/bin/env perl
|
|
|
|
use strict;
|
|
use warnings;
|
|
use Test::More;
|
|
use Test::Deep;
|
|
use DDG::Test::Goodie;
|
|
use YAML::XS 'LoadFile';
|
|
|
|
zci answer_type => 'url_escape_codes';
|
|
zci is_cached => 1;
|
|
|
|
my $url_escape_codes = LoadFile('share/goodie/url_escape_codes/data.yml');
|
|
|
|
sub build_structured_answer {
|
|
my $result = {
|
|
title => 'URL Escape Codes',
|
|
table => $url_escape_codes
|
|
};
|
|
|
|
# Check if type of header data is an Array
|
|
isa_ok($result->{table}->{header}, 'ARRAY');
|
|
|
|
# Check if type of body data is an Array
|
|
isa_ok($result->{table}->{body}, 'ARRAY');
|
|
|
|
# Check if each Header Hash has required keys
|
|
for (my $i = 0; $i < $#{$result->{table}->{header}}; $i++) {
|
|
cmp_deeply(
|
|
$result->{table}->{header}->[$i],
|
|
{
|
|
key => ignore(),
|
|
abbr => ignore()
|
|
}
|
|
);
|
|
}
|
|
|
|
# Check if each Body Hash has required keys
|
|
for (my $i = 0; $i < $#{$result->{table}->{body}}; $i++) {
|
|
cmp_deeply(
|
|
$result->{table}->{body}->[$i],
|
|
{
|
|
Char => ignore(),
|
|
'Esc Code' => ignore()
|
|
}
|
|
);
|
|
}
|
|
|
|
# Check if title is correct or not
|
|
is($result->{title}, 'URL Escape Codes');
|
|
|
|
return '',
|
|
structured_answer => {
|
|
id => 'url_escape_codes',
|
|
name => 'URL Escape Codes',
|
|
data => {
|
|
title => 'URL Escape Codes',
|
|
table => $url_escape_codes
|
|
},
|
|
meta => {
|
|
sourceName => 'december.com',
|
|
sourceUrl => 'http://www.december.com/html/spec/esccodes.html'
|
|
},
|
|
templates => {
|
|
group => 'list',
|
|
item => 0,
|
|
options => {
|
|
content => 'DDH.url_escape_codes.content',
|
|
moreAt => 1
|
|
}
|
|
}
|
|
};
|
|
}
|
|
|
|
sub build_test { test_zci(build_structured_answer(@_)) }
|
|
|
|
ddg_goodie_test(
|
|
[qw( DDG::Goodie::UrlEscapeCodes )],
|
|
'url escape' => build_test(),
|
|
'url escaping' => build_test(),
|
|
'url escape codes' => build_test(),
|
|
'url escape characters' => build_test(),
|
|
'url escape sequences' => build_test(),
|
|
'url encoder' => undef,
|
|
'url decoder' => undef,
|
|
'convert url escape' => undef,
|
|
'dont run for this' => undef
|
|
);
|
|
|
|
done_testing;
|