@Test public void testMoveKeyTask() { if (I18nModule.isTransToolEnabled()) { prepareDevToolTests(); Locale testLocale = i18nMgr.getLocaleOrDefault("de"); String ktm = "key.to.move"; i18nMgr.setCachingEnabled(true); Properties sourcePropResolved = i18nMgr.getResolvedProperties(testLocale, testSourceBundle); Properties sourceProp = i18nMgr.getPropertiesWithoutResolvingRecursively(testLocale, testSourceBundle); String matchString = sourceProp.getProperty(ktm); assertTrue(sourcePropResolved.getProperty("key.to.stay2").indexOf(matchString) != -1); tDMgr.moveKeyToOtherBundle(testSourceBundle, testTargetBundle, ktm); sourceProp = i18nMgr.getPropertiesWithoutResolvingRecursively(testLocale, testSourceBundle); Properties targetProp = i18nMgr.getPropertiesWithoutResolvingRecursively(testLocale, testTargetBundle); assertNull(sourceProp.getProperty(ktm)); assertNotNull(targetProp.getProperty(ktm)); Properties sourceMetaProp = i18nMgr.getPropertiesWithoutResolvingRecursively(null, testSourceBundle); Properties targetMetaProp = i18nMgr.getPropertiesWithoutResolvingRecursively(null, testTargetBundle); assertNull(sourceMetaProp.getProperty(ktm + I18nManager.METADATA_ANNOTATION_POSTFIX)); assertNull(sourceMetaProp.getProperty(ktm + I18nManager.METADATA_KEY_PRIORITY_POSTFIX)); assertTrue(targetMetaProp.containsKey(ktm + I18nManager.METADATA_ANNOTATION_POSTFIX)); assertEquals( "100", targetMetaProp.getProperty(ktm + I18nManager.METADATA_KEY_PRIORITY_POSTFIX)); // check for changed references in value // if correctly done, should still be resolvable assertTrue(sourcePropResolved.getProperty("key.to.stay2").indexOf(matchString) != -1); tDMgr.logToFile("moveKey"); } }
/** Test methods i18nManager.countI18nItems() and i18nManager.countBundles() */ @Ignore @Test public void testCountI18nItemsAndBundles() { I18nModule.initBundleNames(); // remove dirty stuff from previous tests int bundleCounter = I18nModule.getBundleNamesContainingI18nFiles().size(); String testNewBundle = "org.olat.core.util.i18n.junittestdata.new"; Locale testLocale = i18nMgr.getLocaleOrDefault("de"); File baseDir = I18nModule.getPropertyFilesBaseDir(testLocale, testNewBundle); File testFile = i18nMgr.getPropertiesFile(testLocale, testNewBundle, baseDir); // clean first existing files from previous broken testcase if (testFile.exists()) { i18nMgr.deleteProperties(testLocale, testNewBundle); } Properties props = i18nMgr.getResolvedProperties(testLocale, testNewBundle); assertEquals(0, i18nMgr.countI18nItems(testLocale, testNewBundle, true)); assertEquals(0, i18nMgr.countI18nItems(testLocale, testNewBundle, false)); props.setProperty("key.1", "1"); props.setProperty("key.2", "2"); i18nMgr.saveOrUpdateProperties(props, testLocale, testNewBundle); assertEquals(2, i18nMgr.countI18nItems(testLocale, testNewBundle, false)); assertEquals(0, i18nMgr.countI18nItems(i18nMgr.getLocaleOrDefault("en"), testNewBundle, false)); assertEquals(bundleCounter + 1, I18nModule.getBundleNamesContainingI18nFiles().size()); // test all bundles int allCount = i18nMgr.countI18nItems(testLocale, null, true); assertEquals(allCount, i18nMgr.countI18nItems(testLocale, null, false)); props.remove("key.1"); i18nMgr.saveOrUpdateProperties(props, testLocale, testNewBundle); assertEquals(allCount - 1, i18nMgr.countI18nItems(testLocale, null, false)); i18nMgr.deleteProperties(testLocale, testNewBundle); assertEquals(allCount - 2, i18nMgr.countI18nItems(testLocale, null, false)); assertEquals(bundleCounter, I18nModule.getBundleNamesContainingI18nFiles().size()); // count bundles tests assertEquals(0, i18nMgr.countBundles("org.olat.core.util.i18n.nonexisting", true)); assertEquals(1, i18nMgr.countBundles("org.olat.core.util.i18n.ui", true)); // finds 4: regular: i18n.devtools, i18n.ui; assertEquals(2, i18nMgr.countBundles("org.olat.core.util.i18n", true)); assertEquals(0, i18nMgr.countBundles("org.olat.core.util.i18n", false)); assertEquals(1, i18nMgr.countBundles("org.olat.core.util.i18n.ui", false)); assertTrue(0 < i18nMgr.countBundles(null, false)); // clean up if (testFile.exists()) { i18nMgr.deleteProperties(testLocale, testNewBundle); } if (testFile.getParentFile().exists()) { testFile.getParentFile().delete(); } }
/** * Test methods i18nManager.getProperties(), i18nManager.saveOrUpdateProperties() and * i18nManager.deleteProperties() */ @Ignore @Test public void testGetSaveOrUpdateAndDeleteProperties() { // test with existing files Properties props = i18nMgr.getResolvedProperties(i18nMgr.getLocaleOrDefault("de"), "org.olat.core"); assertNotNull(props); assertTrue(props.size() > 0); // test with non existing files String testNewBundle = "org.olat.core.util.i18n.junittestdata.new"; Locale testLocale = i18nMgr.getLocaleOrDefault("de"); File baseDir = I18nModule.getPropertyFilesBaseDir(testLocale, testNewBundle); File testFile = i18nMgr.getPropertiesFile(testLocale, testNewBundle, baseDir); // clean first existing files from previous broken testcase if (testFile.exists()) { i18nMgr.deleteProperties(testLocale, testNewBundle); } props = i18nMgr.getResolvedProperties(testLocale, testNewBundle); assertNotNull(props); assertEquals(0, props.size()); // test deleting of non existing assertFalse(testFile.exists()); i18nMgr.deleteProperties(testLocale, testNewBundle); assertFalse(testFile.exists()); // test saving of non existing props.setProperty("test.key", "Hello wörld !"); i18nMgr.saveOrUpdateProperties(props, testLocale, testNewBundle); assertTrue(testFile.exists()); assertEquals( "Hello wörld !", i18nMgr.getLocalizedString(testNewBundle, "test.key", null, testLocale, false, false)); // test saving of existing props = new Properties(); props.setProperty("hello.world", "&%çest françias, ê alors"); i18nMgr.saveOrUpdateProperties(props, testLocale, testNewBundle); assertTrue(testFile.exists()); assertEquals( "&%çest françias, ê alors", i18nMgr.getLocalizedString(testNewBundle, "hello.world", null, testLocale, false, false)); assertFalse( "Hello wörld !" .equals( i18nMgr.getLocalizedString( testNewBundle, "test.key", null, testLocale, false, false))); // test various special cases props.setProperty("chinesetest", "请选择你的大学"); props.setProperty("specialtest", "that's like \"really\" bad"); props.setProperty("multiline", "bla\tbla\nsecond line"); props.setProperty("html", "<h1>Hello World</h1>"); props.setProperty("empty.property", ""); i18nMgr.saveOrUpdateProperties(props, testLocale, testNewBundle); i18nMgr.clearCaches(); assertEquals( "请选择你的大学", i18nMgr.getLocalizedString(testNewBundle, "chinesetest", null, testLocale, false, false)); assertEquals( "that's like \"really\" bad", i18nMgr.getLocalizedString(testNewBundle, "specialtest", null, testLocale, false, false)); assertEquals( "bla\tbla\nsecond line", i18nMgr.getLocalizedString(testNewBundle, "multiline", null, testLocale, false, false)); assertEquals( "<h1>Hello World</h1>", i18nMgr.getLocalizedString(testNewBundle, "html", null, testLocale, false, false)); assertEquals( "", i18nMgr.getLocalizedString( testNewBundle, "empty.property", null, testLocale, false, false)); assertEquals( null, i18nMgr.getLocalizedString( testNewBundle, "not.existing.property", null, testLocale, false, false)); // test deleting of existing i18nMgr.deleteProperties(testLocale, testNewBundle); assertFalse(testFile.exists()); assertFalse( "Hello wörld !" .equals( i18nMgr.getLocalizedString( testNewBundle, "test.key", null, testLocale, false, false))); assertFalse( "&%çest françias, ê alors" .equals( i18nMgr.getLocalizedString( testNewBundle, "hello.world", null, testLocale, false, false))); // clean up if (testFile.exists()) { i18nMgr.deleteProperties(testLocale, testNewBundle); } if (testFile.getParentFile().exists()) testFile.getParentFile().delete(); }