/*
* Universal Media Server, for streaming any media to DLNA
* compatible renderers based on the http://www.ps3mediaserver.org.
* Copyright (C) 2012 UMS developers.
*
* This program is a free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; version 2
* of the License only.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
package net.pms.util;
import ch.qos.logback.classic.Level;
import ch.qos.logback.classic.Logger;
import ch.qos.logback.classic.LoggerContext;
import java.util.Locale;
import org.apache.commons.configuration.ConfigurationException;
import static org.junit.Assert.*;
import org.junit.Before;
import org.junit.Test;
import org.slf4j.LoggerFactory;
public class LanguagesTest {
@Before
public void setUp() throws ConfigurationException {
// Silence all log messages from the UMS code that is being tested
LoggerContext context = (LoggerContext) LoggerFactory.getILoggerFactory();
context.getLogger(Logger.ROOT_LOGGER_NAME).setLevel(Level.OFF);
}
@Test
public void testIsValid() {
// Test the string version
assertFalse("enIsInvalid", Languages.isValid("en"));
assertTrue("en-USIsValid", Languages.isValid("en-US"));
assertTrue("en-GBIsValid", Languages.isValid("en-GB"));
assertTrue("zh-HansIsValid", Languages.isValid("zh-Hans"));
assertFalse("cmn-HantIsInvalid", Languages.isValid("cmn-Hant"));
assertFalse("EmptyIsInvalid", Languages.isValid(""));
String code = null;
assertFalse("NullIsInvalid", Languages.isValid(code));
// Test the locale version
assertTrue("enIsValid", Languages.isValid(Locale.forLanguageTag("en")));
assertTrue("en-USIsValid", Languages.isValid(Locale.forLanguageTag("en-US")));
assertTrue("en-GBIsValid", Languages.isValid(Locale.forLanguageTag("en-GB")));
assertTrue("zh-HansIsValid", Languages.isValid(Locale.forLanguageTag("zh-Hans")));
assertTrue("cmn-HantIsValid", Languages.isValid(Locale.forLanguageTag("cmn-Hant")));
assertTrue("zh-CHIsValid", Languages.isValid(Locale.forLanguageTag("zh-CH")));
assertTrue("zh-TWIsValid", Languages.isValid(Locale.forLanguageTag("zh-TH")));
assertTrue("pt-PTIsValid", Languages.isValid(Locale.forLanguageTag("pt-PT")));
assertTrue("no-NOIsValid", Languages.isValid(Locale.forLanguageTag("no-NO")));
assertFalse("EmptyIsInvalid", Languages.isValid(Locale.forLanguageTag("")));
Locale locale = null;
assertFalse("NullIsInvalid", Languages.isValid(locale));
}
@Test
public void testIsCompatible() {
assertTrue("enIsValid", Languages.isCompatible("en"));
assertTrue("en-USIsValid", Languages.isCompatible("en-US"));
assertTrue("no-NOIsValid", Languages.isCompatible("no-NO"));
assertTrue("sv-FIIsValid", Languages.isCompatible("sv-FI"));
assertTrue("en-GBIsValid", Languages.isCompatible("en-GB"));
assertTrue("cmn-HantIsValid", Languages.isCompatible("cmn-Hant"));
assertTrue("cmn-SGIsValid", Languages.isCompatible("cmn-SG"));
assertTrue("csIsValid", Languages.isCompatible("cs"));
assertFalse("czIsInvalid", Languages.isCompatible("cz"));
assertFalse("fooIsInvalid", Languages.isCompatible("foo"));
assertFalse("EmptyIsInvalid", Languages.isCompatible(""));
assertFalse("NullIsInvalid", Languages.isCompatible(null));
}
@Test
public void testToLanguageCode() {
// Test the string version
assertEquals("EnIsen-US", Languages.toLanguageTag("En"), "en-US");
assertEquals("EN-USIsen-US", Languages.toLanguageTag("EN-US"), "en-US");
assertEquals("En-gBIsen-GB", Languages.toLanguageTag("En-gB"), "en-GB");
assertEquals("zh-hansIszh-Hans", Languages.toLanguageTag("zh-hans"), "zh-Hans");
assertEquals("cmn-HantIszh-Hant", Languages.toLanguageTag("cmn-HantIs"), "zh-Hant");
assertNull("EmptyIsNull", Languages.toLanguageTag(""));
String code = null;
assertNull("NullIsNull", Languages.toLanguageTag(code));
// Test the locale version
assertEquals("enIsen-US", Languages.toLanguageTag(Locale.forLanguageTag("en")), "en-US");
assertEquals("en-USIsen-US", Languages.toLanguageTag(Locale.forLanguageTag("en-US")), "en-US");
assertEquals("en-GBIsen-GB", Languages.toLanguageTag(Locale.forLanguageTag("en-GB")), "en-GB");
assertEquals("zh-HansIszh-Hans", Languages.toLanguageTag(Locale.forLanguageTag("zh-Hans")), "zh-Hans");
assertEquals("cmn-HantIszh-Hant", Languages.toLanguageTag(Locale.forLanguageTag("cmn-Hant")), "zh-Hant");
assertEquals("zh-CNIszh-Hans", Languages.toLanguageTag(Locale.forLanguageTag("zh-CN")), "zh-Hans");
assertEquals("zh-SGIszh-Hans", Languages.toLanguageTag(Locale.forLanguageTag("zh-SG")), "zh-Hans");
assertEquals("zh-TWIszh-Hant", Languages.toLanguageTag(Locale.forLanguageTag("zh-TW")), "zh-Hant");
assertEquals("pt-PTIspt", Languages.toLanguageTag(Locale.forLanguageTag("pt-PT")), "pt");
assertEquals("no-NOIsno", Languages.toLanguageTag(Locale.forLanguageTag("no-NO")), "no");
assertNull("EmptyIsNull", Languages.toLanguageTag(Locale.forLanguageTag("")));
Locale locale = null;
assertNull("NullIsNull", Languages.toLanguageTag(locale));
}
@Test
public void testToLocale() {
assertEquals("enIsen-US", Languages.toLocale(Locale.forLanguageTag("en")), Locale.forLanguageTag("en-US"));
assertEquals("en-USIsen-US", Languages.toLocale(Locale.forLanguageTag("en-US")), Locale.forLanguageTag("en-US"));
assertEquals("en-GBIsen-GB", Languages.toLocale(Locale.forLanguageTag("en-GB")), Locale.forLanguageTag("en-GB"));
assertEquals("zh-HansIszh-Hans", Languages.toLocale(Locale.forLanguageTag("zh-Hans")), Locale.forLanguageTag("zh-Hans"));
assertEquals("cmn-HantIszh-Hant", Languages.toLocale(Locale.forLanguageTag("cmn-Hant")), Locale.forLanguageTag("zh-Hant"));
assertEquals("zh-CNIszh-Hans", Languages.toLocale(Locale.forLanguageTag("zh-CN")), Locale.forLanguageTag("zh-Hans"));
assertEquals("zh-SGIszh-Hans", Languages.toLocale(Locale.forLanguageTag("zh-SG")), Locale.forLanguageTag("zh-Hans"));
assertEquals("zh-TWIszh-Hant", Languages.toLocale(Locale.forLanguageTag("zh-TW")), Locale.forLanguageTag("zh-Hant"));
assertEquals("pt-PTIspt", Languages.toLocale(Locale.forLanguageTag("pt-PT")), Locale.forLanguageTag("pt"));
assertEquals("no-NOIsno", Languages.toLocale(Locale.forLanguageTag("no-NO")), Locale.forLanguageTag("no"));
assertNull("EmptyIsNull", Languages.toLocale(Locale.forLanguageTag("")));
Locale locale = null;
assertNull("NullIsNull", Languages.toLocale(locale));
}
}