HierarchyTests.testYesNoQuestion()   B
last analyzed

Complexity

Conditions 1

Size

Total Lines 33

Duplication

Lines 33
Ratio 100 %

Code Coverage

Tests 30
CRAP Score 1

Importance

Changes 3
Bugs 2 Features 0
Metric Value
cc 1
c 3
b 2
f 0
dl 33
loc 33
ccs 30
cts 30
cp 1
crap 1
rs 8.8571
1 1
import json
2
3 1
from ppp_questionparsing_grammatical import Word, DependenciesTree, computeTree, simplify, NamedEntityMerging, PrepositionMerging
4 1
import data
5
6 1
from unittest import TestCase
7
8 1
class HierarchyTests(TestCase):
9
10 1
    def testQuestion(self):
11 1
        tree=computeTree(data.give_president_of_USA())
12 1
        NamedEntityMerging(tree).merge()
13 1
        PrepositionMerging(tree).merge()
14 1
        self.assertEqual(simplify(tree), 'who')
15
16 1
    def testQuestion2(self):
17 1
        tree=computeTree(data.give_how_old())
18 1
        NamedEntityMerging(tree).merge()
19 1
        PrepositionMerging(tree).merge()
20 1
        self.assertEqual(simplify(tree), 'how old')
21
22 1 View Code Duplication
    def testHierarchySimplification(self):
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
23 1
        tree=computeTree(data.give_president_of_USA())
24 1
        NamedEntityMerging(tree).merge()
25 1
        PrepositionMerging(tree).merge()
26 1
        simplify(tree)
27 1
        tree.sort()
28 1
        root=tree
29
        # Root
30 1
        self.assertEqual(root.wordList, [Word("ROOT", 0)])
31 1
        self.assertEqual(root.namedEntityTag, 'undef')
32 1
        self.assertEqual(root.dependency, 'R0')
33 1
        self.assertEqual(root.parent, None)
34 1
        self.assertEqual(len(root.child), 1)
35 1
        self.assertEqual(root.subtreeType, 'PERSON')
36 1
        self.assertEqual(root.dfsTag, 0)
37
        # Is
38 1
        is_=root.child[0]
39 1
        self.assertEqual(is_.wordList, [Word("is", 2, 'VBZ')])
40 1
        self.assertEqual(is_.namedEntityTag, 'undef')
41 1
        self.assertEqual(is_.dependency, 'R0')
42 1
        self.assertEqual(is_.parent, root)
43 1
        self.assertEqual(len(is_.child), 1)
44 1
        self.assertEqual(is_.subtreeType, 'PERSON')
45 1
        self.assertEqual(is_.dfsTag, 0)
46
        # President
47 1
        president=is_.child[0]
48 1
        self.assertEqual(president.wordList, [Word("president", 4, 'NN')])
49 1
        self.assertEqual(president.namedEntityTag, 'undef')
50 1
        self.assertEqual(president.dependency, 'R2')
51 1
        self.assertEqual(president.parent, is_)
52 1
        self.assertEqual(len(president.child), 1)
53 1
        self.assertEqual(president.subtreeType, 'undef')
54 1
        self.assertEqual(president.dfsTag, 0)
55
        # United States
56 1
        us=president.child[0]
57 1
        self.assertEqual(us.wordList, [Word("United", 7, 'NNP'), Word("States", 8, 'NNPS')])
58 1
        self.assertEqual(us.namedEntityTag, 'LOCATION')
59 1
        self.assertEqual(us.dependency, 'R2')
60 1
        self.assertEqual(us.parent, president)
61 1
        self.assertEqual(len(us.child), 0)
62 1
        self.assertEqual(us.subtreeType, 'undef')
63 1
        self.assertEqual(us.dfsTag, 0)
64
65 1
    def testIgnore(self):
66 1
        tree=computeTree(data.give_how_old())
67 1
        NamedEntityMerging(tree).merge()
68 1
        PrepositionMerging(tree).merge()
69 1
        simplify(tree)
70 1
        tree.sort()
71 1
        root=tree
72
        # Root
73 1
        self.assertEqual(root.wordList, [Word("ROOT", 0)])
74 1
        self.assertEqual(root.namedEntityTag, 'undef')
75 1
        self.assertEqual(root.dependency, 'R0')
76 1
        self.assertEqual(root.parent, None)
77 1
        self.assertEqual(len(root.child), 1)
78 1
        self.assertEqual(root.subtreeType, 'NUMBER')
79 1
        self.assertEqual(root.dfsTag, 0)
80
        # Are
81 1
        are=root.child[0]
82 1
        self.assertEqual(are.wordList, [Word("are", 3, 'VBP')])
