fix git support for v1.5.3 (or higher) by setting "--work-tree"
[translate_toolkit.git] / storage / test_tmx.py
blob48dcc8fc0ed90470d6812789b667c39e9dd522cb
1 #!/usr/bin/env python
3 from translate.storage import tmx
4 from translate.storage import test_base
5 from translate.misc import wStringIO
7 class TestTMXUnit(test_base.TestTranslationUnit):
8 UnitClass = tmx.tmxunit
10 class TestTMXUnitFromParsedString(TestTMXUnit):
11 tmxsource = '''<?xml version="1.0" encoding="utf-8"?>
12 <!DOCTYPE tmx
13 SYSTEM 'tmx14.dtd'>
14 <tmx version="1.4">
15 <header adminlang="en" creationtool="Translate Toolkit - po2tmx" creationtoolversion="1.0beta" datatype="PlainText" o-tmf="UTF-8" segtype="sentence" srclang="en"/>
16 <body>
17 <tu>
18 <tuv xml:lang="en">
19 <seg>Test String</seg>
20 </tuv>
21 </tu>
22 </body>
23 </tmx>'''
25 def setup_method(self, method):
26 store = tmx.tmxfile.parsestring(self.tmxsource)
27 self.unit = store.units[0]
29 class TestTMXfile(test_base.TestTranslationStore):
30 StoreClass = tmx.tmxfile
32 def tmxparse(self, tmxsource):
33 """helper that parses tmx source without requiring files"""
34 dummyfile = wStringIO.StringIO(tmxsource)
35 print tmxsource
36 tmxfile = tmx.tmxfile(dummyfile)
37 return tmxfile
39 def test_translate(self):
40 tmxfile = tmx.tmxfile()
41 assert tmxfile.translate("Anything") is None
42 tmxfile.addtranslation("A string of characters", "en", "'n String karakters", "af")
43 assert tmxfile.translate("A string of characters") == "'n String karakters"
45 def test_addtranslation(self):
46 """tests that addtranslation() stores strings correctly"""
47 tmxfile = tmx.tmxfile()
48 tmxfile.addtranslation("A string of characters", "en", "'n String karakters", "af")
49 newfile = self.tmxparse(str(tmxfile))
50 print str(tmxfile)
51 assert newfile.translate("A string of characters") == "'n String karakters"
53 def test_withnewlines(self):
54 """test addtranslation() with newlines"""
55 tmxfile = tmx.tmxfile()
56 tmxfile.addtranslation("First line\nSecond line", "en", "Eerste lyn\nTweede lyn", "af")
57 newfile = self.tmxparse(str(tmxfile))
58 print str(tmxfile)
59 assert newfile.translate("First line\nSecond line") == "Eerste lyn\nTweede lyn"
61 def test_xmlentities(self):
62 """Test that the xml entities '&' and '<' are escaped correctly"""
63 tmxfile = tmx.tmxfile()
64 tmxfile.addtranslation("Mail & News", "en", "Nuus & pos", "af")
65 tmxfile.addtranslation("Five < ten", "en", "Vyf < tien", "af")
66 xmltext = str(tmxfile)
67 print "The generated xml:"
68 print xmltext
69 assert tmxfile.translate('Mail & News') == 'Nuus & pos'
70 assert xmltext.index('Mail &amp; News')
71 assert xmltext.find('Mail & News') == -1
72 assert tmxfile.translate('Five < ten') == 'Vyf < tien'
73 assert xmltext.index('Five &lt; ten')
74 assert xmltext.find('Five < ten') == -1