| /* |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with |
| * this work for additional information regarding copyright ownership. |
| * The ASF licenses this file to You under the Apache License, Version 2.0 |
| * (the "License"); you may not use this file except in compliance with |
| * the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| package org.apache.stanbol.enhancer.nlp.utils; |
| |
| import java.util.Arrays; |
| import java.util.Dictionary; |
| import java.util.Hashtable; |
| import java.util.Map; |
| |
| |
| import org.junit.Assert; |
| import org.junit.Test; |
| import org.osgi.service.cm.ConfigurationException; |
| |
| public class LanguageConfigurationTest { |
| |
| |
| @Test |
| public void testExplicitLanguages() throws ConfigurationException{ |
| Dictionary<String,Object> config = new Hashtable<String,Object>(); |
| config.put("test", "de,en"); |
| LanguageConfiguration lc = new LanguageConfiguration("test", null); |
| lc.setConfiguration(config); |
| Assert.assertTrue(lc.isLanguage("de")); |
| Assert.assertTrue(lc.isLanguage("en")); |
| Assert.assertFalse(lc.isLanguage("jp")); |
| config.put("test2", new String[]{"ru","fi"}); |
| lc = new LanguageConfiguration("test2", null); |
| lc.setConfiguration(config); |
| Assert.assertTrue(lc.isLanguage("ru")); |
| Assert.assertTrue(lc.isLanguage("fi")); |
| Assert.assertFalse(lc.isLanguage("jp")); |
| config.put("test3", Arrays.asList("zh","jp")); |
| lc = new LanguageConfiguration("test3", null); |
| lc.setConfiguration(config); |
| Assert.assertTrue(lc.isLanguage("zh")); |
| Assert.assertTrue(lc.isLanguage("jp")); |
| Assert.assertFalse(lc.isLanguage("de")); |
| } |
| @Test |
| public void testExclusions() throws ConfigurationException{ |
| Dictionary<String,Object> config = new Hashtable<String,Object>(); |
| config.put("test", "*,!de"); |
| LanguageConfiguration lc = new LanguageConfiguration("test", null); |
| lc.setConfiguration(config); |
| Assert.assertTrue(lc.isLanguage(null)); |
| Assert.assertFalse(lc.isLanguage("de")); |
| Assert.assertTrue(lc.isLanguage("en")); |
| Assert.assertTrue(lc.isLanguage("jp")); |
| config.put("test2", new String[]{"!ru","!fi","*"}); |
| lc = new LanguageConfiguration("test2", null); |
| lc.setConfiguration(config); |
| Assert.assertFalse(lc.isLanguage("ru")); |
| Assert.assertFalse(lc.isLanguage("fi")); |
| Assert.assertTrue(lc.isLanguage("jp")); |
| config.put("test3", Arrays.asList("!zh","*","!jp")); |
| lc = new LanguageConfiguration("test3", null); |
| lc.setConfiguration(config); |
| Assert.assertFalse(lc.isLanguage("zh")); |
| Assert.assertFalse(lc.isLanguage("jp")); |
| Assert.assertTrue(lc.isLanguage("de")); |
| } |
| |
| @Test |
| public void testLanguageParameter() throws ConfigurationException{ |
| Dictionary<String,Object> config = new Hashtable<String,Object>(); |
| config.put("test", "*,de;param1=test"); |
| LanguageConfiguration lc = new LanguageConfiguration("test", null); |
| lc.setConfiguration(config); |
| Assert.assertTrue(lc.isLanguage("de")); |
| Assert.assertTrue(lc.isLanguage("en")); |
| Assert.assertEquals("test", lc.getParameter("de", "param1")); |
| Assert.assertNull(lc.getParameter("en", "param1")); |
| Assert.assertNull(lc.getParameter("de", "noParam")); |
| Map<String,String> params = lc.getParameters("de"); |
| Assert.assertNotNull(params); |
| Assert.assertEquals(1, params.size()); |
| Assert.assertEquals("test", params.get("param1")); |
| |
| lc = new LanguageConfiguration("test2", null); |
| config.put("test2", new String[]{"*","!ru","fi;param1=test1;param2=test2;param3=test3"}); |
| lc.setConfiguration(config); |
| Assert.assertTrue(lc.isLanguage("fi")); |
| Assert.assertTrue(lc.isLanguage("en")); |
| Assert.assertFalse(lc.isLanguage("ru")); |
| Assert.assertEquals("test1", lc.getParameter("fi", "param1")); |
| Assert.assertEquals("test2", lc.getParameter("fi", "param2")); |
| Assert.assertEquals("test3", lc.getParameter("fi", "param3")); |
| params = lc.getParameters("fi"); |
| Assert.assertNotNull(params); |
| Assert.assertEquals(3, params.size()); |
| Assert.assertEquals("test1", params.get("param1")); |
| Assert.assertEquals("test2", params.get("param2")); |
| Assert.assertEquals("test3", params.get("param3")); |
| } |
| @Test(expected=ConfigurationException.class) |
| public void testParamsOnExcludedLanguage() throws ConfigurationException { |
| LanguageConfiguration lc = new LanguageConfiguration("test", null); |
| Dictionary<String,Object> config = new Hashtable<String,Object>(); |
| config.put("test", "*,!de;param=notAllowed"); |
| lc.setConfiguration(config); |
| } |
| @Test(expected=ConfigurationException.class) |
| public void testParamsIncludedAndExcludedLanguage() throws ConfigurationException { |
| LanguageConfiguration lc = new LanguageConfiguration("test", null); |
| Dictionary<String,Object> config = new Hashtable<String,Object>(); |
| config.put("test", "de,ru,!de"); |
| lc.setConfiguration(config); |
| } |
| @Test |
| public void testDefaultParametersOnWildcard() throws ConfigurationException { |
| LanguageConfiguration lc = new LanguageConfiguration("test", null); |
| Dictionary<String,Object> config = new Hashtable<String,Object>(); |
| config.put("test", "*;param=default,de;param1=test1,!ru,es;param=overridden"); |
| lc.setConfiguration(config); |
| //test defaults |
| Assert.assertEquals("default", lc.getParameter("en", "param")); |
| //test merging with specific |
| Assert.assertEquals("default", lc.getParameter("de", "param")); |
| Assert.assertEquals("test1", lc.getParameter("de", "param1")); |
| Map<String,String> params = lc.getParameters("de"); |
| Assert.assertNotNull(params); |
| Assert.assertEquals(2, params.size()); |
| Assert.assertEquals("default", params.get("param")); |
| Assert.assertEquals("test1", params.get("param1")); |
| //test overriding |
| Assert.assertEquals("overridden", lc.getParameter("es", "param")); |
| //test that ru is excluded |
| Assert.assertFalse(lc.isLanguage("ru")); |
| Assert.assertNull(lc.getParameters("ru")); |
| } |
| @Test |
| public void testDefaultParametersWithoutWildcard() throws ConfigurationException { |
| LanguageConfiguration lc = new LanguageConfiguration("test", null); |
| Dictionary<String,Object> config = new Hashtable<String,Object>(); |
| config.put("test", ";param=default,de;param1=test1,ru,es;param=overridden"); |
| lc.setConfiguration(config); |
| //test no wildcard |
| Assert.assertFalse(lc.isLanguage("en")); |
| //test defaults |
| Assert.assertEquals("default", lc.getParameter("ru", "param")); |
| //test merging with specific |
| Assert.assertEquals("default", lc.getParameter("de", "param")); |
| Assert.assertEquals("test1", lc.getParameter("de", "param1")); |
| Map<String,String> params = lc.getParameters("de"); |
| Assert.assertNotNull(params); |
| Assert.assertEquals(2, params.size()); |
| Assert.assertEquals("default", params.get("param")); |
| Assert.assertEquals("test1", params.get("param1")); |
| //test overriding |
| Assert.assertEquals("overridden", lc.getParameter("es", "param")); |
| |
| } |
| @Test |
| public void testCountrySpecificConfigurations() throws ConfigurationException { |
| LanguageConfiguration lc = new LanguageConfiguration("test", null); |
| Dictionary<String,Object> config = new Hashtable<String,Object>(); |
| config.put("test", ";param=default,de-AT;param1=test1,de;param2=test2"); |
| lc.setConfiguration(config); |
| //test no wildcard |
| Assert.assertFalse(lc.isLanguage("en")); |
| Assert.assertTrue(lc.isLanguage("de")); |
| Assert.assertTrue(lc.isLanguage("de-AT")); |
| Assert.assertTrue(lc.isLanguage("de-CH")); |
| //test defaults |
| Assert.assertEquals("default", lc.getParameter("de", "param")); |
| Assert.assertEquals("default", lc.getParameter("de-AT", "param")); |
| Assert.assertEquals("default", lc.getParameter("de-CH", "param")); |
| //test specific |
| Assert.assertEquals("test2", lc.getParameter("de", "param2")); |
| Assert.assertEquals("test2", lc.getParameter("de-CH", "param2")); |
| Assert.assertEquals("test2",lc.getParameter("de-AT", "param2")); //fallback from de-AT to de |
| |
| //test Country specificspecific |
| Assert.assertEquals("test1", lc.getParameter("de-AT", "param1")); |
| Assert.assertNull(lc.getParameter("de", "param1")); |
| Assert.assertNull(lc.getParameter("de-CH", "param1")); |
| |
| } |
| |
| } |