83 1
        self.assertEqual(are.namedEntityTag, 'undef')
84 1
        self.assertEqual(are.dependency, 'R0')
85 1
        self.assertEqual(are.parent, root)
86 1
        self.assertEqual(len(are.child), 0)
87 1
        self.assertEqual(are.subtreeType, 'NUMBER')
88 1
        self.assertEqual(are.dfsTag, 0)
89
90 1 View Code Duplication
    def testHierarchySimplification2(self):
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
91 1
        tree=computeTree(data.give_USA_president())
92 1
        NamedEntityMerging(tree).merge()
93 1
        PrepositionMerging(tree).merge()
94 1
        simplify(tree)
95 1
        tree.sort()
96 1
        root=tree
97
        # Root
98 1
        self.assertEqual(root.wordList, [Word("ROOT", 0)])
99 1
        self.assertEqual(root.namedEntityTag, 'undef')
100 1
        self.assertEqual(root.dependency, 'R0')
101 1
        self.assertEqual(root.parent, None)
102 1
        self.assertEqual(len(root.child), 1)
103 1
        self.assertEqual(root.subtreeType, 'PERSON')
104 1
        self.assertEqual(root.dfsTag, 0)
105
        # Is
106 1
        is_=root.child[0]
107 1
        self.assertEqual(is_.wordList, [Word("is", 2, 'VBZ')])
108 1
        self.assertEqual(is_.namedEntityTag, 'undef')
109 1
        self.assertEqual(is_.dependency, 'R0')
110 1
        self.assertEqual(is_.parent, root)
111 1
        self.assertEqual(len(is_.child), 1)
112 1
        self.assertEqual(is_.subtreeType, 'PERSON')
113 1
        self.assertEqual(is_.dfsTag, 0)
114
        # US
115 1
        us=is_.child[0]
116 1
        self.assertEqual(us.wordList, [Word("United", 4, 'NNP'), Word("States", 5, 'NNPS'), Word("president", 6, 'NN')])
117 1
        self.assertEqual(us.namedEntityTag, 'undef')
118 1
        self.assertEqual(us.dependency, 'R2')
119 1
        self.assertEqual(us.parent, is_)
120 1
        self.assertEqual(len(us.child), 0)
121 1
        self.assertEqual(us.subtreeType, 'undef')
122 1
        self.assertEqual(us.dfsTag, 0)
123
124 1
    def testHierarchyConnectors1(self):
125 1
        tree=computeTree(data.give_opera())
126 1
        NamedEntityMerging(tree).merge()
127 1
        PrepositionMerging(tree).merge()
128 1
        simplify(tree)
129 1
        tree.sort()
130 1
        root=tree
131
        # Root
132 1
        self.assertEqual(root.wordList, [Word("ROOT", 0)])
133 1
        self.assertEqual(root.namedEntityTag, 'undef')
134 1
        self.assertEqual(root.dependency, 'R0')
135 1
        self.assertEqual(root.parent, None)
136 1
        self.assertEqual(len(root.child), 1)
137 1
        self.assertEqual(root.subtreeType, 'undef')
138 1
        self.assertEqual(root.dfsTag, 0)
139
        # identity
140 1
        identity=root.child[0]
141 1
        self.assertEqual(identity.wordList, [Word("was", 2, 'VBD')])
142 1
        self.assertEqual(identity.namedEntityTag, 'undef')
143 1
        self.assertEqual(identity.dependency, 'R0')
144 1
        self.assertEqual(identity.parent, root)
145 1
        self.assertEqual(len(identity.child), 1)
146 1
        self.assertEqual(identity.subtreeType, 'undef')
147 1
        self.assertEqual(identity.dfsTag, 0)
148
        # and
149 1
        andw=identity.child[0]
150 1
        self.assertEqual(andw.wordList, [Word("and", 1000, None)])
151 1
        self.assertEqual(andw.namedEntityTag, 'undef')
152 1
        self.assertEqual(andw.dependency, 'R2')
153 1
        self.assertEqual(andw.parent, identity)
154 1
        self.assertEqual(len(andw.child), 2)
155 1
        self.assertEqual(andw.subtreeType, 'undef')
156 1
        self.assertEqual(andw.dfsTag, 0)
157
        # first1
158 1
        first1=andw.child[0]
159 1
        self.assertEqual(first1.wordList, [Word("first", 4, 'JJ')])
160 1
        self.assertEqual(first1.namedEntityTag, 'ORDINAL')
161 1
        self.assertEqual(first1.dependency, 'RconjT')
162 1
        self.assertEqual(first1.parent, andw)
163 1
        self.assertEqual(len(first1.child), 1)
