Skip to content

Commit c21aae9

Browse files
committed
Added nlp tests
1 parent cf3fe6e commit c21aae9

File tree

3 files changed

+238
-0
lines changed

3 files changed

+238
-0
lines changed

tests/fixtures/en_US/nlp.yml

Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
long_phrases:
2+
sourceTime: 2013-08-01 21:25:00
3+
cases:
4+
- target: !nlpTarget
5+
- phrase: "At 8PM on August 5th"
6+
target: 2013-08-05 20:00:00
7+
context: !pdtContext month | day | hour
8+
- phrase: "next Friday at 9PM"
9+
target: 2013-08-09 21:00:00
10+
context: !pdtContext day | hour
11+
- phrase: "in 5 minutes"
12+
target: 2013-08-01 21:30:00
13+
context: !pdtContext minute
14+
- phrase: "next week"
15+
target: 2013-08-08 09:00:00
16+
context: !pdtContext week
17+
phrases:
18+
- >
19+
I'm so excited!! At 8PM on August 5th i'm going to fly to
20+
Florida. Then next Friday at 9PM i'm going to Dog n Bone!
21+
And in 5 minutes I'm going to eat some food! Talk to you
22+
next week.
23+
24+
long_phrases_with_quotes:
25+
sourceTime: 2013-08-01 21:25:00
26+
cases:
27+
- target: !nlpTarget
28+
- phrase: "At '8PM on August 5th"
29+
target: 2013-08-05 20:00:00
30+
context: !pdtContext month | day | hour
31+
- phrase: "next Friday at 9PM"
32+
target: 2013-08-09 21:00:00
33+
context: !pdtContext day | hour
34+
- phrase: "in '5 minutes"
35+
target: 2013-08-01 21:30:00
36+
context: !pdtContext minute
37+
- phrase: "next week"
38+
target: 2013-08-08 09:00:00
39+
context: !pdtContext week
40+
phrases:
41+
- >
42+
I'm so excited!! At '8PM on August 5th' i'm going to fly to
43+
Florida. Then 'next Friday at 9PM' i'm going to Dog n Bone!
44+
And in '5 minutes' I'm going to eat some food! Talk to you
45+
"next week"
46+
47+
prefixes:
48+
#
49+
sourceTime: 2016-08-06 08:30:00 # Saturday
50+
cases:
51+
- target: !nlpTarget
52+
- phrase: "on Monday"
53+
target: 2016-08-08 08:30:00
54+
context: !pdtContext day
55+
phrases:
56+
- "Buy a balloon on Monday"
57+
- target: !nlpTarget
58+
- phrase: "at noon"
59+
target: 2016-08-06 12:00:00
60+
context: !pdtContext halfday
61+
phrases:
62+
- "Buy a balloon at noon"
63+
- target: !nlpTarget
64+
- phrase: "in a month"
65+
target: !datedelta
66+
months: 1
67+
context: !pdtContext month
68+
phrases:
69+
- "Buy a balloon in a month"
70+
- target: !nlpTarget
71+
- phrase: "Monday"
72+
target: 2016-08-08 08:30:00
73+
context: !pdtContext day
74+
phrases:
75+
- "Buy a balloon Monday" # Should not pull "on" from the end of "balloon"
76+
77+
invalid_phrases:
78+
sourceTime: 2013-08-01 21:25:00
79+
cases:
80+
- target: null
81+
phrases:
82+
- >
83+
Next, I'm so excited!! So many things that are going to
84+
happen every week!!
85+
- "$300"
86+
- "300mL"
87+
- "nice ass"
Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
constants:
2+
- &arbitrary_date 2016-01-01 00:00:00
3+
4+
times:
5+
sourceTime: 2016-01-01 00:00:00
6+
cases:
7+
# 23:00:00
8+
- context: !pdtContext hour | minute | second
9+
target: 2016-01-01 23:00:00
10+
phrases:
11+
- "11:00:00 PM"
12+
- "11:00:00 P.M."
13+
- context: !pdtContext hour | minute
14+
target: 2016-01-01 23:00:00
15+
phrases:
16+
- "11:00 PM"
17+
- "2300"
18+
- "23:00"
19+
- "11:00 P.M."
20+
- context: !pdtContext hour
21+
target: 2016-01-01 23:00:00
22+
phrases:
23+
- "11 PM"
24+
- "11PM"
25+
- "11p"
26+
- "11pm"
27+
- "11 P.M."
28+
- "11P.M."
29+
- "11p.m."
30+
- "11 p.m."
31+
# 11:00:00
32+
- context: !pdtContext hour | minute | second
33+
target: 2016-01-01 11:00:00
34+
phrases:
35+
- "11:00:00 AM"
36+
- "11:00:00 A.M."
37+
- context: !pdtContext hour | minute
38+
target: 2016-01-01 11:00:00
39+
phrases:
40+
- "11:00 AM"
41+
- "1100"
42+
- "11:00"
43+
- "11:00 A.M."
44+
- context: !pdtContext hour
45+
target: 2016-01-01 11:00:00
46+
phrases:
47+
- "11 AM"
48+
- "11AM"
49+
- "11a"
50+
- "11am"
51+
- "11 A.M."
52+
- "11A.M."
53+
- "11a.m."
54+
- "11 a.m."
55+
56+
invalid_times:
57+
sourceTime: *arbitrary_date
58+
cases:
59+
- target: null
60+
phrases:
61+
- "$300"
62+
- "300ml"
63+
- "3:2"
64+
65+
dates:
66+
sourceTime: 2016-01-01 01:02:03
67+
cases:
68+
- target: 2006-08-25 01:02:03
69+
context: !pdtContext year | month | day
70+
phrases:
71+
- "08/25/2006"
72+
- "08.25.2006"
73+
- "2006/08/25"
74+
- "2006/8/25"
75+
- "2006-08-25"
76+
- "8/25/06"
77+
- "August 25, 2006"
78+
- "Aug 25, 2006"
79+
- "Aug. 25, 2006"
80+
- "August 25 2006"
81+
- "Aug 25 2006"
82+
- "Aug. 25 2006"
83+
- "25 August 2006"
84+
- "25 Aug 2006"
85+
- target: 2016-08-25 01:02:03
86+
context: !pdtContext month | day
87+
phrases:
88+
- "8/25"
89+
- "8.25"
90+
- "08/25"
91+
- "August 25"
92+
- "Aug 25"
93+
- "Aug. 25"
94+
- target: 2006-08-01 01:02:03
95+
context: !pdtContext year | month
96+
phrases:
97+
- "Aug. 2006"
98+
99+
invalid_dates:
100+
sourceTime: *arbitrary_date
101+
cases:
102+
- target: null
103+
phrases:
104+
- "$123"
105+
- "$12.34"

