OLD | NEW |
| (Empty) |
1 #!/usr/bin/env python | |
2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | |
3 # Use of this source code is governed by a BSD-style license that can be | |
4 # found in the LICENSE file. | |
5 | |
6 '''Unit tests for the 'grit transl2tc' tool.''' | |
7 | |
8 | |
9 import os | |
10 import sys | |
11 if __name__ == '__main__': | |
12 sys.path.append(os.path.join(os.path.dirname(__file__), '../..')) | |
13 | |
14 import StringIO | |
15 import unittest | |
16 | |
17 from grit.tool import transl2tc | |
18 from grit import grd_reader | |
19 from grit import util | |
20 | |
21 | |
22 def MakeOptions(): | |
23 from grit import grit_runner | |
24 return grit_runner.Options() | |
25 | |
26 | |
27 class TranslationToTcUnittest(unittest.TestCase): | |
28 | |
29 def testOutput(self): | |
30 buf = StringIO.StringIO() | |
31 tool = transl2tc.TranslationToTc() | |
32 translations = [ | |
33 ['1', 'Hello USERNAME, how are you?'], | |
34 ['12', 'Howdie doodie!'], | |
35 ['123', 'Hello\n\nthere\n\nhow are you?'], | |
36 ['1234', 'Hello is > goodbye but < howdie pardner'], | |
37 ] | |
38 tool.WriteTranslations(buf, translations) | |
39 output = buf.getvalue() | |
40 self.failUnless(output.strip() == ''' | |
41 1 Hello USERNAME, how are you? | |
42 12 Howdie doodie! | |
43 123 Hello | |
44 | |
45 there | |
46 | |
47 how are you? | |
48 1234 Hello is > goodbye but < howdie pardner | |
49 '''.strip()) | |
50 | |
51 def testExtractTranslations(self): | |
52 path = util.PathFromRoot('grit/testdata') | |
53 current_grd = grd_reader.Parse(StringIO.StringIO('''<?xml version="1.0" enco
ding="UTF-8"?> | |
54 <grit latest_public_release="2" source_lang_id="en-US" current_release="3"
base_dir="."> | |
55 <release seq="3"> | |
56 <messages> | |
57 <message name="IDS_SIMPLE"> | |
58 One | |
59 </message> | |
60 <message name="IDS_PLACEHOLDER"> | |
61 <ph name="NUMBIRDS">%s<ex>3</ex></ph> birds | |
62 </message> | |
63 <message name="IDS_PLACEHOLDERS"> | |
64 <ph name="ITEM">%d<ex>1</ex></ph> of <ph name="COUNT">%d<ex>3</ex>
</ph> | |
65 </message> | |
66 <message name="IDS_REORDERED_PLACEHOLDERS"> | |
67 <ph name="ITEM">$1<ex>1</ex></ph> of <ph name="COUNT">$2<ex>3</ex>
</ph> | |
68 </message> | |
69 <message name="IDS_CHANGED"> | |
70 This is the new version | |
71 </message> | |
72 <message name="IDS_TWIN_1">Hello</message> | |
73 <message name="IDS_TWIN_2">Hello</message> | |
74 <message name="IDS_NOT_TRANSLATEABLE" translateable="false">:</messa
ge> | |
75 <message name="IDS_LONGER_TRANSLATED"> | |
76 Removed document <ph name="FILENAME">$1<ex>c:\temp</ex></ph> | |
77 </message> | |
78 <message name="IDS_DIFFERENT_TWIN_1">Howdie</message> | |
79 <message name="IDS_DIFFERENT_TWIN_2">Howdie</message> | |
80 </messages> | |
81 <structures> | |
82 <structure type="dialog" name="IDD_ABOUTBOX" encoding="utf-16" file=
"klonk.rc" /> | |
83 <structure type="menu" name="IDC_KLONKMENU" encoding="utf-16" file="
klonk.rc" /> | |
84 </structures> | |
85 </release> | |
86 </grit>'''), path) | |
87 current_grd.SetOutputLanguage('en') | |
88 current_grd.RunGatherers() | |
89 | |
90 source_rc_path = util.PathFromRoot('grit/testdata/source.rc') | |
91 source_rc = util.ReadFile(source_rc_path, util.RAW_TEXT) | |
92 transl_rc_path = util.PathFromRoot('grit/testdata/transl.rc') | |
93 transl_rc = util.ReadFile(transl_rc_path, util.RAW_TEXT) | |
94 | |
95 tool = transl2tc.TranslationToTc() | |
96 output_buf = StringIO.StringIO() | |
97 globopts = MakeOptions() | |
98 globopts.verbose = True | |
99 globopts.output_stream = output_buf | |
100 tool.Setup(globopts, []) | |
101 translations = tool.ExtractTranslations(current_grd, | |
102 source_rc, source_rc_path, | |
103 transl_rc, transl_rc_path) | |
104 | |
105 values = translations.values() | |
106 output = output_buf.getvalue() | |
107 | |
108 self.failUnless('Ein' in values) | |
109 self.failUnless('NUMBIRDS Vogeln' in values) | |
110 self.failUnless('ITEM von COUNT' in values) | |
111 self.failUnless(values.count('Hallo') == 1) | |
112 self.failIf('Dass war die alte Version' in values) | |
113 self.failIf(':' in values) | |
114 self.failIf('Dokument FILENAME ist entfernt worden' in values) | |
115 self.failIf('Nicht verwendet' in values) | |
116 self.failUnless(('Howdie' in values or 'Hallo sagt man' in values) and not | |
117 ('Howdie' in values and 'Hallo sagt man' in values)) | |
118 | |
119 self.failUnless('XX01XX&SkraXX02XX&HaettaXX03XXThetta er "Klonk" sem eg fyla
XX04XXgonkurinnXX05XXKlonk && er [good]XX06XX&HjalpXX07XX&Um...XX08XX' in values
) | |
120 | |
121 self.failUnless('I lagi' in values) | |
122 | |
123 self.failUnless(output.count('Structure of message IDS_REORDERED_PLACEHOLDER
S has changed')) | |
124 self.failUnless(output.count('Message IDS_CHANGED has changed')) | |
125 self.failUnless(output.count('Structure of message IDS_LONGER_TRANSLATED has
changed')) | |
126 self.failUnless(output.count('Two different translations for "Howdie"')) | |
127 self.failUnless(output.count('IDD_DIFFERENT_LENGTH_IN_TRANSL has wrong # of
cliques')) | |
128 | |
129 | |
130 if __name__ == '__main__': | |
131 unittest.main() | |
OLD | NEW |