164 1
        self.assertEqual(first1.subtreeType, 'undef')
165 1
        self.assertEqual(first1.dfsTag, 0)
166
        # first2
167 1
        first2=andw.child[1]
168 1
        self.assertEqual(first2.wordList, [Word("first", 4, 'JJ')])
169 1
        self.assertEqual(first2.namedEntityTag, 'ORDINAL')
170 1
        self.assertEqual(first2.dependency, 'RconjB')
171 1
        self.assertEqual(first2.parent, andw)
172 1
        self.assertEqual(len(first2.child), 1)
173 1
        self.assertEqual(first2.subtreeType, 'undef')
174 1
        self.assertEqual(first2.dfsTag, 0)
175
        # gilbert
176 1
        gilbert=first1.child[0]
177 1
        self.assertEqual(gilbert.wordList, [Word("Gilbert", 5, 'NNP')])
178 1
        self.assertEqual(gilbert.namedEntityTag, 'PERSON')
179 1
        self.assertEqual(gilbert.dependency, 'Rspl')
180 1
        self.assertEqual(gilbert.parent, first1)
181 1
        self.assertEqual(len(gilbert.child), 0)
182 1
        self.assertEqual(gilbert.subtreeType, 'undef')
183 1
        self.assertEqual(gilbert.dfsTag, 0)
184
        # sullivan
185 1
        sullivan=first2.child[0]
186 1
        self.assertEqual(sullivan.wordList, [Word("Sullivan", 7, 'NNP'), Word("opera", 8, 'NN')])
187 1
        self.assertEqual(sullivan.namedEntityTag, 'undef')
188 1
        self.assertEqual(sullivan.dependency, 'Rspl')
189 1
        self.assertEqual(sullivan.parent, first2)
190 1
        self.assertEqual(len(sullivan.child), 0)
191 1
        self.assertEqual(sullivan.subtreeType, 'undef')
192 1
        self.assertEqual(sullivan.dfsTag, 0)
193
194 1 View Code Duplication
    def testHierarchyConnectors2(self):
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
195 1
        tree=computeTree(data.give_chief())
196 1
        NamedEntityMerging(tree).merge()
197 1
        PrepositionMerging(tree).merge()
198 1
        simplify(tree)
199 1
        tree.sort()
200 1
        root=tree
201
        # Root
202 1
        self.assertEqual(root.wordList, [Word("ROOT", 0)])
203 1
        self.assertEqual(root.namedEntityTag, 'undef')
204 1
        self.assertEqual(root.dependency, 'R0')
205 1
        self.assertEqual(root.parent, None)
206 1
        self.assertEqual(len(root.child), 1)
207 1
        self.assertEqual(root.subtreeType, 'PERSON')
208 1
        self.assertEqual(root.dfsTag, 0)
209
        # and
210 1
        andw=root.child[0]
211 1
        self.assertEqual(andw.wordList, [Word("and", 1000, None)])
212 1
        self.assertEqual(andw.namedEntityTag, 'undef')
213 1
        self.assertEqual(andw.dependency, 'R0')
214 1
        self.assertEqual(andw.parent, root)
215 1
        self.assertEqual(len(andw.child), 2)
216 1
        self.assertEqual(andw.subtreeType, 'PERSON')
217 1
        self.assertEqual(andw.dfsTag, 0)
218
        # identity
219 1
        identity1=andw.child[0]
220 1
        self.assertEqual(identity1.wordList, [Word("is", 2, 'VBZ')])
221 1
        self.assertEqual(identity1.namedEntityTag, 'undef')
222 1
        self.assertEqual(identity1.dependency, 'RconjT')
223 1
        self.assertEqual(identity1.parent, andw)
224 1
        self.assertEqual(len(identity1.child), 1)
225 1
        self.assertEqual(identity1.subtreeType, 'PERSON')
226 1
        self.assertEqual(identity1.dfsTag, 0)
227
        # identity
228 1
        identity2=andw.child[1]
229 1
        self.assertEqual(identity2.wordList, [Word("is", 2, 'VBZ')])
230 1
        self.assertEqual(identity2.namedEntityTag, 'undef')
231 1
        self.assertEqual(identity2.dependency, 'RconjB')
232 1
        self.assertEqual(identity2.parent, andw)
233 1
        self.assertEqual(len(identity2.child), 1)
234 1
        self.assertEqual(identity2.subtreeType, 'PERSON')
235 1
        self.assertEqual(identity2.dfsTag, 0)
236
        # chief
237 1
        chief=identity1.child[0]
238 1
        self.assertEqual(chief.wordList, [Word("chief", 4, 'NN')])
