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 grit.xtb_reader''' | |
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 import util | |
18 from grit import xtb_reader | |
19 from grit.node import empty | |
20 | |
21 | |
22 class XtbReaderUnittest(unittest.TestCase): | |
23 def testParsing(self): | |
24 xtb_file = StringIO.StringIO('''<?xml version="1.0" encoding="UTF-8"?> | |
25 <!DOCTYPE translationbundle> | |
26 <translationbundle lang="fr"> | |
27 <translation id="5282608565720904145">Bingo.</translation> | |
28 <translation id="2955977306445326147">Bongo longo.</translation> | |
29 <translation id="238824332917605038">Hullo</translation> | |
30 <translation id="6629135689895381486"><ph name="PROBLEM_REPORT"/> peut <
ph name="START_LINK"/>utilisation excessive de majuscules<ph name="END_LINK"/>.<
/translation> | |
31 <translation id="7729135689895381486">Hello | |
32 this is another line | |
33 and another | |
34 | |
35 and another after a blank line.</translation> | |
36 </translationbundle>''') | |
37 | |
38 messages = [] | |
39 def Callback(id, structure): | |
40 messages.append((id, structure)) | |
41 xtb_reader.Parse(xtb_file, Callback) | |
42 self.failUnless(len(messages[0][1]) == 1) | |
43 self.failUnless(messages[3][1][0]) # PROBLEM_REPORT placeholder | |
44 self.failUnless(messages[4][0] == '7729135689895381486') | |
45 self.failUnless(messages[4][1][7][1] == 'and another after a blank line.') | |
46 | |
47 def testParsingIntoMessages(self): | |
48 root = util.ParseGrdForUnittest(''' | |
49 <messages> | |
50 <message name="ID_MEGA">Fantastic!</message> | |
51 <message name="ID_HELLO_USER">Hello <ph name="USERNAME">%s<ex>Joi</ex></
ph></message> | |
52 </messages>''') | |
53 | |
54 msgs, = root.GetChildrenOfType(empty.MessagesNode) | |
55 clique_mega = msgs.children[0].GetCliques()[0] | |
56 msg_mega = clique_mega.GetMessage() | |
57 clique_hello_user = msgs.children[1].GetCliques()[0] | |
58 msg_hello_user = clique_hello_user.GetMessage() | |
59 | |
60 xtb_file = StringIO.StringIO('''<?xml version="1.0" encoding="UTF-8"?> | |
61 <!DOCTYPE translationbundle> | |
62 <translationbundle lang="is"> | |
63 <translation id="%s">Meirihattar!</translation> | |
64 <translation id="%s">Saelir <ph name="USERNAME"/></translation> | |
65 </translationbundle>''' % (msg_mega.GetId(), msg_hello_user.GetId())) | |
66 | |
67 xtb_reader.Parse(xtb_file, | |
68 msgs.UberClique().GenerateXtbParserCallback('is')) | |
69 self.assertEqual('Meirihattar!', | |
70 clique_mega.MessageForLanguage('is').GetRealContent()) | |
71 self.failUnless('Saelir %s', | |
72 clique_hello_user.MessageForLanguage('is').GetRealContent()) | |
73 | |
74 def testIfNodesWithUseNameForId(self): | |
75 root = util.ParseGrdForUnittest(''' | |
76 <messages> | |
77 <message name="ID_BINGO" use_name_for_id="true">Bingo!</message> | |
78 </messages>''') | |
79 msgs, = root.GetChildrenOfType(empty.MessagesNode) | |
80 clique = msgs.children[0].GetCliques()[0] | |
81 msg = clique.GetMessage() | |
82 | |
83 xtb_file = StringIO.StringIO('''<?xml version="1.0" encoding="UTF-8"?> | |
84 <!DOCTYPE translationbundle> | |
85 <translationbundle lang="is"> | |
86 <if expr="is_linux"> | |
87 <translation id="ID_BINGO">Bongo!</translation> | |
88 </if> | |
89 <if expr="not is_linux"> | |
90 <translation id="ID_BINGO">Congo!</translation> | |
91 </if> | |
92 </translationbundle>''') | |
93 xtb_reader.Parse(xtb_file, | |
94 msgs.UberClique().GenerateXtbParserCallback('is'), | |
95 target_platform='darwin') | |
96 self.assertEqual('Congo!', clique.MessageForLanguage('is').GetRealContent()) | |
97 | |
98 def testParseLargeFile(self): | |
99 def Callback(id, structure): | |
100 pass | |
101 with open(util.PathFromRoot('grit/testdata/generated_resources_fr.xtb')) as
xtb: | |
102 xtb_reader.Parse(xtb, Callback) | |
103 | |
104 | |
105 if __name__ == '__main__': | |
106 unittest.main() | |
OLD | NEW |