blob: 6bcc032dd3931c28100db922e2912919aac980c0 [file] [log] [blame]
/*
* 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"));
}
}