239 1
        self.assertEqual(chief.namedEntityTag, 'undef')
240 1
        self.assertEqual(chief.dependency, 'R2')
241 1
        self.assertEqual(chief.parent, identity1)
242 1
        self.assertEqual(len(chief.child), 0)
243 1
        self.assertEqual(chief.subtreeType, 'undef')
244 1
        self.assertEqual(chief.dfsTag, 0)
245
        # prime minister
246 1
        prime=identity2.child[0]
247 1
        self.assertEqual(prime.wordList, [Word("prime", 6, 'JJ'), Word("minister", 7, 'NN')])
248 1
        self.assertEqual(prime.namedEntityTag, 'undef')
249 1
        self.assertEqual(prime.dependency, 'R2')
250 1
        self.assertEqual(prime.parent, identity2)
251 1
        self.assertEqual(len(prime.child), 0)
252 1
        self.assertEqual(prime.subtreeType, 'undef')
253 1
        self.assertEqual(prime.dfsTag, 0)
254
255 1 View Code Duplication
    def testYesNoQuestion(self):
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
256 1
        tree=computeTree(data.give_born())
257 1
        NamedEntityMerging(tree).merge()
258 1
        PrepositionMerging(tree).merge()
259 1
        simplify(tree)
260 1
        tree.sort()
261 1
        root=tree
262
        # Root
263 1
        self.assertEqual(root.wordList, [Word("ROOT", 0)])
264 1
        self.assertEqual(root.namedEntityTag, 'undef')
265 1
        self.assertEqual(root.dependency, 'R0')
266 1
        self.assertEqual(root.parent, None)
267 1
        self.assertEqual(len(root.child), 1)
268 1
        self.assertEqual(root.subtreeType, 'undef')
269 1
        self.assertEqual(root.dfsTag, 0)
270
        # birth
271 1
        birth=root.child[0]
272 1
        self.assertEqual(birth.wordList, [Word("born in", 2, 'VBN')])
273 1
        self.assertEqual(birth.namedEntityTag, 'undef')
274 1
        self.assertEqual(birth.dependency, 'R0')
275 1
        self.assertEqual(birth.parent, root)
276 1
        self.assertEqual(len(birth.child), 1)
277 1
        self.assertEqual(birth.subtreeType, 'undef')
278 1
        self.assertEqual(birth.dfsTag, 0)
279
        # date
280 1
        date=birth.child[0]
281 1
        self.assertEqual(date.wordList, [Word("1900", 4, 'CD')])
282 1
        self.assertEqual(date.namedEntityTag, 'DATE')
283 1
        self.assertEqual(date.dependency, 'R3')
284 1
        self.assertEqual(date.parent, birth)
285 1
        self.assertEqual(len(date.child), 0)
286 1
        self.assertEqual(date.subtreeType, 'undef')
287 1
        self.assertEqual(date.dfsTag, 0)
288
289 1 View Code Duplication
    def testNoQW(self):
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
290 1
        tree=computeTree(data.birth_date())
291 1
        NamedEntityMerging(tree).merge()
292 1
        PrepositionMerging(tree).merge()
293 1
        simplify(tree)
294 1
        tree.sort()
295 1
        root=tree
296
        # Root
297 1
        self.assertEqual(root.wordList, [Word("ROOT", 0)])
298 1
        self.assertEqual(root.namedEntityTag, 'undef')
299 1
        self.assertEqual(root.dependency, 'R0')
300 1
        self.assertEqual(root.parent, None)
301 1
        self.assertEqual(len(root.child), 1)
302 1
        self.assertEqual(root.subtreeType, 'undef')
303 1
        self.assertEqual(root.dfsTag, 0)
304
        # president
305 1
        president=root.child[0]
306 1
        self.assertEqual(president.wordList, [Word("President", 1, 'NNP')])
307 1
        self.assertEqual(president.namedEntityTag, 'undef')
308 1
        self.assertEqual(president.dependency, 'R0')
309 1
        self.assertEqual(president.parent, root)
310 1
        self.assertEqual(len(president.child), 1)
311 1
        self.assertEqual(president.subtreeType, 'undef')
312 1
        self.assertEqual(president.dfsTag, 0)
313
        # france
314 1
        france=president.child[0]
315 1
        self.assertEqual(france.wordList, [Word("France", 3, 'NNP')])
316 1
        self.assertEqual(france.namedEntityTag, 'LOCATION')
317 1
        self.assertEqual(france.dependency, 'R2')
318 1
        self.assertEqual(france.parent, president)
319 1
        self.assertEqual(len(france.child), 0)
320 1
        self.assertEqual(france.subtreeType, 'undef')
