package org.scalajs.testsuite.javalib.util.logging import java.util.logging.{Level, LogRecord, SimpleFormatter} import org.junit.{Before, Test} import org.junit.Assert._ import org.scalajs.testsuite.utils.Platform class SimpleFormatterTest { @Before def clearProperties():Unit = { System.clearProperty("java.util.logging.SimpleFormatter.format") } @Test def test_default_format(): Unit = { val f = new SimpleFormatter() val r = new LogRecord(Level.INFO, "message") r.setLoggerName("logger") assertTrue(f.format(r).contains("message")) assertTrue(f.format(r).contains("logger")) } @Test def test_format_with_params(): Unit = { val f = new SimpleFormatter() val msg = "message with params {0} {1}" val r = new LogRecord(Level.INFO, msg) assertTrue(f.format(r).contains(msg)) val r1 = new LogRecord(Level.INFO, msg) r1.setParameters(Array("param1")) assertTrue(f.format(r1).contains("message with params param1 {1}")) val r2 = new LogRecord(Level.INFO, msg) r2.setParameters(Array("param1", new java.lang.Integer(20))) assertTrue(f.format(r2).contains("message with params param1 20")) // Bogus cases val r3 = new LogRecord(Level.INFO, "message with params {0} {abc}") r3.setParameters(Array("param1", "test")) assertTrue(f.format(r3).contains("message with params {0} {abc}")) val r4 = new LogRecord(Level.INFO, "message with params {0} {{1}}") r4.setParameters(Array("param1", "test")) assertTrue(f.format(r4).contains("message with params {0} {{1}}")) val r5 = new LogRecord(Level.INFO, "message with params {0} {{1}") r5.setParameters(Array("param1", "test")) assertTrue(f.format(r5).contains("message with params {0} {{1}")) val r6 = new LogRecord(Level.INFO, "message with params {0} {-1}") r6.setParameters(Array("param1", "test")) assertTrue(f.format(r6).contains("message with params {0} {-1}")) val r7 = new LogRecord(Level.INFO, "message with params {0} {1") r7.setParameters(Array("param1", "test")) assertTrue(f.format(r7).contains("message with params {0} {1")) } @Test def test_format_property(): Unit = { System.setProperty("java.util.logging.SimpleFormatter.format", "%3$s - %5$s") val f = new SimpleFormatter() val r = new LogRecord(Level.INFO, "message") r.setLoggerName("logger") // The JVM has a different logic for formatting though the javadocs // indicate that the property above should be used if (!Platform.executingInJVM) assertEquals("logger - message", f.format(r)) } }