tests/test_nlp.py

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
import pytest
2+
3+
from .fixtures import pdtFixture
4+
5+
6+
@pdtFixture('nlp.yml')
7+
def test_long_phrases(cal, phrase, sourceTime, nlpTarget):
8+
assert cal.nlp(phrase, sourceTime) == nlpTarget
9+
10+
@pdtFixture('nlp.yml')
11+
def test_long_phrases_with_quotes(cal, phrase, sourceTime, nlpTarget):
12+
assert cal.nlp(phrase, sourceTime) == nlpTarget
13+
14+
@pdtFixture('nlp.yml')
15+
def test_prefixes(cal, phrase, sourceTime, nlpTarget):
16+
assert cal.nlp(phrase, sourceTime) == nlpTarget
17+
18+
@pdtFixture('nlp.yml')
19+
def test_invalid_phrases(cal, phrase, sourceTime, nlpTarget):
20+
assert cal.nlp(phrase, sourceTime) == nlpTarget
21+
22+
@pdtFixture('simple_datetimes.yml')
23+
def test_times(cal, phrase, sourceTime, nlpTarget):
24+
assert cal.nlp(phrase, sourceTime) == nlpTarget
25+
26+
@pdtFixture('simple_datetimes.yml')
27+
def test_invalid_times(cal, phrase, sourceTime, nlpTarget):
28+
assert cal.nlp(phrase, sourceTime) == nlpTarget
29+
30+
@pytest.mark.parametrize('prefix,suffix', (('"', '"'), ("'", "'"), ('(', ')')))
31+
@pdtFixture('simple_datetimes.yml', ['times', 'invalid_times', 'dates',
32+
'invalid_dates'])
33+
def test_simple_datetimes_wrapped(cal, phrase, sourceTime, nlpTarget, prefix,
34+
suffix):
35+
sourcePhrase = u'%s%s%s' % (prefix, phrase, suffix)
36+
nlpTarget.sourcePhrase = sourcePhrase
37+
assert cal.nlp(sourcePhrase, sourceTime) == nlpTarget
38+
39+
@pdtFixture('deltas.yml', ['past_integer_values', 'past_float_values'],
40+
# FIXME: Simple tests in German locale fail
41+
localeIDs=['en_US'])
42+
def test_deltas(cal, phrase, sourceTime, nlpTarget):
43+
# FIXME: these tests fail
44+
if phrase in ('1855336.424 minutes ago',):
45+
return
46+
assert cal.nlp(phrase, sourceTime) == nlpTarget

0 commit comments

Comments
 (0)