1561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/*
2561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Licensed to the Apache Software Foundation (ASF) under one or more
3561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * contributor license agreements.  See the NOTICE file distributed with
4561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * this work for additional information regarding copyright ownership.
5561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * The ASF licenses this file to You under the Apache License, Version 2.0
6561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * (the "License"); you may not use this file except in compliance with
7561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * the License.  You may obtain a copy of the License at
8561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *
9561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *     http://www.apache.org/licenses/LICENSE-2.0
10561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *
11561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Unless required by applicable law or agreed to in writing, software
12561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * distributed under the License is distributed on an "AS IS" BASIS,
13561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * See the License for the specific language governing permissions and
15561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * limitations under the License.
16561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */
17561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
18561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespackage org.apache.harmony.logging.tests.java.util.logging;
19561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
20561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Calendar;
21561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.ResourceBundle;
22561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.logging.Level;
23561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.logging.LogRecord;
24561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.logging.SimpleFormatter;
25561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
26561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport junit.framework.TestCase;
27561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
28561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/**
298d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath *
30561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */
31561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespublic class SimpleFormatterTest extends TestCase {
32561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
338d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    SimpleFormatter sf;
348d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath
358d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    LogRecord lr;
368d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath
378d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    private static String MSG = "test msg. pls. ignore it\nadaadasfdasfd\nadfafdadfsa";
388d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath
398d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    /*
408d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath      * @see TestCase#setUp()
418d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath      */
428d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    protected void setUp() throws Exception {
438d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        super.setUp();
448d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        sf = new SimpleFormatter();
458d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        lr = new LogRecord(Level.FINE, MSG);
468d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    }
478d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath
488d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    public void testFormatNull() {
498d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        try {
508d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath            sf.format(null);
518d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath            fail("should throw nullpointer exception");
528d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        } catch (NullPointerException e) {
538d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        }
548d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        sf.format(new LogRecord(Level.SEVERE, null));
558d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    }
568d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath
578d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    public void testLocalizedFormat() {
588d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        // if bundle set, should use localized message
598d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        ResourceBundle rb = ResourceBundle
6084bf48564a8560403bd77eee23f7fad63e50340eNeil Fuller                .getBundle("bundles/com/android/java/util/logging/res");
618d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        lr.setResourceBundle(rb);
628d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        lr.setMessage("msg");
638d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        String localeMsg = rb.getString("msg");
648d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        String str = sf.format(lr);
658d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        assertTrue(str.indexOf(localeMsg) > 0);
668d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath
678d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        // if bundle not set but bundle name set, should use original message
688d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        lr.setResourceBundle(null);
6984bf48564a8560403bd77eee23f7fad63e50340eNeil Fuller        lr.setResourceBundleName("bundles/com/android/java/util/logging/res");
708d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        lr.setMessage("msg");
718d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        str = sf.format(lr);
728d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        localeMsg = rb.getString("msg");
738d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        assertTrue(str.indexOf(localeMsg) < 0);
748d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    }
758d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath
768d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    public void testFormat() {
778d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        String str = sf.format(lr);
788d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        Throwable t;
798d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath
808d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        lr.setMessage(MSG + " {0,number}");
818d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        lr.setLoggerName("logger");
828d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        lr.setResourceBundleName("rb name");
838d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        lr.setSourceClassName("class");
848d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        lr.setSourceMethodName("method");
858d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        lr.setParameters(new Object[] { new Integer(100), new Object() });
868d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        lr.setThreadID(1000);
878d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        lr.setThrown(t = new Exception("exception") {
888d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath            private static final long serialVersionUID = 1L;
898d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath
908d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath            public String getLocalizedMessage() {
918d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath                return "locale";
928d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath            }
938d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        });
948d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        lr.setSequenceNumber(12321312);
958d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        lr.setMillis(0);
968d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        str = sf.format(lr);
978d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        Calendar cal = Calendar.getInstance();
988d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        cal.setTimeInMillis(12321312);
998d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        assertTrue(str.indexOf(String.valueOf(cal.get(Calendar.YEAR))) >= 0);
1008d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        assertTrue(str.indexOf("class") > 0);
1018d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        assertTrue(str.indexOf("method") > 0);
1028d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        assertTrue(str.indexOf("100") > 0);
1038d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        assertTrue(str.indexOf(t.toString()) > 0);
1048d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        assertTrue(str.indexOf(Level.FINE.getLocalizedName()) > 0);
1058d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    }
1068d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath
1078d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    public void testGetHead() {
1088d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        assertEquals("", sf.getHead(null));
1098d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    }
1108d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath
1118d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    public void testGetTail() {
1128d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        assertEquals("", sf.getTail(null));
1138d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    }
114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes}
115