1fc95c99cfa4921fef424f3f411d013b821589e69Elliott 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
8fc95c99cfa4921fef424f3f411d013b821589e69Elliott Hughes *
9561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *     http://www.apache.org/licenses/LICENSE-2.0
10fc95c99cfa4921fef424f3f411d013b821589e69Elliott 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.io.IOException;
21561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.OutputStream;
22561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.UnsupportedEncodingException;
23561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.Permission;
24561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Properties;
25561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.logging.ErrorManager;
26561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.logging.Filter;
27561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.logging.Formatter;
28561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.logging.Handler;
29561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.logging.Level;
30561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.logging.LogManager;
31561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.logging.LogRecord;
32561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.logging.LoggingPermission;
33561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.logging.SimpleFormatter;
34561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
35561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport junit.framework.TestCase;
36561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport org.apache.harmony.logging.tests.java.util.logging.util.EnvironmentHelper;
37561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport tests.util.CallVerificationStack;
38561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
39561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/**
40561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test suite for the class java.util.logging.Handler.
41561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */
42561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespublic class HandlerTest extends TestCase {
438d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    private static String className = HandlerTest.class.getName();
448d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath
458d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    /*
468d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath      * @see TestCase#setUp()
478d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath      */
488d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    protected void setUp() throws Exception {
498d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        super.setUp();
508d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    }
518d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath
528d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    /*
538d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath      * @see TestCase#tearDown()
548d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath      */
558d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    protected void tearDown() throws Exception {
568d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        super.tearDown();
57561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        CallVerificationStack.getInstance().clear();
588d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    }
598d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath
608d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    /**
618d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath     * Constructor for HandlerTest.
628d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath     *
638d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath     * @param arg0
648d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath     */
658d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    public HandlerTest(String arg0) {
668d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        super(arg0);
678d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    }
688d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath
698d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    /*
708d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath      * Test the constructor.
718d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath      */
728d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    public void testConstructor() {
738d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        MockHandler h = new MockHandler();
748d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        assertSame(h.getLevel(), Level.ALL);
758d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        assertNull(h.getFormatter());
768d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        assertNull(h.getFilter());
778d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        assertNull(h.getEncoding());
788d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        assertTrue(h.getErrorManager() instanceof ErrorManager);
798d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    }
808d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath
818d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    /*
828d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath      * Test the constructor, with properties set
838d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath      */
848d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    public void testConstructor_Properties() throws Exception {
858d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        Properties p = new Properties();
868d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        p.put("java.util.logging.MockHandler.level", "FINE");
878d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        p
888d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath                .put("java.util.logging.MockHandler.filter", className
898d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath                        + "$MockFilter");
908d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        p.put("java.util.logging.Handler.formatter", className
918d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath                + "$MockFormatter");
928d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        p.put("java.util.logging.MockHandler.encoding", "utf-8");
938d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        LogManager.getLogManager().readConfiguration(
948d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath                EnvironmentHelper.PropertiesToInputStream(p));
958d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath
968d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        assertEquals(LogManager.getLogManager().getProperty(
978d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath                "java.util.logging.MockHandler.level"), "FINE");
988d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        assertEquals(LogManager.getLogManager().getProperty(
998d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath                "java.util.logging.MockHandler.encoding"), "utf-8");
1008d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        MockHandler h = new MockHandler();
1018d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        assertSame(h.getLevel(), Level.ALL);
1028d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        assertNull(h.getFormatter());
1038d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        assertNull(h.getFilter());
1048d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        assertNull(h.getEncoding());
1058d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        assertTrue(h.getErrorManager() instanceof ErrorManager);
1068d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        LogManager.getLogManager().reset();
1078d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    }
1088d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath
1098d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    /*
1108d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath      * Abstract method, no test needed.
1118d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath      */
1128d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    public void testClose() {
1138d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        MockHandler h = new MockHandler();
1148d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        h.close();
1158d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    }
1168d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath
1178d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    /*
1188d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath      * Abstract method, no test needed.
1198d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath      */
1208d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    public void testFlush() {
1218d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        MockHandler h = new MockHandler();
1228d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        h.flush();
1238d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    }
1248d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath
1258d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    /*
1268d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath      * Abstract method, no test needed.
1278d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath      */
1288d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    public void testPublish() {
1298d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        MockHandler h = new MockHandler();
1308d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        h.publish(null);
1318d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    }
1328d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath
1338d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    /*
1348d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath      * Test getEncoding & setEncoding methods with supported encoding.
1358d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath      */
1368d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    public void testGetSetEncoding_Normal() throws Exception {
1378d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        MockHandler h = new MockHandler();
1388d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        h.setEncoding("iso-8859-1");
1398d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        assertEquals("iso-8859-1", h.getEncoding());
1408d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    }
1418d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath
1428d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    /*
1438d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath      * Test getEncoding & setEncoding methods with null.
1448d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath      */
1458d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    public void testGetSetEncoding_Null() throws Exception {
1468d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        MockHandler h = new MockHandler();
1478d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        h.setEncoding(null);
1488d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        assertNull(h.getEncoding());
1498d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    }
1508d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath
1518d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    /*
1528d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath      * Test getEncoding & setEncoding methods with unsupported encoding.
1538d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath      */
1548d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    public void testGetSetEncoding_Unsupported() {
1558d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        MockHandler h = new MockHandler();
1568d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        try {
1578d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath            h.setEncoding("impossible");
1588d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath            fail("Should throw UnsupportedEncodingException!");
1598d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        } catch (UnsupportedEncodingException e) {
1608d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        }
1618d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        assertNull(h.getEncoding());
1628d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    }
1638d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath
1648d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    /*
1658d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath      * Test getErrorManager & setErrorManager methods with non-null value.
1668d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath      */
1678d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    public void testGetSetErrorManager_Normal() throws Exception {
1688d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        MockHandler h = new MockHandler();
1698d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        ErrorManager man = new ErrorManager();
1708d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        h.setErrorManager(man);
1718d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        assertSame(man, h.getErrorManager());
1728d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    }
1738d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath
1748d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    /*
1758d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath      * Test getErrorManager & setErrorManager methods with null.
1768d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath      */
1778d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    public void testGetSetErrorManager_Null() throws Exception {
1788d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        MockHandler h = new MockHandler();
1798d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        // test set null
1808d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        try {
1818d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath            h.setErrorManager(null);
1828d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath            fail("Should throw NullPointerException!");
1838d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        } catch (NullPointerException e) {
1848d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        }
1858d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath
1868d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        // test reset null
1878d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        try {
1888d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath            h.setErrorManager(new ErrorManager());
1898d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath            h.setErrorManager(null);
1908d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath            fail("Should throw NullPointerException!");
1918d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        } catch (NullPointerException e) {
1928d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        }
1938d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    }
1948d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath
1958d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    /*
1968d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath      * Test getFilter & setFilter methods with non-null value.
1978d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath      */
1988d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    public void testGetSetFilter_Normal() throws Exception {
1998d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        MockHandler h = new MockHandler();
2008d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        Filter f = new MockFilter();
2018d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        h.setFilter(f);
2028d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        assertSame(f, h.getFilter());
2038d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    }
2048d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath
2058d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    /*
2068d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath      * Test getFilter & setFilter methods with null.
2078d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath      */
2088d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    public void testGetSetFilter_Null() throws Exception {
2098d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        MockHandler h = new MockHandler();
2108d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        // test set null
2118d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        h.setFilter(null);
2128d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath
2138d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        // test reset null
2148d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        h.setFilter(new MockFilter());
2158d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        h.setFilter(null);
2168d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    }
2178d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath
2188d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    /*
2198d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath      * Test getFormatter & setFormatter methods with non-null value.
2208d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath      */
2218d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    public void testGetSetFormatter_Normal() throws Exception {
2228d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        MockHandler h = new MockHandler();
2238d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        Formatter f = new SimpleFormatter();
2248d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        h.setFormatter(f);
2258d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        assertSame(f, h.getFormatter());
2268d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    }
2278d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath
2288d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    /*
2298d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath      * Test getFormatter & setFormatter methods with null.
2308d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath      */
2318d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    public void testGetSetFormatter_Null() throws Exception {
2328d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        MockHandler h = new MockHandler();
2338d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        // test set null
2348d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        try {
2358d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath            h.setFormatter(null);
2368d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath            fail("Should throw NullPointerException!");
2378d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        } catch (NullPointerException e) {
2388d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        }
2398d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath
2408d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        // test reset null
2418d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        try {
2428d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath            h.setFormatter(new SimpleFormatter());
2438d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath            h.setFormatter(null);
2448d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath            fail("Should throw NullPointerException!");
2458d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        } catch (NullPointerException e) {
2468d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        }
2478d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    }
2488d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath
2498d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    /*
2508d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath      * Test getLevel & setLevel methods with non-null value.
2518d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath      */
2528d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    public void testGetSetLevel_Normal() throws Exception {
2538d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        MockHandler h = new MockHandler();
2548d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        Level f = Level.CONFIG;
2558d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        h.setLevel(f);
2568d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        assertSame(f, h.getLevel());
2578d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    }
2588d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath
2598d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    /*
2608d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath      * Test getLevel & setLevel methods with null.
2618d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath      */
2628d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    public void testGetSetLevel_Null() throws Exception {
2638d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        MockHandler h = new MockHandler();
2648d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        // test set null
2658d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        try {
2668d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath            h.setLevel(null);
2678d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath            fail("Should throw NullPointerException!");
2688d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        } catch (NullPointerException e) {
2698d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        }
2708d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath
2718d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        // test reset null
2728d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        try {
2738d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath            h.setLevel(Level.CONFIG);
2748d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath            h.setLevel(null);
2758d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath            fail("Should throw NullPointerException!");
2768d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        } catch (NullPointerException e) {
2778d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        }
2788d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    }
2798d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath
2808d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    /*
2818d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath      * Use no filter
2828d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath      */
2838d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    public void testIsLoggable_NoFilter() {
2848d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        MockHandler h = new MockHandler();
2858d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        LogRecord r = new LogRecord(Level.CONFIG, null);
2868d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        assertTrue(h.isLoggable(r));
2878d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath
2888d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        h.setLevel(Level.CONFIG);
2898d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        assertTrue(h.isLoggable(r));
2908d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath
2918d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        h.setLevel(Level.SEVERE);
2928d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        assertFalse(h.isLoggable(r));
2938d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath
2948d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        r.setLevel(Level.OFF);
2958d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        h.setLevel(Level.OFF);
2968d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        assertFalse(h.isLoggable(r));
2978d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    }
2988d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath
2998d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    /*
3008d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath      * Use a filter
3018d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath      */
3028d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    public void testIsLoggable_WithFilter() {
3038d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        MockHandler h = new MockHandler();
3048d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        LogRecord r = new LogRecord(Level.CONFIG, null);
3058d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        h.setFilter(new MockFilter());
3068d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        assertFalse(h.isLoggable(r));
3078d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath
3088d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        h.setLevel(Level.CONFIG);
3098d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        assertFalse(h.isLoggable(r));
3108d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        assertSame(r, CallVerificationStack.getInstance().pop());
3118d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath
3128d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        h.setLevel(Level.SEVERE);
3138d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        assertFalse(h.isLoggable(r));
3148d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        assertSame(r, CallVerificationStack.getInstance().pop());
3158d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    }
3168d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath
3178d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    /**
3188d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath     * @tests java.util.logging.Handler#isLoggable(LogRecord)
3198d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath     */
3208d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    public void testIsLoggable_Null() {
3218d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        MockHandler h = new MockHandler();
3228d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        try {
3238d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath            h.isLoggable(null);
3248d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath            fail("should throw NullPointerException");
3258d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        } catch (NullPointerException e) {
3268d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath            // expected
3278d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        }
3288d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    }
3298d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath
3308d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    /*
3318d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath      * Used to enable the testing of Handler because Handler is an abstract
3328d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath      * class.
3338d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath      */
3348d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    public static class MockHandler extends Handler {
3358d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath
3368d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        public void close() {
3378d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        }
3388d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath
3398d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        public void flush() {
3408d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        }
3418d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath
3428d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        public void publish(LogRecord record) {
3438d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        }
3448d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath
3458d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        public void reportError(String msg, Exception ex, int code) {
3468d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath            super.reportError(msg, ex, code);
3478d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        }
3488d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    }
3498d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath
3508d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    /*
3518d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath      * A mock filter, always return false.
3528d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath      */
3538d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    public static class MockFilter implements Filter {
3548d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath
3558d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        public boolean isLoggable(LogRecord record) {
3568d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath            CallVerificationStack.getInstance().push(record);
3578d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath            return false;
3588d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        }
3598d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    }
3608d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath
3618d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    /*
3628d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath      * A mock error manager, used to validate the expected method is called with
3638d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath      * the expected parameters.
3648d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath      */
3658d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    public static class MockErrorManager extends ErrorManager {
3668d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath
3678d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        public void error(String msg, Exception ex, int errorCode) {
3688d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath            CallVerificationStack.getInstance().push(msg);
3698d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath            CallVerificationStack.getInstance().push(ex);
3708d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath            CallVerificationStack.getInstance().push(errorCode);
3718d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        }
3728d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    }
3738d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath
3748d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    public static class NullOutputStream extends OutputStream {
375561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        @Override
376561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        public void write(int arg0) throws IOException {
377561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
378561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
379561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
380561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes}
381