Index: grit/tool/android2grd_unittest.py |
=================================================================== |
--- grit/tool/android2grd_unittest.py (revision 202) |
+++ grit/tool/android2grd_unittest.py (working copy) |
@@ -1,180 +0,0 @@ |
-#!/usr/bin/env python |
-# Copyright (c) 2012 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.tool.android2grd''' |
- |
-import os |
-import sys |
-if __name__ == '__main__': |
- sys.path.append(os.path.join(os.path.dirname(__file__), '../..')) |
- |
-import unittest |
-import xml.dom.minidom |
- |
-from grit import grd_reader |
-from grit import util |
-from grit.node import empty |
-from grit.node import io |
-from grit.node import message |
-from grit.node import misc |
-from grit.tool import android2grd |
- |
- |
-class Android2GrdUnittest(unittest.TestCase): |
- |
- def __Parse(self, xml_string): |
- return xml.dom.minidom.parseString(xml_string).childNodes[0] |
- |
- def testCreateTclibMessage(self): |
- tool = android2grd.Android2Grd() |
- msg = tool.CreateTclibMessage(self.__Parse(r''' |
- <string name="simple">A simple string</string>''')) |
- self.assertEqual(msg.GetRealContent(), 'A simple string') |
- msg = tool.CreateTclibMessage(self.__Parse(r''' |
- <string name="outer_whitespace"> |
- Strip leading/trailing whitespace |
- </string>''')) |
- self.assertEqual(msg.GetRealContent(), 'Strip leading/trailing whitespace') |
- msg = tool.CreateTclibMessage(self.__Parse(r''' |
- <string name="inner_whitespace">Fold multiple spaces</string>''')) |
- self.assertEqual(msg.GetRealContent(), 'Fold multiple spaces') |
- msg = tool.CreateTclibMessage(self.__Parse(r''' |
- <string name="escaped_spaces">Retain \n escaped\t spaces</string>''')) |
- self.assertEqual(msg.GetRealContent(), 'Retain \n escaped\t spaces') |
- msg = tool.CreateTclibMessage(self.__Parse(r''' |
- <string name="quotes"> " Quotes preserve |
- whitespace" but only for "enclosed elements " |
- </string>''')) |
- self.assertEqual(msg.GetRealContent(), ''' Quotes preserve |
- whitespace but only for enclosed elements ''') |
- msg = tool.CreateTclibMessage(self.__Parse( |
- r'''<string name="escaped_characters">Escaped characters: \"\'\\\t\n''' |
- '</string>')) |
- self.assertEqual(msg.GetRealContent(), '''Escaped characters: "'\\\t\n''') |
- msg = tool.CreateTclibMessage(self.__Parse( |
- '<string xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2" ' |
- 'name="placeholders">' |
- 'Open <xliff:g id="FILENAME" example="internet.html">%s</xliff:g>?' |
- '</string>')) |
- self.assertEqual(msg.GetRealContent(), 'Open %s?') |
- self.assertEqual(len(msg.GetPlaceholders()), 1) |
- self.assertEqual(msg.GetPlaceholders()[0].presentation, 'FILENAME') |
- self.assertEqual(msg.GetPlaceholders()[0].original, '%s') |
- self.assertEqual(msg.GetPlaceholders()[0].example, 'internet.html') |
- msg = tool.CreateTclibMessage(self.__Parse(r''' |
- <string name="comment">Contains a <!-- ignore this --> comment |
- </string>''')) |
- self.assertEqual(msg.GetRealContent(), 'Contains a comment') |
- |
- def testIsTranslatable(self): |
- tool = android2grd.Android2Grd() |
- string_el = self.__Parse('<string>Hi</string>') |
- self.assertTrue(tool.IsTranslatable(string_el)) |
- string_el = self.__Parse( |
- '<string translatable="true">Hi</string>') |
- self.assertTrue(tool.IsTranslatable(string_el)) |
- string_el = self.__Parse( |
- '<string translatable="false">Hi</string>') |
- self.assertFalse(tool.IsTranslatable(string_el)) |
- |
- def __ParseAndroidXml(self, options = []): |
- tool = android2grd.Android2Grd() |
- |
- tool.ParseOptions(options) |
- |
- android_path = util.PathFromRoot('grit/testdata/android.xml') |
- with open(android_path) as android_file: |
- android_dom = xml.dom.minidom.parse(android_file) |
- |
- grd = tool.AndroidDomToGrdDom(android_dom) |
- self.assertTrue(isinstance(grd, misc.GritNode)) |
- |
- return grd |
- |
- def testAndroidDomToGrdDom(self): |
- grd = self.__ParseAndroidXml(['--languages', 'en-US,en-GB,ru']) |
- |
- # Check that the structure of the GritNode is as expected. |
- messages = grd.GetChildrenOfType(message.MessageNode) |
- translations = grd.GetChildrenOfType(empty.TranslationsNode) |
- files = grd.GetChildrenOfType(io.FileNode) |
- |
- self.assertEqual(len(translations), 1) |
- self.assertEqual(len(files), 3) |
- self.assertEqual(len(messages), 5) |
- |
- # Check that a message node is constructed correctly. |
- msg = filter(lambda x: x.GetTextualIds()[0] == "IDS_PLACEHOLDERS", messages) |
- self.assertTrue(msg) |
- msg = msg[0] |
- |
- self.assertTrue(msg.IsTranslateable()) |
- self.assertEqual(msg.attrs["desc"], "A string with placeholder.") |
- |
- def testTranslatableAttribute(self): |
- grd = self.__ParseAndroidXml([]) |
- messages = grd.GetChildrenOfType(message.MessageNode) |
- msgs = filter(lambda x: x.GetTextualIds()[0] == "IDS_CONSTANT", messages) |
- self.assertTrue(msgs) |
- self.assertFalse(msgs[0].IsTranslateable()) |
- |
- def testTranslations(self): |
- grd = self.__ParseAndroidXml(['--languages', 'en-US,en-GB,ru,id']) |
- |
- files = grd.GetChildrenOfType(io.FileNode) |
- us_file = filter(lambda x: x.attrs['lang'] == 'en-US', files) |
- self.assertTrue(us_file) |
- self.assertEqual(us_file[0].GetInputPath(), |
- 'chrome_android_strings_en-US.xtb') |
- |
- id_file = filter(lambda x: x.attrs['lang'] == 'id', files) |
- self.assertTrue(id_file) |
- self.assertEqual(id_file[0].GetInputPath(), |
- 'chrome_android_strings_id.xtb') |
- |
- def testOutputs(self): |
- grd = self.__ParseAndroidXml(['--languages', 'en-US,ru,id', |
- '--rc-dir', 'rc/dir', |
- '--header-dir', 'header/dir', |
- '--xtb-dir', 'xtb/dir', |
- '--xml-dir', 'xml/dir']) |
- |
- outputs = grd.GetChildrenOfType(io.OutputNode) |
- self.assertEqual(len(outputs), 7) |
- |
- header_outputs = filter(lambda x: x.GetType() == 'rc_header', outputs) |
- rc_outputs = filter(lambda x: x.GetType() == 'rc_all', outputs) |
- xml_outputs = filter(lambda x: x.GetType() == 'android', outputs) |
- |
- self.assertEqual(len(header_outputs), 1) |
- self.assertEqual(len(rc_outputs), 3) |
- self.assertEqual(len(xml_outputs), 3) |
- |
- # The header node should have an "<emit>" child and the proper filename. |
- self.assertTrue(header_outputs[0].GetChildrenOfType(io.EmitNode)) |
- self.assertEqual(util.normpath(header_outputs[0].GetFilename()), |
- util.normpath('header/dir/chrome_android_strings.h')) |
- |
- id_rc = filter(lambda x: x.GetLanguage() == 'id', rc_outputs) |
- id_xml = filter(lambda x: x.GetLanguage() == 'id', xml_outputs) |
- self.assertTrue(id_rc) |
- self.assertTrue(id_xml) |
- self.assertEqual(util.normpath(id_rc[0].GetFilename()), |
- util.normpath('rc/dir/chrome_android_strings_id.rc')) |
- self.assertEqual(util.normpath(id_xml[0].GetFilename()), |
- util.normpath('xml/dir/values-in/strings.xml')) |
- |
- us_rc = filter(lambda x: x.GetLanguage() == 'en-US', rc_outputs) |
- us_xml = filter(lambda x: x.GetLanguage() == 'en-US', xml_outputs) |
- self.assertTrue(us_rc) |
- self.assertTrue(us_xml) |
- self.assertEqual(util.normpath(us_rc[0].GetFilename()), |
- util.normpath('rc/dir/chrome_android_strings_en-US.rc')) |
- self.assertEqual(util.normpath(us_xml[0].GetFilename()), |
- util.normpath('xml/dir/values-en-rUS/strings.xml')) |
- |
- |
-if __name__ == '__main__': |
- unittest.main() |