File: __init__.py

package info (click to toggle)
apertium 3.9.12-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 4,024 kB
  • sloc: cpp: 22,288; ansic: 4,875; xml: 2,566; python: 1,428; sh: 1,117; lex: 1,088; makefile: 591
file content (92 lines) | stat: -rw-r--r-- 5,340 bytes parent folder | download
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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
#!/usr/bin/python3
# -*- coding: utf-8 -*-

from base_test import IOTest
import unittest

from subprocess import call

class TransferTest(IOTest, unittest.TestCase):
    """Subclass and override inputs/expectedOutputs (and possibly other
stuff) to create new postchunk tests."""

    bindata = "data/nno-nob.t1x.bin"
    t1xdata = "data/apertium-nno-nob.nob-nno.t1x"
    flags = ["-b", "-z"]
    inputs = [""]
    expectedOutputs = [""]
    expectedCompRetCodeFail = False

    def compile(self):
        retCode = call(["../apertium/apertium-preprocess-transfer",
						self.t1xdata,
						self.bindata])
        if self.expectedCompRetCodeFail:
            self.assertNotEqual(retCode, 0)
        else:
            self.assertEqual(retCode, 0)
        return retCode == 0

    def runTest(self):
        if not self.compile():
            return
        cmd = ["../apertium/apertium-transfer"] \
            + self.flags                        \
            + [self.t1xdata, self.bindata]
        self.runCommand(cmd, zip(self.inputs, self.expectedOutputs))

class BasicTransferTest(TransferTest):
    inputs =          ["^hun<prn><f>/ho<prn><f>$"]
    expectedOutputs = ["^prn<prn><f>{^ho<prn><f>$}$"]

class SlashTagTest(TransferTest):
    inputs =          ['^hun<prn><m/f>/ho<prn><m/f>$']
    expectedOutputs = ['^prn<prn><m/f>{^ho<prn><m/f>$}$']

class SlLemqTest(TransferTest):
    inputs =          ["^skyldes<vblex><pstv><pres>/komme# av<vblex><pres>$"]
    expectedOutputs = ["sl-lemq:'' tl-lemq:'# av'"]

class WordboundBlankTest(TransferTest):
    inputs =          ["[blank1] [[t:s:123456]]^worda<n><acr>/wordta<n><acr>$ ;[blank2]; [[t:b:xyz123; t:l:xyz347]]^wordb<n><acr>/wordtb<n><acr>$ [blank3];  [[t:i:abc123; t:s:abc123]]^hun<prn><f>/ho<prn><f>$"]
    expectedOutputs = ["[blank1] ^prn<prn><f>{[[t:i:abc123; t:s:abc123]]^ho<prn><f>$[[t:b:xyz123; t:l:xyz347]]^wordtb<nacr><sg><m>$}$ ;[blank2]; ^det<n><acr>{[[t:s:123456; t:i:abc123; t:s:abc123]]^wordta<n><acr>+ho<prn><f>$}$ [blank3];  "]

class SingleLUWordboundBlankTest(TransferTest):
    inputs =          ["[blank1] [[t:s:123456]]^worda<n><acr>/wordta<n><acr>$ ;[blank2]; [[t:b:xyz123; t:l:xyz347]]^wordb<n><acr>/wordtb<n><acr>$ [blank3]; "]
    expectedOutputs = ["[blank1] ^nacr<n><acr>{[[t:s:123456]]^test<n><sg>$ [[t:s:123456]]^wordta<n><acr>$}$ ^nacr2<n><acr>{[[t:s:123456]]^testlem<n><pl>$ [[t:s:123456]]^wordta<n><acr>+postp<adj><sg>$}$ ;[blank2]; ^nacr<n><acr>{[[t:b:xyz123; t:l:xyz347]]^test<n><sg>$ [[t:b:xyz123; t:l:xyz347]]^wordtb<n><acr>$}$ ^nacr2<n><acr>{[[t:b:xyz123; t:l:xyz347]]^testlem<n><pl>$ [[t:b:xyz123; t:l:xyz347]]^wordtb<n><acr>+postp<adj><sg>$}$ [blank3]; "]

