/* * 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.log4j; import junit.framework.TestCase; import java.io.CharArrayWriter; /** * Unit test for LogSF. */ public class TestLogSF extends TestCase { /** * Trace level. */ private static final Level TRACE = getTraceLevel(); /** * Gets Trace level. * Trace level was not defined prior to log4j 1.2.12. * @return trace level */ private static Level getTraceLevel() { try { return (Level) Level.class.getField("TRACE").get(null); } catch(Exception ex) { return new Level(5000, "TRACE", 7); } } /** * Logger. */ private final Logger logger = Logger.getLogger( "org.apache.log4j.formatter.TestLogSF"); /** * Create the test case * * @param testName name of the test case */ public TestLogSF(String testName) { super(testName); } /** * Post test clean up. */ public void tearDown() { LogManager.resetConfiguration(); } /** * Test class name when logging through LogSF. */ public void testClassName() { CharArrayWriter writer = new CharArrayWriter(); PatternLayout layout = new PatternLayout("%C"); WriterAppender appender = new WriterAppender(layout, writer); appender.activateOptions(); Logger.getRootLogger().addAppender(appender); LogSF.debug(logger, null, Math.PI); assertEquals(TestLogSF.class.getName(), writer.toString()); } /** * Test LogSF.trace with null pattern. */ public void testTraceNullPattern() { LogCapture capture = new LogCapture(TRACE); logger.setLevel(TRACE); LogSF.trace(logger, null, Math.PI); assertNull(capture.getMessage()); } /** * Test LogSF.trace with no-field pattern. */ public void testTraceNoArg() { LogCapture capture = new LogCapture(TRACE); logger.setLevel(TRACE); LogSF.trace(logger, "Hello, World", Math.PI); assertEquals("Hello, World", capture.getMessage()); } /** * Test LogSF.trace with malformed pattern. */ public void testTraceBadPattern() { LogCapture capture = new LogCapture(TRACE); logger.setLevel(TRACE); LogSF.trace(logger, "Hello, {.", Math.PI); assertEquals("Hello, {.", capture.getMessage()); } /** * Test LogSF.trace with missing argument. */ public void testTraceMissingArg() { LogCapture capture = new LogCapture(TRACE); logger.setLevel(TRACE); LogSF.trace(logger, "Hello, {}World", new Object[0]); assertEquals("Hello, {}World", capture.getMessage()); } /** * Test LogSF.trace with single field pattern with string argument. */ public void testTraceString() { LogCapture capture = new LogCapture(TRACE); logger.setLevel(TRACE); LogSF.trace(logger, "Hello, {}", "World"); assertEquals("Hello, World", capture.getMessage()); } /** * Test LogSF.trace with single field pattern with null argument. */ public void testTraceNull() { LogCapture capture = new LogCapture(TRACE); logger.setLevel(TRACE); LogSF.trace(logger, "Hello, {}", (Object) null); assertEquals("Hello, null", capture.getMessage()); } /** * Test LogSF.trace with single field pattern with int argument. */ public void testTraceInt() { LogCapture capture = new LogCapture(TRACE); logger.setLevel(TRACE); int val = 42; LogSF.trace(logger, "Iteration {}", val); assertEquals("Iteration 42", capture.getMessage()); } /** * Test LogSF.trace with single field pattern with byte argument. */ public void testTraceByte() { LogCapture capture = new LogCapture(TRACE); logger.setLevel(TRACE); byte val = 42; LogSF.trace(logger, "Iteration {}", val); assertEquals("Iteration 42", capture.getMessage()); } /** * Test LogSF.trace with single field pattern with short argument. */ public void testTraceShort() { LogCapture capture = new LogCapture(TRACE); logger.setLevel(TRACE); short val = 42; LogSF.trace(logger, "Iteration {}", val); assertEquals("Iteration 42", capture.getMessage()); } /** * Test LogSF.trace with single field pattern with long argument. */ public void testTraceLong() { LogCapture capture = new LogCapture(TRACE); logger.setLevel(TRACE); long val = 42; LogSF.trace(logger, "Iteration {}", val); assertEquals("Iteration 42", capture.getMessage()); } /** * Test LogSF.trace with single field pattern with char argument. */ public void testTraceChar() { LogCapture capture = new LogCapture(TRACE); logger.setLevel(TRACE); char val = 'C'; LogSF.trace(logger, "Iteration {}", val); assertEquals("Iteration C", capture.getMessage()); } /** * Test LogSF.trace with single field pattern with boolean argument. */ public void testTraceBoolean() { LogCapture capture = new LogCapture(TRACE); logger.setLevel(TRACE); boolean val = true; LogSF.trace(logger, "Iteration {}", val); assertEquals("Iteration true", capture.getMessage()); } /** * Test LogSF.trace with single field pattern with float argument. */ public void testTraceFloat() { LogCapture capture = new LogCapture(TRACE); logger.setLevel(TRACE); float val = 3.14f; LogSF.trace(logger, "Iteration {}", val); assertEquals("Iteration " + String.valueOf(val), capture.getMessage()); } /** * Test LogSF.trace with single field pattern with double argument. */ public void testTraceDouble() { LogCapture capture = new LogCapture(TRACE); logger.setLevel(TRACE); double val = 3.14; LogSF.trace(logger, "Iteration {}", val); assertEquals("Iteration " + String.valueOf(val), capture.getMessage()); } /** * Test LogSF.trace with two arguments. */ public void testTraceTwoArg() { LogCapture capture = new LogCapture(TRACE); logger.setLevel(TRACE); LogSF.trace(logger, "{}, {}.", "Hello", "World"); assertEquals("Hello, World.", capture.getMessage()); } /** * Test LogSF.trace with three arguments. */ public void testTraceThreeArg() { LogCapture capture = new LogCapture(TRACE); logger.setLevel(TRACE); LogSF.trace(logger, "{}{} {}.", "Hello", ",", "World"); assertEquals("Hello, World.", capture.getMessage()); } /** * Test LogSF.trace with Object[] argument. */ public void testTraceFourArg() { LogCapture capture = new LogCapture(TRACE); logger.setLevel(TRACE); LogSF.trace(logger, "{}{} {}{}", "Hello", ",", "World", "."); assertEquals("Hello, World.", capture.getMessage()); } /** * Test LogSF.trace with Object[] argument. */ public void testTraceArrayArg() { LogCapture capture = new LogCapture(TRACE); logger.setLevel(TRACE); Object[] args = new Object[] { "Hello", ",", "World", "." }; LogSF.trace(logger, "{}{} {}{}", args); assertEquals("Hello, World.", capture.getMessage()); } /** * Test LogSF.trace with null Object[] argument. */ public void testTraceNullArrayArg() { LogCapture capture = new LogCapture(TRACE); logger.setLevel(TRACE); Object[] args = null; LogSF.trace(logger, "{}{} {}{}", args); assertEquals("{}{} {}{}", capture.getMessage()); } /** * Test LogSF.debug with null pattern. */ public void testDebugNullPattern() { LogCapture capture = new LogCapture(Level.DEBUG); LogSF.debug(logger, null, Math.PI); assertNull(capture.getMessage()); } /** * Test LogSF.debug with no-field pattern. */ public void testDebugNoArg() { LogCapture capture = new LogCapture(Level.DEBUG); LogSF.debug(logger, "Hello, World", Math.PI); assertEquals("Hello, World", capture.getMessage()); } /** * Test LogSF.debug with malformed pattern. */ public void testDebugBadPattern() { LogCapture capture = new LogCapture(Level.DEBUG); LogSF.debug(logger, "Hello, {.", Math.PI); assertEquals("Hello, {.", capture.getMessage()); } /** * Test LogSF.debug with missing argument. */ public void testDebugMissingArg() { LogCapture capture = new LogCapture(Level.DEBUG); LogSF.debug(logger, "Hello, {}World", new Object[0]); assertEquals("Hello, {}World", capture.getMessage()); } /** * Test LogSF.debug with single field pattern with string argument. */ public void testDebugString() { LogCapture capture = new LogCapture(Level.DEBUG); LogSF.debug(logger, "Hello, {}", "World"); assertEquals("Hello, World", capture.getMessage()); } /** * Test LogSF.debug with single field pattern with null argument. */ public void testDebugNull() { LogCapture capture = new LogCapture(Level.DEBUG); LogSF.debug(logger, "Hello, {}", (Object) null); assertEquals("Hello, null", capture.getMessage()); } /** * Test LogSF.debug with single field pattern with int argument. */ public void testDebugInt() { LogCapture capture = new LogCapture(Level.DEBUG); int val = 42; LogSF.debug(logger, "Iteration {}", val); assertEquals("Iteration 42", capture.getMessage()); } /** * Test LogSF.debug with single field pattern with byte argument. */ public void testDebugByte() { LogCapture capture = new LogCapture(Level.DEBUG); byte val = 42; LogSF.debug(logger, "Iteration {}", val); assertEquals("Iteration 42", capture.getMessage()); } /** * Test LogSF.debug with single field pattern with short argument. */ public void testDebugShort() { LogCapture capture = new LogCapture(Level.DEBUG); short val = 42; LogSF.debug(logger, "Iteration {}", val); assertEquals("Iteration 42", capture.getMessage()); } /** * Test LogSF.debug with single field pattern with long argument. */ public void testDebugLong() { LogCapture capture = new LogCapture(Level.DEBUG); long val = 42; LogSF.debug(logger, "Iteration {}", val); assertEquals("Iteration 42", capture.getMessage()); } /** * Test LogSF.debug with single field pattern with char argument. */ public void testDebugChar() { LogCapture capture = new LogCapture(Level.DEBUG); char val = 'C'; LogSF.debug(logger, "Iteration {}", val); assertEquals("Iteration C", capture.getMessage()); } /** * Test LogSF.debug with single field pattern with boolean argument. */ public void testDebugBoolean() { LogCapture capture = new LogCapture(Level.DEBUG); boolean val = true; LogSF.debug(logger, "Iteration {}", val); assertEquals("Iteration true", capture.getMessage()); } /** * Test LogSF.debug with single field pattern with float argument. */ public void testDebugFloat() { LogCapture capture = new LogCapture(Level.DEBUG); float val = 3.14f; LogSF.debug(logger, "Iteration {}", val); assertEquals("Iteration " + String.valueOf(val), capture.getMessage()); } /** * Test LogSF.debug with single field pattern with double argument. */ public void testDebugDouble() { LogCapture capture = new LogCapture(Level.DEBUG); double val = 3.14; LogSF.debug(logger, "Iteration {}", val); assertEquals("Iteration " + String.valueOf(val), capture.getMessage()); } /** * Test LogSF.debug with two arguments. */ public void testDebugTwoArg() { LogCapture capture = new LogCapture(Level.DEBUG); LogSF.debug(logger, "{}, {}.", "Hello", "World"); assertEquals("Hello, World.", capture.getMessage()); } /** * Test LogSF.debug with three arguments. */ public void testDebugThreeArg() { LogCapture capture = new LogCapture(Level.DEBUG); LogSF.debug(logger, "{}{} {}.", "Hello", ",", "World"); assertEquals("Hello, World.", capture.getMessage()); } /** * Test LogSF.debug with four arguments. */ public void testDebugFourArg() { LogCapture capture = new LogCapture(Level.DEBUG); LogSF.debug(logger, "{}{} {}{}", "Hello", ",", "World", "."); assertEquals("Hello, World.", capture.getMessage()); } /** * Test LogSF.debug with Object[] argument. */ public void testDebugArrayArg() { LogCapture capture = new LogCapture(Level.DEBUG); Object[] args = new Object[] { "Hello", ",", "World", "." }; LogSF.debug(logger, "{}{} {}{}", args); assertEquals("Hello, World.", capture.getMessage()); } /** * Test LogSF.debug with null Object[] argument. */ public void testDebugNullArrayArg() { LogCapture capture = new LogCapture(Level.DEBUG); Object[] args = null; LogSF.debug(logger, "{}{} {}{}", args); assertEquals("{}{} {}{}", capture.getMessage()); } /** * Test LogSF.info with null pattern. */ public void testInfoNullPattern() { LogCapture capture = new LogCapture(Level.INFO); LogSF.info(logger, null, Math.PI); assertNull(capture.getMessage()); } /** * Test LogSF.info with no-field pattern. */ public void testInfoNoArg() { LogCapture capture = new LogCapture(Level.INFO); LogSF.info(logger, "Hello, World", Math.PI); assertEquals("Hello, World", capture.getMessage()); } /** * Test LogSF.info with malformed pattern. */ public void testInfoBadPattern() { LogCapture capture = new LogCapture(Level.INFO); LogSF.info(logger, "Hello, {.", Math.PI); assertEquals("Hello, {.", capture.getMessage()); } /** * Test LogSF.info with missing argument. */ public void testInfoMissingArg() { LogCapture capture = new LogCapture(Level.INFO); LogSF.info(logger, "Hello, {}World", new Object[0]); assertEquals("Hello, {}World", capture.getMessage()); } /** * Test LogSF.info with single field pattern with string argument. */ public void testInfoString() { LogCapture capture = new LogCapture(Level.INFO); LogSF.info(logger, "Hello, {}", "World"); assertEquals("Hello, World", capture.getMessage()); } /** * Test LogSF.info with single field pattern with null argument. */ public void testInfoNull() { LogCapture capture = new LogCapture(Level.INFO); LogSF.info(logger, "Hello, {}", (Object) null); assertEquals("Hello, null", capture.getMessage()); } /** * Test LogSF.info with single field pattern with int argument. */ public void testInfoInt() { LogCapture capture = new LogCapture(Level.INFO); int val = 42; LogSF.info(logger, "Iteration {}", val); assertEquals("Iteration 42", capture.getMessage()); } /** * Test LogSF.info with single field pattern with byte argument. */ public void testInfoByte() { LogCapture capture = new LogCapture(Level.INFO); byte val = 42; LogSF.info(logger, "Iteration {}", val); assertEquals("Iteration 42", capture.getMessage()); } /** * Test LogSF.info with single field pattern with short argument. */ public void testInfoShort() { LogCapture capture = new LogCapture(Level.INFO); short val = 42; LogSF.info(logger, "Iteration {}", val); assertEquals("Iteration 42", capture.getMessage()); } /** * Test LogSF.info with single field pattern with long argument. */ public void testInfoLong() { LogCapture capture = new LogCapture(Level.INFO); long val = 42; LogSF.info(logger, "Iteration {}", val); assertEquals("Iteration 42", capture.getMessage()); } /** * Test LogSF.info with single field pattern with char argument. */ public void testInfoChar() { LogCapture capture = new LogCapture(Level.INFO); char val = 'C'; LogSF.info(logger, "Iteration {}", val); assertEquals("Iteration C", capture.getMessage()); } /** * Test LogSF.info with single field pattern with boolean argument. */ public void testInfoBoolean() { LogCapture capture = new LogCapture(Level.INFO); boolean val = true; LogSF.info(logger, "Iteration {}", val); assertEquals("Iteration true", capture.getMessage()); } /** * Test LogSF.info with single field pattern with float argument. */ public void testInfoFloat() { LogCapture capture = new LogCapture(Level.INFO); float val = 3.14f; LogSF.info(logger, "Iteration {}", val); assertEquals("Iteration " + String.valueOf(val), capture.getMessage()); } /** * Test LogSF.info with single field pattern with double argument. */ public void testInfoDouble() { LogCapture capture = new LogCapture(Level.INFO); double val = 3.14; LogSF.info(logger, "Iteration {}", val); assertEquals("Iteration " + String.valueOf(val), capture.getMessage()); } /** * Test LogSF.info with two arguments. */ public void testInfoTwoArg() { LogCapture capture = new LogCapture(Level.INFO); LogSF.info(logger, "{}, {}.", "Hello", "World"); assertEquals("Hello, World.", capture.getMessage()); } /** * Test LogSF.info with three arguments. */ public void testInfoThreeArg() { LogCapture capture = new LogCapture(Level.INFO); LogSF.info(logger, "{}{} {}.", "Hello", ",", "World"); assertEquals("Hello, World.", capture.getMessage()); } /** * Test LogSF.info with Object[] argument. */ public void testInfoArrayArg() { LogCapture capture = new LogCapture(Level.INFO); Object[] args = new Object[] { "Hello", ",", "World", "." }; LogSF.info(logger, "{}{} {}{}", args); assertEquals("Hello, World.", capture.getMessage()); } /** * Test LogSF.warn with null pattern. */ public void testWarnNullPattern() { LogCapture capture = new LogCapture(Level.WARN); LogSF.warn(logger, null, Math.PI); assertNull(capture.getMessage()); } /** * Test LogSF.warn with no-field pattern. */ public void testWarnNoArg() { LogCapture capture = new LogCapture(Level.WARN); LogSF.warn(logger, "Hello, World", Math.PI); assertEquals("Hello, World", capture.getMessage()); } /** * Test LogSF.warn with malformed pattern. */ public void testWarnBadPattern() { LogCapture capture = new LogCapture(Level.WARN); LogSF.warn(logger, "Hello, {.", Math.PI); assertEquals("Hello, {.", capture.getMessage()); } /** * Test LogSF.warn with missing argument. */ public void testWarnMissingArg() { LogCapture capture = new LogCapture(Level.WARN); LogSF.warn(logger, "Hello, {}World", new Object[0]); assertEquals("Hello, {}World", capture.getMessage()); } /** * Test LogSF.warn with single field pattern with string argument. */ public void testWarnString() { LogCapture capture = new LogCapture(Level.WARN); LogSF.warn(logger, "Hello, {}", "World"); assertEquals("Hello, World", capture.getMessage()); } /** * Test LogSF.warn with single field pattern with null argument. */ public void testWarnNull() { LogCapture capture = new LogCapture(Level.WARN); LogSF.warn(logger, "Hello, {}", (Object) null); assertEquals("Hello, null", capture.getMessage()); } /** * Test LogSF.warn with single field pattern with int argument. */ public void testWarnInt() { LogCapture capture = new LogCapture(Level.WARN); int val = 42; LogSF.warn(logger, "Iteration {}", val); assertEquals("Iteration 42", capture.getMessage()); } /** * Test LogSF.warn with single field pattern with byte argument. */ public void testWarnByte() { LogCapture capture = new LogCapture(Level.WARN); byte val = 42; LogSF.warn(logger, "Iteration {}", val); assertEquals("Iteration 42", capture.getMessage()); } /** * Test LogSF.warn with single field pattern with short argument. */ public void testWarnShort() { LogCapture capture = new LogCapture(Level.WARN); short val = 42; LogSF.warn(logger, "Iteration {}", val); assertEquals("Iteration 42", capture.getMessage()); } /** * Test LogSF.warn with single field pattern with long argument. */ public void testWarnLong() { LogCapture capture = new LogCapture(Level.WARN); long val = 42; LogSF.warn(logger, "Iteration {}", val); assertEquals("Iteration 42", capture.getMessage()); } /** * Test LogSF.warn with single field pattern with char argument. */ public void testWarnChar() { LogCapture capture = new LogCapture(Level.WARN); char val = 'C'; LogSF.warn(logger, "Iteration {}", val); assertEquals("Iteration C", capture.getMessage()); } /** * Test LogSF.warn with single field pattern with boolean argument. */ public void testWarnBoolean() { LogCapture capture = new LogCapture(Level.WARN); boolean val = true; LogSF.warn(logger, "Iteration {}", val); assertEquals("Iteration true", capture.getMessage()); } /** * Test LogSF.warn with single field pattern with float argument. */ public void testWarnFloat() { LogCapture capture = new LogCapture(Level.WARN); float val = 3.14f; LogSF.warn(logger, "Iteration {}", val); assertEquals("Iteration " + String.valueOf(val), capture.getMessage()); } /** * Test LogSF.warn with single field pattern with double argument. */ public void testWarnDouble() { LogCapture capture = new LogCapture(Level.WARN); double val = 3.14; LogSF.warn(logger, "Iteration {}", val); assertEquals("Iteration " + String.valueOf(val), capture.getMessage()); } /** * Test LogSF.warn with two arguments. */ public void testWarnTwoArg() { LogCapture capture = new LogCapture(Level.WARN); LogSF.warn(logger, "{}, {}.", "Hello", "World"); assertEquals("Hello, World.", capture.getMessage()); } /** * Test LogSF.warn with three arguments. */ public void testWarnThreeArg() { LogCapture capture = new LogCapture(Level.WARN); LogSF.warn(logger, "{}{} {}.", "Hello", ",", "World"); assertEquals("Hello, World.", capture.getMessage()); } /** * Test LogSF.warn with Object[] argument. */ public void testWarnFourArg() { LogCapture capture = new LogCapture(Level.WARN); LogSF.warn(logger, "{}{} {}{}", "Hello", ",", "World", "." ); assertEquals("Hello, World.", capture.getMessage()); } /** * Test LogSF.warn with Object[] argument. */ public void testWarnArrayArg() { LogCapture capture = new LogCapture(Level.WARN); Object[] args = new Object[] { "Hello", ",", "World", "." }; LogSF.warn(logger, "{}{} {}{}", args); assertEquals("Hello, World.", capture.getMessage()); } /** * Test LogSF.log with null pattern. */ public void testLogNullPattern() { LogCapture capture = new LogCapture(Level.ERROR); LogSF.log(logger, Level.ERROR, null, Math.PI); assertNull(capture.getMessage()); } /** * Test LogSF.log with no-field pattern. */ public void testLogNoArg() { LogCapture capture = new LogCapture(Level.ERROR); LogSF.log(logger, Level.ERROR, "Hello, World", Math.PI); assertEquals("Hello, World", capture.getMessage()); } /** * Test LogSF.log with malformed pattern. */ public void testLogBadPattern() { LogCapture capture = new LogCapture(Level.ERROR); LogSF.log(logger, Level.ERROR, "Hello, {.", Math.PI); assertEquals("Hello, {.", capture.getMessage()); } /** * Test LogSF.log with missing argument. */ public void testLogMissingArg() { LogCapture capture = new LogCapture(Level.ERROR); LogSF.log(logger, Level.ERROR, "Hello, {}World", new Object[0]); assertEquals("Hello, {}World", capture.getMessage()); } /** * Test LogSF.log with single field pattern with string argument. */ public void testLogString() { LogCapture capture = new LogCapture(Level.ERROR); LogSF.log(logger, Level.ERROR, "Hello, {}", "World"); assertEquals("Hello, World", capture.getMessage()); } /** * Test LogSF.log with single field pattern with null argument. */ public void testLogNull() { LogCapture capture = new LogCapture(Level.ERROR); LogSF.log(logger, Level.ERROR, "Hello, {}", (Object) null); assertEquals("Hello, null", capture.getMessage()); } /** * Test LogSF.log with single field pattern with int argument. */ public void testLogInt() { LogCapture capture = new LogCapture(Level.ERROR); int val = 42; LogSF.log(logger, Level.ERROR, "Iteration {}", val); assertEquals("Iteration 42", capture.getMessage()); } /** * Test LogSF.log with single field pattern with byte argument. */ public void testLogByte() { LogCapture capture = new LogCapture(Level.ERROR); byte val = 42; LogSF.log(logger, Level.ERROR, "Iteration {}", val); assertEquals("Iteration 42", capture.getMessage()); } /** * Test LogSF.log with single field pattern with short argument. */ public void testLogShort() { LogCapture capture = new LogCapture(Level.ERROR); short val = 42; LogSF.log(logger, Level.ERROR, "Iteration {}", val); assertEquals("Iteration 42", capture.getMessage()); } /** * Test LogSF.log with single field pattern with long argument. */ public void testLogLong() { LogCapture capture = new LogCapture(Level.ERROR); long val = 42; LogSF.log(logger, Level.ERROR, "Iteration {}", val); assertEquals("Iteration 42", capture.getMessage()); } /** * Test LogSF.log with single field pattern with char argument. */ public void testLogChar() { LogCapture capture = new LogCapture(Level.ERROR); char val = 'C'; LogSF.log(logger, Level.ERROR, "Iteration {}", val); assertEquals("Iteration C", capture.getMessage()); } /** * Test LogSF.log with single field pattern with boolean argument. */ public void testLogBoolean() { LogCapture capture = new LogCapture(Level.ERROR); boolean val = true; LogSF.log(logger, Level.ERROR, "Iteration {}", val); assertEquals("Iteration true", capture.getMessage()); } /** * Test LogSF.log with single field pattern with float argument. */ public void testLogFloat() { LogCapture capture = new LogCapture(Level.ERROR); LogSF.log(logger, Level.ERROR, "Iteration {}", (float) Math.PI); String expected = "Iteration " + String.valueOf(new Float(Math.PI)); assertEquals(expected, capture.getMessage()); } /** * Test LogSF.log with single field pattern with double argument. */ public void testLogDouble() { LogCapture capture = new LogCapture(Level.ERROR); LogSF.log(logger, Level.ERROR, "Iteration {}", Math.PI); String expected = "Iteration " + String.valueOf(new Double(Math.PI)); assertEquals(expected, capture.getMessage()); } /** * Test LogSF.log with two arguments. */ public void testLogTwoArg() { LogCapture capture = new LogCapture(Level.ERROR); LogSF.log(logger, Level.ERROR, "{}, {}.", "Hello", "World"); assertEquals("Hello, World.", capture.getMessage()); } /** * Test LogSF.log with three arguments. */ public void testLogThreeArg() { LogCapture capture = new LogCapture(Level.ERROR); LogSF.log(logger, Level.ERROR, "{}{} {}.", "Hello", ",", "World"); assertEquals("Hello, World.", capture.getMessage()); } /** * Test LogSF.log with four arguments. */ public void testLogFourArg() { LogCapture capture = new LogCapture(Level.ERROR); LogSF.log(logger, Level.ERROR, "{}{} {}{}", "Hello", ",", "World", "."); assertEquals("Hello, World.", capture.getMessage()); } /** * Test LogSF.log with Object[] argument. */ public void testLogArrayArg() { LogCapture capture = new LogCapture(Level.ERROR); Object[] args = new Object[] { "Hello", ",", "World", "." }; LogSF.log(logger, Level.ERROR, "{}{} {}{}", args); assertEquals("Hello, World.", capture.getMessage()); } /** * Bundle name for resource bundle tests. */ private static final String BUNDLE_NAME = "org.apache.log4j.TestLogSFPatterns"; /** * Test LogSF.logrb with null bundle name. */ public void testLogrbNullBundle() { LogCapture capture = new LogCapture(Level.ERROR); LogSF.logrb(logger, Level.ERROR, null, "Iteration0", Math.PI); assertEquals("Iteration0", capture.getMessage()); } /** * Test LogSF.logrb with null key. */ public void testLogrbNullKey() { LogCapture capture = new LogCapture(Level.ERROR); LogSF.logrb(logger, Level.ERROR, BUNDLE_NAME, null, Math.PI); assertNull(capture.getMessage()); } /** * Test LogSF.logrb with no-field pattern. */ public void testLogrbNoArg() { LogCapture capture = new LogCapture(Level.ERROR); LogSF.logrb(logger, Level.ERROR, BUNDLE_NAME, "Hello1", Math.PI); assertEquals("Hello, World", capture.getMessage()); } /** * Test LogSF.logrb with malformed pattern. */ public void testLogrbBadPattern() { LogCapture capture = new LogCapture(Level.ERROR); LogSF.logrb(logger, Level.ERROR, BUNDLE_NAME, "Malformed", Math.PI); assertEquals("Hello, {.", capture.getMessage()); } /** * Test LogSF.logrb with missing argument. */ public void testLogrbMissingArg() { LogCapture capture = new LogCapture(Level.ERROR); LogSF.logrb(logger, Level.ERROR, BUNDLE_NAME, "Hello2", new Object[0]); assertEquals("Hello, {}World", capture.getMessage()); } /** * Test LogSF.logrb with single field pattern with string argument. */ public void testLogrbString() { LogCapture capture = new LogCapture(Level.ERROR); LogSF.logrb(logger, Level.ERROR, BUNDLE_NAME, "Hello3", "World"); assertEquals("Hello, World", capture.getMessage()); } /** * Test LogSF.logrb with single field pattern with null argument. */ public void testLogrbNull() { LogCapture capture = new LogCapture(Level.ERROR); LogSF.logrb(logger, Level.ERROR, BUNDLE_NAME, "Hello3", (Object) null); assertEquals("Hello, null", capture.getMessage()); } /** * Test LogSF.logrb with single field pattern with int argument. */ public void testLogrbInt() { LogCapture capture = new LogCapture(Level.ERROR); int val = 42; LogSF.logrb(logger, Level.ERROR, BUNDLE_NAME, "Iteration0", val); assertEquals("Iteration 42", capture.getMessage()); } /** * Test LogSF.logrb with single field pattern with byte argument. */ public void testLogrbByte() { LogCapture capture = new LogCapture(Level.ERROR); byte val = 42; LogSF.logrb(logger, Level.ERROR, BUNDLE_NAME, "Iteration0", val); assertEquals("Iteration 42", capture.getMessage()); } /** * Test LogSF.logrb with single field pattern with short argument. */ public void testLogrbShort() { LogCapture capture = new LogCapture(Level.ERROR); short val = 42; LogSF.logrb(logger, Level.ERROR, BUNDLE_NAME, "Iteration0", val); assertEquals("Iteration 42", capture.getMessage()); } /** * Test LogSF.logrb with single field pattern with long argument. */ public void testLogrbLong() { LogCapture capture = new LogCapture(Level.ERROR); long val = 42; LogSF.logrb(logger, Level.ERROR, BUNDLE_NAME, "Iteration0", val); assertEquals("Iteration 42", capture.getMessage()); } /** * Test LogSF.logrb with single field pattern with char argument. */ public void testLogrbChar() { LogCapture capture = new LogCapture(Level.ERROR); char val = 'C'; LogSF.logrb(logger, Level.ERROR, BUNDLE_NAME, "Iteration0", val); assertEquals("Iteration C", capture.getMessage()); } /** * Test LogSF.logrb with single field pattern with boolean argument. */ public void testLogrbBoolean() { LogCapture capture = new LogCapture(Level.ERROR); boolean val = true; LogSF.logrb(logger, Level.ERROR, BUNDLE_NAME, "Iteration0", val); assertEquals("Iteration true", capture.getMessage()); } /** * Test LogSF.logrb with single field pattern with float argument. */ public void testLogrbFloat() { LogCapture capture = new LogCapture(Level.ERROR); LogSF.logrb(logger, Level.ERROR, BUNDLE_NAME, "Iteration0", (float) Math.PI); String expected = "Iteration " + String.valueOf(new Float(Math.PI)); assertEquals(expected, capture.getMessage()); } /** * Test LogSF.logrb with single field pattern with double argument. */ public void testLogrbDouble() { LogCapture capture = new LogCapture(Level.ERROR); LogSF.logrb(logger, Level.ERROR, BUNDLE_NAME, "Iteration0", Math.PI); String expected = "Iteration " + String.valueOf(new Double(Math.PI)); assertEquals(expected, capture.getMessage()); } /** * Test LogSF.logrb with two arguments. */ public void testLogrbTwoArg() { LogCapture capture = new LogCapture(Level.ERROR); LogSF.logrb(logger, Level.ERROR, BUNDLE_NAME, "Hello4", "Hello", "World"); assertEquals("Hello, World.", capture.getMessage()); } /** * Test LogSF.logrb with three arguments. */ public void testLogrbThreeArg() { LogCapture capture = new LogCapture(Level.ERROR); LogSF.logrb(logger, Level.ERROR, BUNDLE_NAME, "Hello5", "Hello", ",", "World"); assertEquals("Hello, World.", capture.getMessage()); } /** * Test LogSF.logrb with four arguments. */ public void testLogrbFourArg() { LogCapture capture = new LogCapture(Level.ERROR); LogSF.logrb(logger, Level.ERROR, BUNDLE_NAME, "Hello6", "Hello", ",", "World", "."); assertEquals("Hello, World.", capture.getMessage()); } /** * Test LogSF.logrb with Object[] argument. */ public void testLogrbArrayArg() { LogCapture capture = new LogCapture(Level.ERROR); Object[] args = new Object[] { "Hello", ",", "World", "." }; LogSF.logrb(logger, Level.ERROR, BUNDLE_NAME, "Hello6", args); assertEquals("Hello, World.", capture.getMessage()); } /** * Test \\{ escape sequence when only one parameter is present. * */ public void testEscapeOneParam() { LogCapture capture = new LogCapture(Level.INFO); LogSF.info(logger, "\\{}\\{{}}, World}\\{","Hello"); assertEquals("{}{Hello}, World}{", capture.getMessage()); } /** * Test \\{ escape sequence when more than one parameter is present. * */ public void testEscapeTwoParam() { LogCapture capture = new LogCapture(Level.INFO); LogSF.info(logger, "\\{}\\{{}}, {}}{}\\{","Hello", "World"); assertEquals("{}{Hello}, World}{}{", capture.getMessage()); } }