class TestImporterAndroid(unittest.TestCase): def _load_resources(self, language, load_resources_method): """ Use AndroidImporter object and load resources from XML files. It calls load_resources_method on an AndroidImporter object, passing language and parsed XML tree. Param load_resources_method is one of: * AndroidImporter._load_strings * AndroidImporter._load_string_arrays * AndroidImporter._load_quantity_strings Return a dictionary mapping language codes to resource arrays. """ imp = AndroidImporter() xml_file_path = self.config.resource_file_path(language) xml_file = open(xml_file_path) xml_tree = etree.parse(xml_file) if load_resources_method == AndroidImporter._load_strings: return imp._load_strings(language, xml_tree) elif load_resources_method == AndroidImporter._load_string_arrays: return imp._load_string_arrays(language, xml_tree) elif load_resources_method == AndroidImporter._load_quantity_strings: return imp._load_quantity_strings(language, xml_tree) else: self.fail("This method is not allowed: %s" % load_resources_method) def setUp(self): """ Initialize configuration data used in all other tests. """ # load project config self.config = Config(reference.project_root_path, False, reference.config_file_path) # check if root directory exists self.assertTrue( os.path.isdir( self.config.root ) ) # check if all XML files exist for language in self.config.languages: filename = self.config.resource_file_path(language) self.assertTrue( os.path.isfile(filename) ) def testLoadResourcesHelperFunctionWorks(self): for language in self.config.languages: strings = self._load_resources(language, AndroidImporter._load_strings) arrays = self._load_resources(language, AndroidImporter._load_string_arrays) quantity = self._load_resources( language, AndroidImporter._load_quantity_strings) self.assertTrue( len(strings) > 0 ) self.assertTrue( len(arrays) > 0 ) self.assertTrue( len(quantity) > 0 ) def testLoadsAllStringsForAllLanguages(self): for language in self.config.languages: strings = self._load_resources( language, AndroidImporter._load_strings ) self.assertEqual( len(strings), reference.string_count[language] ) def testLoadsAllStringArraysForAllLanguages(self): for language in self.config.languages: arrays = self._load_resources( language, AndroidImporter._load_string_arrays ) self.assertEqual( len(arrays), reference.string_array_count[language] ) def testLoadsAllQuantityStringsForAllLanguages(self): for language in self.config.languages: arrays = self._load_resources( language, AndroidImporter._load_quantity_strings ) self.assertEqual( len(arrays), reference.quantity_strings_count[language] )
class TestImporterAndroid(unittest.TestCase): def _load_resources(self, language, load_resources_method): """ Use AndroidImporter object and load resources from XML files. It calls load_resources_method on an AndroidImporter object, passing language and parsed XML tree. Param load_resources_method is one of: * AndroidImporter._load_strings * AndroidImporter._load_string_arrays * AndroidImporter._load_quantity_strings Return a dictionary mapping language codes to resource arrays. """ imp = AndroidImporter() xml_file_path = self.config.resource_file_path(language) xml_file = open(xml_file_path) xml_tree = etree.parse(xml_file) if load_resources_method == AndroidImporter._load_strings: return imp._load_strings(language, xml_tree) elif load_resources_method == AndroidImporter._load_string_arrays: return imp._load_string_arrays(language, xml_tree) elif load_resources_method == AndroidImporter._load_quantity_strings: return imp._load_quantity_strings(language, xml_tree) else: self.fail("This method is not allowed: %s" % load_resources_method) def setUp(self): """ Initialize configuration data used in all other tests. """ # load project config self.config = Config(reference.project_root_path, False, reference.config_file_path) # check if root directory exists self.assertTrue(os.path.isdir(self.config.root)) # check if all XML files exist for language in self.config.languages: filename = self.config.resource_file_path(language) self.assertTrue(os.path.isfile(filename)) def testLoadResourcesHelperFunctionWorks(self): for language in self.config.languages: strings = self._load_resources(language, AndroidImporter._load_strings) arrays = self._load_resources(language, AndroidImporter._load_string_arrays) quantity = self._load_resources( language, AndroidImporter._load_quantity_strings) self.assertTrue(len(strings) > 0) self.assertTrue(len(arrays) > 0) self.assertTrue(len(quantity) > 0) def testLoadsAllStringsForAllLanguages(self): for language in self.config.languages: strings = self._load_resources(language, AndroidImporter._load_strings) self.assertEqual(len(strings), reference.string_count[language]) def testLoadsAllStringArraysForAllLanguages(self): for language in self.config.languages: arrays = self._load_resources(language, AndroidImporter._load_string_arrays) self.assertEqual(len(arrays), reference.string_array_count[language]) def testLoadsAllQuantityStringsForAllLanguages(self): for language in self.config.languages: arrays = self._load_resources( language, AndroidImporter._load_quantity_strings) self.assertEqual(len(arrays), reference.quantity_strings_count[language])
string_arrays = sheet.get_string_arrays() quantity_strings = sheet.get_quantity_strings() Log.print( 'Project root: %s' % config.root ) Log.print( 'Generator: %s' % config.generator ) Log.print( 'Loader: %s' % loader ) Log.print( 'Languages: %s' % ', '.join(config.languages) ) Log.print( 'ID key: %s' % key_id) Log.print( 'Sorted by key: %s' % config.sorted) Log.print( 'Generating language resources...' ) generator = Factory.create_generator(config.generator) generator.sorted = config.sorted generator.add_resources(strings) generator.add_resources(string_arrays) generator.add_resources(quantity_strings) # for each language create a platform-specific generator and # generate resource files for language in config.languages: generator.generate(language) generator.write( config.resource_file_path(language) ) if config.verbose: params = (language, config.resource_file_path(language), len(strings), len(string_arrays), len(quantity_strings) ) Log.print(' * Language %s, file: %s, %s strings, %s arrays, %s plurals' % params) # Very generic error handling except MstException as e: print("ERROR: %s" % e) exit(1)