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.node.message''' | |
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 unittest | |
15 import StringIO | |
16 | |
17 from grit import tclib | |
18 from grit import util | |
19 from grit.node import message | |
20 | |
21 class MessageUnittest(unittest.TestCase): | |
22 def testMessage(self): | |
23 root = util.ParseGrdForUnittest(''' | |
24 <messages> | |
25 <message name="IDS_GREETING" | |
26 desc="Printed to greet the currently logged in user"> | |
27 Hello <ph name="USERNAME">%s<ex>Joi</ex></ph>, how are you doing today? | |
28 </message> | |
29 </messages>''') | |
30 msg, = root.GetChildrenOfType(message.MessageNode) | |
31 cliques = msg.GetCliques() | |
32 content = cliques[0].GetMessage().GetPresentableContent() | |
33 self.failUnless(content == 'Hello USERNAME, how are you doing today?') | |
34 | |
35 def testMessageWithWhitespace(self): | |
36 root = util.ParseGrdForUnittest("""\ | |
37 <messages> | |
38 <message name="IDS_BLA" desc=""> | |
39 ''' Hello there <ph name="USERNAME">%s</ph> ''' | |
40 </message> | |
41 </messages>""") | |
42 msg, = root.GetChildrenOfType(message.MessageNode) | |
43 content = msg.GetCliques()[0].GetMessage().GetPresentableContent() | |
44 self.failUnless(content == 'Hello there USERNAME') | |
45 self.failUnless(msg.ws_at_start == ' ') | |
46 self.failUnless(msg.ws_at_end == ' ') | |
47 | |
48 def testConstruct(self): | |
49 msg = tclib.Message(text=" Hello USERNAME, how are you? BINGO\t\t", | |
50 placeholders=[tclib.Placeholder('USERNAME', '%s', 'Joi')
, | |
51 tclib.Placeholder('BINGO', '%d', '11')]) | |
52 msg_node = message.MessageNode.Construct(None, msg, 'BINGOBONGO') | |
53 self.failUnless(msg_node.children[0].name == 'ph') | |
54 self.failUnless(msg_node.children[0].children[0].name == 'ex') | |
55 self.failUnless(msg_node.children[0].children[0].GetCdata() == 'Joi') | |
56 self.failUnless(msg_node.children[1].children[0].GetCdata() == '11') | |
57 self.failUnless(msg_node.ws_at_start == ' ') | |
58 self.failUnless(msg_node.ws_at_end == '\t\t') | |
59 | |
60 def testUnicodeConstruct(self): | |
61 text = u'Howdie \u00fe' | |
62 msg = tclib.Message(text=text) | |
63 msg_node = message.MessageNode.Construct(None, msg, 'BINGOBONGO') | |
64 msg_from_node = msg_node.GetCdata() | |
65 self.failUnless(msg_from_node == text) | |
66 | |
67 def testFormatterData(self): | |
68 root = util.ParseGrdForUnittest("""\ | |
69 <messages> | |
70 <message name="IDS_BLA" desc="" formatter_data=" foo=123 bar qux=low"> | |
71 Text | |
72 </message> | |
73 </messages>""") | |
74 msg, = root.GetChildrenOfType(message.MessageNode) | |
75 expected_formatter_data = { | |
76 'foo': '123', | |
77 'bar': '', | |
78 'qux': 'low'} | |
79 | |
80 # Can't use assertDictEqual, not available in Python 2.6, so do it | |
81 # by hand. | |
82 self.failUnlessEqual(len(expected_formatter_data), | |
83 len(msg.formatter_data)) | |
84 for key in expected_formatter_data: | |
85 self.failUnlessEqual(expected_formatter_data[key], | |
86 msg.formatter_data[key]) | |
87 | |
88 | |
89 if __name__ == '__main__': | |
90 unittest.main() | |
OLD | NEW |