| Index: grit/xtb_reader_unittest.py
 | 
| ===================================================================
 | 
| --- grit/xtb_reader_unittest.py	(revision 0)
 | 
| +++ grit/xtb_reader_unittest.py	(revision 0)
 | 
| @@ -0,0 +1,83 @@
 | 
| +#!/usr/bin/python2.4
 | 
| +# Copyright (c) 2011 The Chromium Authors. All rights reserved.
 | 
| +# Use of this source code is governed by a BSD-style license that can be
 | 
| +# found in the LICENSE file.
 | 
| +
 | 
| +'''Unit tests for grit.xtb_reader'''
 | 
| +
 | 
| +
 | 
| +import os
 | 
| +import sys
 | 
| +if __name__ == '__main__':
 | 
| +  sys.path.append(os.path.join(os.path.dirname(sys.argv[0]), '..'))
 | 
| +
 | 
| +import StringIO
 | 
| +import unittest
 | 
| +
 | 
| +from grit import xtb_reader
 | 
| +from grit import clique
 | 
| +from grit import grd_reader
 | 
| +from grit import tclib
 | 
| +from grit import util
 | 
| +
 | 
| +
 | 
| +class XtbReaderUnittest(unittest.TestCase):
 | 
| +  def testParsing(self):
 | 
| +    xtb_file = StringIO.StringIO('''<?xml version="1.0" encoding="UTF-8"?>
 | 
| +      <!DOCTYPE translationbundle>
 | 
| +      <translationbundle lang="fr">
 | 
| +        <translation id="5282608565720904145">Bingo.</translation>
 | 
| +        <translation id="2955977306445326147">Bongo longo.</translation>
 | 
| +        <translation id="238824332917605038">Hullo</translation>
 | 
| +        <translation id="6629135689895381486"><ph name="PROBLEM_REPORT"/> peut <ph name="START_LINK"/>utilisation excessive de majuscules<ph name="END_LINK"/>.</translation>
 | 
| +        <translation id="7729135689895381486">Hello
 | 
| +this is another line
 | 
| +and another
 | 
| +
 | 
| +and another after a blank line.</translation>
 | 
| +      </translationbundle>''')
 | 
| +
 | 
| +    messages = []
 | 
| +    def Callback(id, structure):
 | 
| +      messages.append((id, structure))
 | 
| +    xtb_reader.Parse(xtb_file, Callback)
 | 
| +    self.failUnless(len(messages[0][1]) == 1)
 | 
| +    self.failUnless(messages[3][1][0])  # PROBLEM_REPORT placeholder
 | 
| +    self.failUnless(messages[4][0] == '7729135689895381486')
 | 
| +    self.failUnless(messages[4][1][7][1] == 'and another after a blank line.')
 | 
| +
 | 
| +  def testParsingIntoMessages(self):
 | 
| +    grd = grd_reader.Parse(StringIO.StringIO('''<?xml version="1.0" encoding="UTF-8"?>
 | 
| +      <messages>
 | 
| +        <message name="ID_MEGA">Fantastic!</message>
 | 
| +        <message name="ID_HELLO_USER">Hello <ph name="USERNAME">%s<ex>Joi</ex></ph></message>
 | 
| +      </messages>'''), dir='.', flexible_root=True)
 | 
| +
 | 
| +    clique_mega = grd.children[0].GetCliques()[0]
 | 
| +    msg_mega = clique_mega.GetMessage()
 | 
| +    clique_hello_user = grd.children[1].GetCliques()[0]
 | 
| +    msg_hello_user = clique_hello_user.GetMessage()
 | 
| +
 | 
| +    xtb_file = StringIO.StringIO('''<?xml version="1.0" encoding="UTF-8"?>
 | 
| +      <!DOCTYPE translationbundle>
 | 
| +      <translationbundle lang="is">
 | 
| +        <translation id="%s">Meirihattar!</translation>
 | 
| +        <translation id="%s">Saelir <ph name="USERNAME"/></translation>
 | 
| +      </translationbundle>''' % (msg_mega.GetId(), msg_hello_user.GetId()))
 | 
| +
 | 
| +    xtb_reader.Parse(xtb_file, grd.UberClique().GenerateXtbParserCallback('is'))
 | 
| +    self.failUnless(clique_mega.MessageForLanguage('is').GetRealContent() ==
 | 
| +                    'Meirihattar!')
 | 
| +    self.failUnless(clique_hello_user.MessageForLanguage('is').GetRealContent() ==
 | 
| +                    'Saelir %s')
 | 
| +
 | 
| +  def testParseLargeFile(self):
 | 
| +    def Callback(id, structure):
 | 
| +      pass
 | 
| +    xtb = file(util.PathFromRoot('grit/testdata/generated_resources_fr.xtb'))
 | 
| +    xtb_reader.Parse(xtb, Callback)
 | 
| +    xtb.close()
 | 
| +
 | 
| +
 | 
| +if __name__ == '__main__':
 | 
| +  unittest.main()
 | 
| 
 | 
| Property changes on: grit/xtb_reader_unittest.py
 | 
| ___________________________________________________________________
 | 
| Added: svn:eol-style
 | 
|    + LF
 | 
| 
 | 
| 
 |