Completed
Push — master ( 86c84c...d24805 )
by Valentin
06:29
created

DependenciesTreeTests.testAddNamedEntityTag1()   A

Complexity

Conditions 1

Size

Total Lines 8

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 8
CRAP Score 1

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
c 1
b 0
f 0
dl 0
loc 8
ccs 8
cts 8
cp 1
crap 1
rs 9.4285
1 1
import json
2 1
from nltk.stem.wordnet import WordNetLemmatizer
3 1
from ppp_questionparsing_grammatical import Word, DependenciesTree, TreeGenerator, computeTree
4 1
import data
5
6 1
from unittest import TestCase
7
8 1
class DependenciesTreeTests(TestCase):
9
10
    ########
11
    # Word #
12
    ########
13
14 1
    def testBasicWordConstructor1(self):
15 1
        w=Word('foo', 1, 'bar')
16 1
        self.assertEqual(w.word, 'foo')
17 1
        self.assertEqual(w.index, 1)
18 1
        self.assertEqual(w.pos, 'bar')
19 1
        self.assertEqual(str(w), "(foo, 1, bar)")
20 1
        w.append('aaa')
21 1
        self.assertEqual(Word('foo aaa', 1, 'bar'), w)
22
23 1
    def testPOS(self):
24 1
        for pos in {'VB', 'VBD', 'VBG', 'VBN', 'VBP', 'VBZ'}:
25 1
            w = Word('foo', 1, pos)
26 1
            self.assertTrue(w.isVerb())
27 1
            self.assertFalse(w.isNoun())
28 1
        for pos in {'NN', 'NNS', 'NNP', 'NNPS'}:
29 1
            w = Word('foo', 1, pos)
30 1
            self.assertFalse(w.isVerb())
31 1
            self.assertTrue(w.isNoun())
32
33
    ###################
34
    # Dependency tree #
35
    ###################
36
37 1
    def testBasicTreeConstructor(self):
38 1
        n = DependenciesTree('foo', 1)
39 1
        self.assertEqual(n.wordList, [Word('foo', 1)])
40 1
        self.assertEqual(n.namedEntityTag, 'undef')
41 1
        self.assertEqual(n.dependency, 'undef')
42 1
        self.assertEqual(n.child, [])
43 1
        self.assertEqual(n.text, "")
44 1
        self.assertEqual(n.parent, None)
45 1
        self.assertEqual(n.subtreeType, 'undef')
46 1
        self.assertEqual(n.dfsTag, 0)
47 1
        self.assertFalse(n.isVerb())
48 1
        self.assertFalse(n.isNoun())
49 1
        n.appendWord('bar')
50 1
        self.assertEqual(str(DependenciesTree('foo bar', 1)), str(n))
51
52 1
    def testTreePos(self):
53 1
        n = DependenciesTree('foo', 1)
54 1
        n.wordList += [Word('eat', 2, 'VB'), Word('bar', 3)]
55 1
        self.assertTrue(n.isVerb())
56 1
        self.assertFalse(n.isNoun())
57 1
        n = DependenciesTree('foo', 1)
58 1
        n.wordList += [Word('broomstick', 2, 'NN'), Word('bar', 3)]
59 1
        self.assertFalse(n.isVerb())
60 1
        self.assertTrue(n.isNoun())
61
62
63
    ###############
64
    # computeTree #
65
    ###############
66
67 1
    def testStr1(self):
68 1
        tree=computeTree(data.give_john_smith())
69 1
        self.maxDiff=None
70 1
        tree.sort()
71 1
        self.assertEqual(str(tree), data.give_john_smith_string())
72
73
    ###############
74
    # Merge       #
75
    ###############
76 1
    def testMerge(self):
77 1
        root1 = DependenciesTree('root', 1)
78 1
        root2 = DependenciesTree('root', 2)
79 1
        node1 = DependenciesTree('n', 1, 'tag1', 'stype1', 'dep1', [DependenciesTree('childn', 1)])
80 1
        node1.parent = root1
81 1
        root1.child += [node1]
82 1
        node2 = DependenciesTree('n', 2, 'tag2', 'stype2', 'dep2', [DependenciesTree('childn', 2)])
83 1
        node2.parent = root2
84 1
        root2.child += [node2]
85 1
        node1.merge(node2, True)
86 1
        self.assertEqual(len(root2.child), 0)
87 1
        self.assertEqual(len(root1.child), 1)
88 1
        self.assertEqual(len(node1.child), 2)
89 1
        self.assertEqual(node1.wordList, [Word('n', 1), Word('n', 2)])
90 1
        self.assertEqual(node1.namedEntityTag, 'tag1')
91 1
        self.assertEqual(node1.dependency, 'dep1')
92 1
        self.assertEqual(node1.parent, root1)
93 1
        self.assertEqual(node1.subtreeType, 'stype1')
94 1
        self.assertEqual(node1.dfsTag, 0)
95
96
    ###############
97
    # correctTree #
98
    ###############
99
100 1
    def testAddNamedEntityTag1(self):
101 1
        foo1 = DependenciesTree('foo1', 1, namedEntityTag='42')
102 1
        foo2 = DependenciesTree('foo2', 3, namedEntityTag='42')
103 1
        bar = DependenciesTree('bar', 2, namedEntityTag='undef', dependency = 'nn', parent = foo1)
104 1
        generator = TreeGenerator(None)
105 1
        generator.nameToNodes = {('foo1',1) : foo1, ('bar',2) : bar, ('foo2', 3) : foo2}
106 1
        generator._correctTree(foo1)
107 1
        self.assertEqual(bar.namedEntityTag, '42')
108
109 1
    def testAddNamedEntityTag2(self):
110 1
        foo1 = DependenciesTree('foo1', 1, namedEntityTag='42')
111 1
        foo2 = DependenciesTree('foo2', 3, namedEntityTag='42')
112 1
        bar = DependenciesTree('bar', 2, namedEntityTag='27', dependency = 'nn', parent = foo1)
113 1
        generator = TreeGenerator(None)
114 1
        generator.nameToNodes = {('foo1',1) : foo1, ('bar',2) : bar, ('foo2', 3) : foo2}
115 1
        generator._correctTree(foo1)
116 1
        self.assertEqual(bar.namedEntityTag, '27')
117
118 1
    def testAddNamedEntityTag3(self):
119 1
        foo1 = DependenciesTree('foo1', 1, namedEntityTag='42')
120 1
        foo2 = DependenciesTree('foo2', 3, namedEntityTag='42')
121 1
        bar = DependenciesTree('bar', 2, namedEntityTag='undef', dependency = 'amod', parent = foo1)
122 1
        generator = TreeGenerator(None)
123 1
        generator.nameToNodes = {('foo1',1) : foo1, ('bar',2) : bar, ('foo2', 3) : foo2}
124 1
        generator._correctTree(foo1)
125
        self.assertEqual(bar.namedEntityTag, 'undef')
126