321 1
        self.assertEqual(france.dfsTag, 0)
322
323 1 View Code Duplication
    def testQuestionInfo(self):
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
324 1
        tree=computeTree(data.birth_place())
325 1
        NamedEntityMerging(tree).merge()
326 1
        PrepositionMerging(tree).merge()
327 1
        simplify(tree)
328 1
        tree.sort()
329 1
        root=tree
330
        # Root
331 1
        self.assertEqual(root.wordList, [Word("ROOT", 0)])
332 1
        self.assertEqual(root.namedEntityTag, 'undef')
333 1
        self.assertEqual(root.dependency, 'R0')
334 1
        self.assertEqual(root.parent, None)
335 1
        self.assertEqual(len(root.child), 1)
336 1
        self.assertEqual(root.subtreeType, 'DATE')
337 1
        self.assertEqual(root.dfsTag, 0)
338
        # birth date
339 1
        birth=root.child[0]
340 1
        self.assertEqual(birth.wordList, [Word("born", 3, 'VBN')])
341 1
        self.assertEqual(birth.namedEntityTag, 'undef')
342 1
        self.assertEqual(birth.dependency, 'R0')
343 1
        self.assertEqual(birth.parent, root)
344 1
        self.assertEqual(len(birth.child), 1)
345 1
        self.assertEqual(birth.subtreeType, 'DATE')
346 1
        self.assertEqual(birth.dfsTag, 0)
347
        # obama
348 1
        obama=birth.child[0]
349 1
        self.assertEqual(obama.wordList, [Word("Obama", 4, 'NNP')])
350 1
        self.assertEqual(obama.namedEntityTag, 'PERSON')
351 1
        self.assertEqual(obama.dependency, 'R3')
352 1
        self.assertEqual(obama.parent, birth)
353 1
        self.assertEqual(len(obama.child), 0)
354 1
        self.assertEqual(obama.subtreeType, 'undef')
355 1
        self.assertEqual(obama.dfsTag, 0)
356
357 1 View Code Duplication
    def testPassIdentity(self):
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
358 1
        tree=computeTree(data.mickey())
359 1
        NamedEntityMerging(tree).merge()
360 1
        PrepositionMerging(tree).merge()
361 1
        NamedEntityMerging(tree).merge()
362 1
        PrepositionMerging(tree).merge()
363 1
        simplify(tree)
364 1
        tree.sort()
365 1
        root=tree
366
        # Root
367 1
        self.assertEqual(root.wordList, [Word("ROOT", 0)])
368 1
        self.assertEqual(root.namedEntityTag, 'undef')
369 1
        self.assertEqual(root.dependency, 'R0')
370 1
        self.assertEqual(root.parent, None)
371 1
        self.assertEqual(len(root.child), 1)
372 1
        self.assertEqual(root.subtreeType, 'DATE')
373 1
        self.assertEqual(root.dfsTag, 0)
374
        # identity
375 1
        identity=root.child[0]
376 1
        self.assertEqual(identity.wordList, [Word("is", 2, 'VBZ')])
377 1
        self.assertEqual(identity.namedEntityTag, 'undef')
378 1
        self.assertEqual(identity.dependency, 'R0')
379 1
        self.assertEqual(identity.parent, root)
380 1
        self.assertEqual(len(identity.child), 1)
381 1
        self.assertEqual(identity.subtreeType, 'DATE')
382 1
        self.assertEqual(identity.dfsTag, 0)
383
        # birthday
384 1
        birthday=identity.child[0]
385 1
        self.assertEqual(birthday.wordList, [Word("birthday", 4, 'NN')])
386 1
        self.assertEqual(birthday.namedEntityTag, 'undef')
387 1
        self.assertEqual(birthday.dependency, 'R2')
388 1
        self.assertEqual(birthday.parent, identity)
389 1
        self.assertEqual(len(birthday.child), 1)
390 1
        self.assertEqual(birthday.subtreeType, 'undef')
391 1
        self.assertEqual(birthday.dfsTag, 0)
392
        # mickey
393 1
        mickey=birthday.child[0]
394 1
        self.assertEqual(mickey.wordList, [Word("Mickey", 6, 'NNP'), Word("Mouse", 7, 'NNP')])
395 1
        self.assertEqual(mickey.namedEntityTag, 'PERSON')
396 1
        self.assertEqual(mickey.dependency, 'R2')
397 1
        self.assertEqual(mickey.parent, birthday)
398 1
        self.assertEqual(len(mickey.child), 0)
399 1
        self.assertEqual(mickey.subtreeType, 'undef')
400
        self.assertEqual(root.dfsTag, 0)
401