| 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 |