Blame view

fsabuilder/fsa/test/testConstruction.py 2.39 KB
Michał Lenart authored
1
2
3
4
#-*- coding: utf-8 -*-
'''
Created on Oct 8, 2013
Michał Lenart authored
5
@author: mlenart
Michał Lenart authored
6
7
'''
import unittest
Michał Lenart authored
8
9
import os
from fsa import fsa, visualizer, encode, buildfsa
Michał Lenart authored
10
from fsa.serializer import SimpleSerializer
Michał Lenart authored
11
12
13
14

class Test(unittest.TestCase):

    def testSimpleConstruction(self):
Michał Lenart authored
15
        a = fsa.FSA(encode.SimpleEncoder())
Michał Lenart authored
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
        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)
        for w, res in input:
            recognized = a.tryToRecognize(w)
            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)
Michał Lenart authored
58
59
60
61
62

    def testPolimorfConstruction(self):
        inputFile = os.path.join(os.path.dirname(__file__), 'PoliMorfSmall.tab')
        tagsetFile = os.path.join(os.path.dirname(__file__), 'polimorf.tagset')
        fsa = buildfsa.buildFromPoliMorf(inputFile, tagsetFile)
Michał Lenart authored
63
64
        serializer = SimpleSerializer(fsa)
        serializer.serialize2BinaryFile('/tmp/test0.fsa')
Michał Lenart authored
65
#         visualizer.Visualizer().visualize(fsa)
Michał Lenart authored
66
67
68
69

if __name__ == "__main__":
    #import sys;sys.argv = ['', 'Test.testSimpleConstruction']
    unittest.main()