forked from duckduckgo/zeroclickinfo-goodies
-
Notifications
You must be signed in to change notification settings - Fork 0
/
ChineseZodiac.t
137 lines (117 loc) · 6.04 KB
/
ChineseZodiac.t
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
#!/usr/bin/env perl
use strict;
use warnings;
use Test::MockTime qw( :all );
use Test::More;
use DDG::Test::Goodie;
use utf8;
zci answer_type => 'chinesezodiac';
zci is_cached => 0;
my %animal_to_language = (
'hare' => { en => 'Rabbit', zh => '兔' },
'dragon' => { en => 'Dragon', zh => '龙' },
'snake' => { en => 'Snake', zh => '蛇' },
'horse' => { en => 'Horse', zh => '马' },
'sheep' => { en => 'Goat', zh => '羊' },
'monkey' => { en => 'Monkey', zh => '猴' },
'fowl' => { en => 'Rooster', zh => '鸡' },
'dog' => { en => 'Dog', zh => '狗' },
'pig' => { en => 'Pig', zh => '猪' },
'rat' => { en => 'Rat', zh => '鼠' },
'ox' => { en => 'Ox', zh => '牛' },
'tiger' => { en => 'Tiger', zh => '虎' }
);
sub build_answer {
my ($animal, $statement) = @_;
my $character = $animal_to_language{$animal}{'zh'};
my $english = $animal_to_language{$animal}{'en'};
return test_zci("$character ($english)", structured_answer => {
id => "chinese_zodiac",
name => "Chinese Zodiac",
data => {
title => "$character ($english)",
subtitle => $statement
},
templates => {
group => "text",
item => 0,
moreAt => 1
},
meta => {
sourceName => "Wikipedia",
sourceUrl => "https://en.wikipedia.org/wiki/Chinese_zodiac"
}
})
}
ddg_goodie_test(
[qw(
DDG::Goodie::ChineseZodiac
)],
#Primary example
'chinese zodiac for 1969' => build_answer('fowl', 'Feb 17, 1969 – Feb 05, 1970'),
#Secondary examples
'2004 chinese zodiac animal' => build_answer('monkey', 'Jan 22, 2004 – Feb 08, 2005'),
'what was the chinese zodiac animal in 1992' => build_answer('monkey', 'Feb 04, 1992 – Jan 22, 1993'),
'what will the chinese zodiac animal be for 2056' => build_answer('rat', 'Feb 15, 2056 – Feb 03, 2057'),
#Primary example with different query formats
'1969 chinese zodiac animal' => build_answer('fowl', 'Feb 17, 1969 – Feb 05, 1970'),
'what was the chinese zodiac animal for 1969' => build_answer('fowl', 'Feb 17, 1969 – Feb 05, 1970'),
'what will the chinese zodiac animal be for people born in the year 1969' => build_answer('fowl', 'Feb 17, 1969 – Feb 05, 1970'),
'chinese zodiac for a person born in 1969' => build_answer('fowl', 'Feb 17, 1969 – Feb 05, 1970'),
'chinese zodiac of 1969' => build_answer('fowl', 'Feb 17, 1969 – Feb 05, 1970'),
#Alternative triggers
'1969 shēngxiào' => build_answer('fowl', 'Feb 17, 1969 – Feb 05, 1970'),
'shengxiao animal 1969' => build_answer('fowl', 'Feb 17, 1969 – Feb 05, 1970'),
'shēng xiào for 1969' => build_answer('fowl', 'Feb 17, 1969 – Feb 05, 1970'),
'i was born in 1969 what is my sheng xiao' => build_answer('fowl', 'Feb 17, 1969 – Feb 05, 1970'),
#Test some different years
# Taken from https://www.chinesezodiac.com/calculator.php
'chinese zodiac animal for 1924' => build_answer('rat', 'Feb 05, 1924 – Jan 23, 1925'),
'chinese zodiac animal for 1929' => build_answer('snake', 'Feb 10, 1929 – Jan 29, 1930'),
'chinese zodiac animal for 1934' => build_answer('dog', 'Feb 14, 1934 – Feb 03, 1935'),
'chinese zodiac animal for 1939' => build_answer('hare', 'Feb 19, 1939 – Feb 07, 1940'),
'chinese zodiac animal for 1944' => build_answer('monkey', 'Jan 25, 1944 – Feb 12, 1945'),
'chinese zodiac animal for 1949' => build_answer('ox', 'Jan 29, 1949 – Feb 16, 1950'),
'chinese zodiac animal for 1954' => build_answer('horse', 'Feb 03, 1954 – Jan 23, 1955'),
'chinese zodiac animal for 1959' => build_answer('pig', 'Feb 08, 1959 – Jan 27, 1960'),
'chinese zodiac animal for 1964' => build_answer('dragon', 'Feb 13, 1964 – Feb 01, 1965'),
'chinese zodiac animal for 1969' => build_answer('fowl', 'Feb 17, 1969 – Feb 05, 1970'),
'chinese zodiac animal for 1974' => build_answer('tiger', 'Jan 23, 1974 – Feb 10, 1975'),
'chinese zodiac animal for 2027' => build_answer('sheep', 'Feb 06, 2027 – Jan 25, 2028'),
'chinese zodiac animal for 2040' => build_answer('monkey', 'Feb 12, 2040 – Jan 31, 2041'),
#Test for correct date ranges
# Taken from https://www.chinesezodiac.com/calculator.php
'chinese zodiac animal for 1925' => build_answer('ox', 'Jan 24, 1925 – Feb 12, 1926'),
'chinese zodiac animal for 1937' => build_answer('ox', 'Feb 11, 1937 – Jan 30, 1938'),
'chinese zodiac animal for 1953' => build_answer('snake', 'Feb 14, 1953 – Feb 02, 1954'),
'chinese zodiac animal for 1973' => build_answer('ox', 'Feb 03, 1973 – Jan 22, 1974'),
'chinese zodiac animal for 1997' => build_answer('ox', 'Feb 07, 1997 – Jan 27, 1998'),
'chinese zodiac animal for 2013' => build_answer('snake', 'Feb 10, 2013 – Jan 30, 2014'),
'chinese zodiac animal for 2017' => build_answer('fowl', 'Jan 28, 2017 – Feb 15, 2018'),
'chinese zodiac animal for 2041' => build_answer('fowl', 'Feb 01, 2041 – Jan 21, 2042'),
#Handled by the date role–
'chinese zodiac 20 march 1997' => build_answer('ox', 'Feb 07, 1997 – Jan 27, 1998'),
'chinese zodiac 1997-03-20' => build_answer('ox', 'Feb 07, 1997 – Jan 27, 1998'),
'what was the chinese zodiac animal on the 3rd of april 1945' => build_answer('fowl', 'Feb 13, 1945 – Feb 01, 1946'),
#Should not trigger
'wikipedia chinese zodiac' => undef,
'what is my zodiac sign' => undef,
'what is the chinese word for duck' => undef,
'buy an inflatable zodiac chinese online store' => undef,
#No support currently for years outside 1900--2069
'chinese zodiac 1899' => undef,
'chinese zodiac 1900' => build_answer('rat', 'Jan 31, 1900 – Feb 18, 1901'),
'chinese zodiac 2069' => build_answer('ox', 'Jan 23, 2069 – Feb 10, 2070'),
'chinese zodiac 2070' => undef,
'chinese zodiac 2000000000000' => undef
);
set_fixed_time("2014-12-01T00:00:00");
ddg_goodie_test(
[qw(
DDG::Goodie::ChineseZodiac
)],
"last year's chinese zodiac" => build_answer('snake', 'Feb 10, 2013 – Jan 30, 2014'),
"last years chinese zodiac" => build_answer('snake', 'Feb 10, 2013 – Jan 30, 2014')
);
restore_time();
done_testing;