testConstruction.py
2.23 KB
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
#-*- coding: utf-8 -*-
'''
Created on Oct 8, 2013
@author: lennyn
'''
import unittest
from fsa import fsa, visualizer, encode
class Test(unittest.TestCase):
def testSimpleConstruction(self):
print 'dupa'
a = fsa.FSA(encode.Encoder())
input = sorted([
(u'bić', ''),
(u'bij', ''),
(u'biją', ''),
(u'bijcie', ''),
(u'bije', ''),
(u'bijecie', ''),
(u'bijemy', ''),
(u'bijesz', ''),
(u'biję', ''),
(u'bijmy', ''),
(u'bili', 'asd'),
(u'biliby', ''),
(u'bilibyście', ''),
(u'bilibyśmy', ''),
(u'biliście', 'asdfas'),
(u'biliśmy', ''),
(u'bił', 'wersadfas'),
(u'biła', 'asdfasd'),
(u'biłaby', 'asdfa'),
(u'biłabym', ''),
(u'biłabyś', 'asdfa'),
(u'biłam', 'dfas'),
(u'biłaś', 'asdfas'),
(u'biłby', ''),
(u'biłbym', 'asdfa'),
(u'biłbyś', ''),
(u'biłem', ''),
(u'biłeś', 'sadfa'),
(u'biły', ''),
(u'biłyby', ''),
(u'biłybyście', ''),
(u'biłybyśmy', ''),
(u'biłyście', ''),
(u'biłyśmy', ''),
], key=lambda w: bytearray(w[0], 'utf8'))
a.feed(input)
print a.getStatesNum()
# print a.tryToRecognize(u'bi')
# print a.tryToRecognize(u'bić')
# print a.tryToRecognize(u'bili')
for w, res in input:
print w, res, a.tryToRecognize(w)
recognized = a.tryToRecognize(w)
if type(res) in [str, unicode]:
recognized = recognized[0]
assert recognized == res
a.calculateOffsets(lambda state: 1 + 4 * len(state.transitionsMap.keys()) + (len(state.encodedData) if state.isAccepting() else 0))
visualizer.Visualizer().visualize(a)
print 'done'
if __name__ == "__main__":
#import sys;sys.argv = ['', 'Test.testSimpleConstruction']
unittest.main()