/* * Copyright (C) 2006-2016 DLR, Germany * * All rights reserved * * http://www.rcenvironment.de/ */ package de.rcenvironment.core.utils.incubator; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import java.lang.reflect.Array; import java.math.BigInteger; import java.util.ArrayList; import org.junit.BeforeClass; import org.junit.Test; /** * Unit test for {@link DebugSettings} (currently, the verbose logging configuration). * * @author Robert Mischke */ public class DebugSettingsTest { private static final String ASTERISK = "*"; private static final String ASTERISK_AND_DOT = "*."; private static final Class<DebugSettingsTest> TEST_CLASS = DebugSettingsTest.class; private static final String TEST_CLASS_NAME = TEST_CLASS.getSimpleName(); /** * Initialization before the first test is run. */ @BeforeClass public static void setUpOnce() { // this is to bring the singleton instance into a defined state before testing with non-singleton instances System.clearProperty(DebugSettings.VERBOSE_LOGGING_PATTERN_SYSTEM_PROPERTY); // this also tests that no problematic constant is set that may interfere with the test run assertFalse(DebugSettings.getVerboseLoggingEnabled(TEST_CLASS)); assertFalse(DebugSettings.getVerboseLoggingEnabled(String.class)); } /** * Tests the default case. */ @Test public void testNoSystemProperty() { System.clearProperty(DebugSettings.VERBOSE_LOGGING_PATTERN_SYSTEM_PROPERTY); DebugSettings testInstance = new DebugSettings(); assertFalse(testInstance.getVerboseLoggingEnabledInternal(TEST_CLASS)); } /** * Tests the pattern "*". */ @Test public void testCorrectSystemProperty1() { System.setProperty(DebugSettings.VERBOSE_LOGGING_PATTERN_SYSTEM_PROPERTY, ASTERISK); DebugSettings testInstance = new DebugSettings(); assertTrue(testInstance.getVerboseLoggingEnabledInternal(TEST_CLASS)); assertTrue(testInstance.getVerboseLoggingEnabledInternal(String.class)); } /** * Tests a specific class name. */ @Test public void testCorrectSystemProperty2() { System.setProperty(DebugSettings.VERBOSE_LOGGING_PATTERN_SYSTEM_PROPERTY, ASTERISK_AND_DOT + TEST_CLASS_NAME); DebugSettings testInstance = new DebugSettings(); assertTrue(testInstance.getVerboseLoggingEnabledInternal(TEST_CLASS)); assertFalse(testInstance.getVerboseLoggingEnabledInternal(String.class)); } /** * Tests a specific class name's part, WITHOUT a wildcard at the end, so it should NOT match. */ @Test public void testCorrectSystemProperty3() { System.setProperty(DebugSettings.VERBOSE_LOGGING_PATTERN_SYSTEM_PROPERTY, ASTERISK_AND_DOT + TEST_CLASS_NAME.substring(0, 5)); DebugSettings testInstance = new DebugSettings(); assertFalse(testInstance.getVerboseLoggingEnabledInternal(TEST_CLASS)); assertFalse(testInstance.getVerboseLoggingEnabledInternal(String.class)); } /** * Tests a specific class name's part, WITH a wildcard at the end, so it should match. */ @Test public void testCorrectSystemProperty4() { System.setProperty(DebugSettings.VERBOSE_LOGGING_PATTERN_SYSTEM_PROPERTY, ASTERISK_AND_DOT + TEST_CLASS_NAME.substring(0, 5) + ASTERISK); DebugSettings testInstance = new DebugSettings(); assertTrue(testInstance.getVerboseLoggingEnabledInternal(TEST_CLASS)); assertFalse(testInstance.getVerboseLoggingEnabledInternal(String.class)); } /** * Tests a pattern with multiple name patterns. */ @Test public void testCorrectMultiClassSystemProperty() { System.setProperty(DebugSettings.VERBOSE_LOGGING_PATTERN_SYSTEM_PROPERTY, ASTERISK_AND_DOT + TEST_CLASS_NAME + ",java.lang.String,*.Integer,*.Array"); DebugSettings testInstance = new DebugSettings(); assertTrue(testInstance.getVerboseLoggingEnabledInternal(TEST_CLASS)); assertTrue(testInstance.getVerboseLoggingEnabledInternal(String.class)); assertTrue(testInstance.getVerboseLoggingEnabledInternal(Integer.class)); assertFalse(testInstance.getVerboseLoggingEnabledInternal(BigInteger.class)); assertTrue(testInstance.getVerboseLoggingEnabledInternal(Array.class)); assertFalse(testInstance.getVerboseLoggingEnabledInternal(ArrayList.class)); assertFalse(testInstance.getVerboseLoggingEnabledInternal(Number.class)); } /** * Tests a broken pattern. */ @Test public void testBrokenPattern() { System.setProperty(DebugSettings.VERBOSE_LOGGING_PATTERN_SYSTEM_PROPERTY, "("); DebugSettings testInstance = new DebugSettings(); assertFalse(testInstance.getVerboseLoggingEnabledInternal(TEST_CLASS)); assertFalse(testInstance.getVerboseLoggingEnabledInternal(String.class)); assertFalse(testInstance.getVerboseLoggingEnabledInternal(Integer.class)); assertFalse(testInstance.getVerboseLoggingEnabledInternal(BigInteger.class)); assertFalse(testInstance.getVerboseLoggingEnabledInternal(Array.class)); assertFalse(testInstance.getVerboseLoggingEnabledInternal(ArrayList.class)); assertFalse(testInstance.getVerboseLoggingEnabledInternal(Number.class)); } }