/*
* 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.configuration;
import ch.qos.logback.classic.Level;
import ch.qos.logback.classic.Logger;
import ch.qos.logback.classic.LoggerContext;
import java.io.File;
import java.util.Locale;
import net.pms.util.FileUtil;
import net.pms.util.Languages;
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 PmsConfigurationTest {
private PmsConfiguration configuration;
@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);
// Create default configuration instance
configuration = new PmsConfiguration(false);
}
/**
* Test Logging Configuration defaults
*/
@Test
public void testLoggingConfigurationDefaults() {
// Test defaults and valid values where applicable
assertFalse("LogSearchCaseSensitiveDefault", configuration.getGUILogSearchCaseSensitive());
assertFalse("LogSearchMultiLineDefault", configuration.getGUILogSearchMultiLine());
assertFalse("LogSearchRegEx", configuration.getGUILogSearchRegEx());
assertTrue("LogFileNameValid", FileUtil.isValidFileName(configuration.getDefaultLogFileName()));
assertEquals("LogFileNameDefault", configuration.getDefaultLogFileName(), "debug.log");
File file = new File(configuration.getDefaultLogFileFolder());
assertTrue("DefaultLogFileFolder", file.isDirectory());
file = new File(configuration.getDefaultLogFilePath());
assertTrue("DefaultLogFilePath", configuration.getDefaultLogFilePath().endsWith("debug.log"));
assertFalse("LoggingBufferedDefault", configuration.getLoggingBuffered());
assertEquals("LoggingFilterConsoleDefault", configuration.getLoggingFilterConsole(), Level.INFO);
assertEquals("LoggingFilterLogsTabDefault", configuration.getLoggingFilterLogsTab(), Level.INFO);
assertEquals("LoggingLogsTabLinebufferDefault", configuration.getLoggingLogsTabLinebuffer(), 1000);
assertTrue("LoggingLogsTabLinebufferLegal",
configuration.getLoggingLogsTabLinebuffer() >= PmsConfiguration.LOGGING_LOGS_TAB_LINEBUFFER_MIN &&
configuration.getLoggingLogsTabLinebuffer() <= PmsConfiguration.LOGGING_LOGS_TAB_LINEBUFFER_MAX);
assertEquals("LoggingSyslogFacilityDefault", configuration.getLoggingSyslogFacility(), "USER");
assertEquals("LoggingSyslogHostDefault", configuration.getLoggingSyslogHost(), "");
assertEquals("LoggingSyslogPortDefault", configuration.getLoggingSyslogPort(), 514);
assertFalse("LoggingUseSyslogDefault", configuration.getLoggingUseSyslog());
assertEquals("getLanguageLocaleDefault", configuration.getLanguageLocale(), Languages.toLocale(Locale.getDefault()));
assertEquals("getLanguageTagDefault", configuration.getLanguageTag(), Languages.toLanguageTag(Locale.getDefault()) );
configuration.getConfiguration().setProperty("language", "");
assertEquals("getLanguageLocaleDefault", configuration.getLanguageLocale(), Languages.toLocale(Locale.getDefault()));
assertEquals("getLanguageTagDefault", configuration.getLanguageTag(), Languages.toLanguageTag(Locale.getDefault()) );
configuration.getConfiguration().setProperty("language", "en-GB");
assertEquals("getLanguageLocaleBritishEnglish", configuration.getLanguageLocale(), Locale.forLanguageTag("en-GB"));
assertEquals("getLanguageTagBritishEnglish", configuration.getLanguageTag(), "en-GB");
configuration.getConfiguration().setProperty("language", "en");
assertEquals("getLanguageLocaleEnglish", configuration.getLanguageLocale(), Locale.forLanguageTag("en-US"));
assertEquals("getLanguageTagEnglish", configuration.getLanguageTag(), "en-US");
configuration.getConfiguration().setProperty("language", "zh");
assertEquals("getLanguageLocaleChinese", configuration.getLanguageLocale(), Locale.forLanguageTag("zh-Hant"));
assertEquals("getLanguageTagChinese", configuration.getLanguageTag(), "zh-Hant");
configuration.setLanguage(Locale.UK);
assertEquals("setLanguageUK", configuration.getLanguageLocale(), Locale.forLanguageTag("en-GB"));
configuration.setLanguage(Locale.SIMPLIFIED_CHINESE);
assertEquals("setLanguageSimplifiedChinese", configuration.getLanguageLocale(), Locale.forLanguageTag("zh-Hans"));
configuration.setLanguage(Locale.TRADITIONAL_CHINESE);
assertEquals("setLanguageTraditionalChinese", configuration.getLanguageLocale(), Locale.forLanguageTag("zh-Hant"));
Locale locale = null;
configuration.setLanguage(locale);
assertEquals("setLanguageNull", configuration.getLanguageLocale(), Locale.forLanguageTag("zh-Hant"));
String code = null;
configuration.setLanguage(code);
assertEquals("setLanguageNull", configuration.getLanguageLocale(), Locale.forLanguageTag("zh-Hant"));
configuration.setLanguage("");
assertEquals("setLanguageEmpty", configuration.getLanguageLocale(), Locale.forLanguageTag("zh-Hant"));
configuration.setLanguage("en");
assertEquals("setLanguageEnglish", configuration.getLanguageLocale(), Locale.forLanguageTag("en-US"));
}
@Test
public void testDefaults() {
assertNull("getLanguageRawStringDefault", configuration.getLanguageRawString());
configuration.setLanguage((Locale) null);
assertEquals("setLanguage(null)SetsBlankString", configuration.getLanguageRawString(), "");
}
}