Package python-module-logilab-mtconverter-0 ::
Package 8 ::
Package 2 ::
Package test ::
Module unittest_engine
|
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 from logilab.common.testlib import TestCase, unittest_main
19 import urllib
20 import re
21
22 from logilab.mtconverter import TransformData, TransformError
23 from logilab.mtconverter.transforms import text_to_text
24 from logilab.mtconverter.transform import Transform, TransformsChain
25 from logilab.mtconverter.engine import TransformEngine
26
27
28 -class HtmlToText(Transform):
29 inputs = ('text/html',)
30 output = 'text/plain'
31
32 - def __call__(self, orig):
33 orig = re.sub('<[^>]*>(?i)(?m)', '', orig)
34 return urllib.unquote(re.sub('\n+', '\n', orig)).strip()
35
36 - def _convert(self, data):
37 return self.__call__(data.data)
38
41
52
59
62
66
70
74
78
82
86
87
90
94
99
101 register = self.engine.add_transform
102 self.assertRaises(TransformError, register, TransformNoIO())
103 self.assertRaises(TransformError, register, BadTransformNoInput())
104 self.assertRaises(TransformError, register, BadTransformBadInput1())
105 self.assertRaises(TransformError, register, BadTransformBadInput2())
106 self.assertRaises(TransformError, register, BadTransformWildcardOutput())
107 self.assertRaises(TransformError, register, BadTransformBadOutput1())
108 self.assertRaises(TransformError, register, BadTransformBadOutput2())
109
116
118 self.register()
119 self.engine.add_transform(text_to_text())
120
121 data = TransformData("This is a test", 'text/x-diff', 'ascii')
122 out = self.engine.convert(data, 'text/plain')
123 self.failUnlessEqual(out.data, "This is a test")
124 self.failUnlessEqual(out.mimetype, 'text/plain')
125 self.failUnlessEqual(out.encoding, 'ascii')
126
127
128 data = self.engine.convert(html_data(), "text/plain")
129 self.failUnlessEqual(data.data, "foo")
130 self.failUnlessEqual(data.mimetype, 'text/plain')
131 self.failUnlessEqual(data.encoding, 'ascii')
132
133 self.engine.remove_transform('HtmlToText')
134 self.engine.remove_transform('FooToBar')
135 self.engine.add_transform(HtmlToTextWithEncoding())
136 data = self.engine.convert(html_data(), "text/plain")
137 self.failUnlessEqual(data.mimetype, 'text/plain')
138 self.failUnlessEqual(data.encoding, 'utf8')
139
140 self.engine.add_transform(FooToBar())
141 data = self.engine.convert(html_data(), 'text/bar')
142 self.failUnlessEqual(data.data, "<b>bar</b>")
143
152
154 data = TransformData("This is a test", 'text/plain', 'ascii')
155 out = self.engine.convert(data, 'text/plain')
156 self.failUnlessEqual(out.data, "This is a test")
157 self.failUnlessEqual(out.mimetype, 'text/plain')
158 self.failUnlessEqual(out.encoding, 'ascii')
159
160 self.engine.add_transform(HtmlIdTransform())
161 out = self.engine.convert(html_data(), 'text/html')
162 self.failUnlessEqual(out.data, "<b>foo</b> transformed")
163 self.failUnlessEqual(out.mimetype, 'text/html')
164 self.failUnlessEqual(out.encoding, 'ascii')
165
166
173
174
175 if __name__ == '__main__':
176 unittest_main()
177