class SuperblankTest(TransferTest):
    inputs =          [ "[blank1] ^worda<det>/wordta<det>$ ;[blank2]; ^wordb<adj>/wordtb<adj>$ [blank3];  ^hun<n><acr>/ho<n><acr>$ [blank4]  ",          #Rule: superblankrule1 -> No <b/> in rule output, should flush all blanks after rule output
                        "[blank1] ^worda<detn>/wordta<detn>$ ;[blank2]; ^wordb<adjn>/wordtb<adjn>$ [blank3];  ^hun<nn><acr>/ho<nn><acr>$ [blank4]  ",   #No rule matches, should print all blanks as is
                        "[blank1] ^wordb<adj>/wordtb<adj>$ ;[blank2]; ^worda<det>/wordta<det>$ [blank3];  ^hun<n><acr>/ho<n><acr>$ [blank4]  ",         #Rule: superblankrule2 -> One <b/> in rule output, should print one and flush the rest
                        "[blank1] ^hun<n><acr>/ho<n><acr>$ ;[blank2]; ^worda<det>/wordta<det>$ [blank3];   [blank4]  ",                                 #Rule: superblankrule3 -> Input rule has 1 blank, output has 3, should print input blank for the first <b/> and just spaces for the rest
                        "[blank1] ^hun<n><acr>/ho<n><acr>$ ;[blank2]; ^worda<det>/wordta<det>$ [blank3]; ^wordb<adj>/wordtb<adj>$ ;[blank4]; ^worda<det>/wordta<det>$ [blank5];  ^hun<n><acr>/ho<n><acr>$ [blank6]  "] #Multiple rule matches
    expectedOutputs = [ "[blank1] ^test1<adj>{^wordta<det>$^wordtb<adj>$^ho<n><acr>$}$ ;[blank2];  [blank3];   [blank4]  ",
                        "[blank1] ^default<default>{^wordta<detn>$}$ ;[blank2]; ^default<default>{^wordtb<adjn>$}$ [blank3];  ^default<default>{^ho<nn><acr>$}$ [blank4]  ",
                        "[blank1] ^test1<det>{^wordta<det>$ ;[blank2]; ^ho<n><acr>$}$ [blank3];   [blank4]  ",
                        "[blank1] ^test1<det>{^ho<n><acr>$ ;[blank2]; ^wordta<det>$ ^ho<n><acr>$ ^wordta<det>$}$ [blank3];   [blank4]  ",
                        "[blank1] ^test1<det>{^ho<n><acr>$ ;[blank2]; ^wordta<det>$ ^ho<n><acr>$ ^wordta<det>$}$ [blank3]; ^test1<det>{^wordta<det>$ ;[blank4]; ^ho<n><acr>$}$ [blank5];   [blank6]  "]

class BincompatTest(BasicTransferTest):
    bindata = "data/bincompat.t1x.bin"

    def compile(self):
        return True


class EmptyTransferTest(TransferTest):
    t1xdata =         "data/empty.t1x"
    inputs =          ["^hun<prn><f>/ho<prn><f>$"]
    expectedOutputs = ["^default<default>{^ho<prn><f>$}$"]


class BadAttrTest(TransferTest):
    t1xdata = "data/bad-attr.t1x"
    expectedCompRetCodeFail = True

class SlashLuTransferTest(TransferTest):
    t1xdata =         "data/lu.t1x"
    inputs =          ["^hun<prn><f/z>/ho<prn><f/z>$",
                       '^a<n><2/3>/b<n><abc>$']
    expectedOutputs = ["^ho<prn><f/z><abc><1/2>$",
                       '^b<n><abc>$']