Index: grit/tool/transl2tc_unittest.py |
=================================================================== |
--- grit/tool/transl2tc_unittest.py (revision 0) |
+++ grit/tool/transl2tc_unittest.py (revision 0) |
@@ -0,0 +1,130 @@ |
+#!/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 the 'grit transl2tc' tool.''' |
+ |
+ |
+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.tool import transl2tc |
+from grit import grd_reader |
+from grit import util |
+ |
+ |
+def MakeOptions(): |
+ from grit import grit_runner |
+ return grit_runner.Options() |
+ |
+ |
+class TranslationToTcUnittest(unittest.TestCase): |
+ |
+ def testOutput(self): |
+ buf = StringIO.StringIO() |
+ tool = transl2tc.TranslationToTc() |
+ translations = [ |
+ ['1', 'Hello USERNAME, how are you?'], |
+ ['12', 'Howdie doodie!'], |
+ ['123', 'Hello\n\nthere\n\nhow are you?'], |
+ ['1234', 'Hello is > goodbye but < howdie pardner'], |
+ ] |
+ tool.WriteTranslations(buf, translations) |
+ output = buf.getvalue() |
+ self.failUnless(output.strip() == ''' |
+1 Hello USERNAME, how are you? |
+12 Howdie doodie! |
+123 Hello |
+ |
+there |
+ |
+how are you? |
+1234 Hello is > goodbye but < howdie pardner |
+'''.strip()) |
+ |
+ def testExtractTranslations(self): |
+ path = util.PathFromRoot('grit/testdata') |
+ current_grd = grd_reader.Parse(StringIO.StringIO('''<?xml version="1.0" encoding="UTF-8"?> |
+ <grit latest_public_release="2" source_lang_id="en-US" current_release="3" base_dir="."> |
+ <release seq="3"> |
+ <messages> |
+ <message name="IDS_SIMPLE"> |
+ One |
+ </message> |
+ <message name="IDS_PLACEHOLDER"> |
+ <ph name="NUMBIRDS">%s<ex>3</ex></ph> birds |
+ </message> |
+ <message name="IDS_PLACEHOLDERS"> |
+ <ph name="ITEM">%d<ex>1</ex></ph> of <ph name="COUNT">%d<ex>3</ex></ph> |
+ </message> |
+ <message name="IDS_REORDERED_PLACEHOLDERS"> |
+ <ph name="ITEM">$1<ex>1</ex></ph> of <ph name="COUNT">$2<ex>3</ex></ph> |
+ </message> |
+ <message name="IDS_CHANGED"> |
+ This is the new version |
+ </message> |
+ <message name="IDS_TWIN_1">Hello</message> |
+ <message name="IDS_TWIN_2">Hello</message> |
+ <message name="IDS_NOT_TRANSLATEABLE" translateable="false">:</message> |
+ <message name="IDS_LONGER_TRANSLATED"> |
+ Removed document <ph name="FILENAME">$1<ex>c:\temp</ex></ph> |
+ </message> |
+ <message name="IDS_DIFFERENT_TWIN_1">Howdie</message> |
+ <message name="IDS_DIFFERENT_TWIN_2">Howdie</message> |
+ </messages> |
+ <structures> |
+ <structure type="dialog" name="IDD_ABOUTBOX" encoding="utf-16" file="klonk.rc" /> |
+ <structure type="menu" name="IDC_KLONKMENU" encoding="utf-16" file="klonk.rc" /> |
+ </structures> |
+ </release> |
+ </grit>'''), path) |
+ current_grd.RunGatherers(recursive=True) |
+ |
+ source_rc_path = util.PathFromRoot('grit/testdata/source.rc') |
+ source_rc = file(source_rc_path).read() |
+ transl_rc_path = util.PathFromRoot('grit/testdata/transl.rc') |
+ transl_rc = file(transl_rc_path).read() |
+ |
+ tool = transl2tc.TranslationToTc() |
+ output_buf = StringIO.StringIO() |
+ globopts = MakeOptions() |
+ globopts.verbose = True |
+ globopts.output_stream = output_buf |
+ tool.Setup(globopts, []) |
+ translations = tool.ExtractTranslations(current_grd, |
+ source_rc, source_rc_path, |
+ transl_rc, transl_rc_path) |
+ |
+ values = translations.values() |
+ output = output_buf.getvalue() |
+ |
+ self.failUnless('Ein' in values) |
+ self.failUnless('NUMBIRDS Vogeln' in values) |
+ self.failUnless('ITEM von COUNT' in values) |
+ self.failUnless(values.count('Hallo') == 1) |
+ self.failIf('Dass war die alte Version' in values) |
+ self.failIf(':' in values) |
+ self.failIf('Dokument FILENAME ist entfernt worden' in values) |
+ self.failIf('Nicht verwendet' in values) |
+ self.failUnless(('Howdie' in values or 'Hallo sagt man' in values) and not |
+ ('Howdie' in values and 'Hallo sagt man' in values)) |
+ |
+ self.failUnless('XX01XX&SkraXX02XX&HaettaXX03XXThetta er "Klonk" sem eg fylaXX04XXgonkurinnXX05XXKlonk && er "gott"XX06XX&HjalpXX07XX&Um...XX08XX' in values) |
+ |
+ self.failUnless('I lagi' in values) |
+ |
+ self.failUnless(output.count('Structure of message IDS_REORDERED_PLACEHOLDERS has changed')) |
+ self.failUnless(output.count('Message IDS_CHANGED has changed')) |
+ self.failUnless(output.count('Structure of message IDS_LONGER_TRANSLATED has changed')) |
+ self.failUnless(output.count('Two different translations for "Howdie"')) |
+ self.failUnless(output.count('IDD_DIFFERENT_LENGTH_IN_TRANSL has wrong # of cliques')) |
+ |
+ |
+if __name__ == '__main__': |
+ unittest.main() |
Property changes on: grit/tool/transl2tc_unittest.py |
___________________________________________________________________ |
Added: svn:eol-style |
+ LF |