1021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson/* 2021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson * Licensed to the Apache Software Foundation (ASF) under one or more 3021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson * contributor license agreements. See the NOTICE file distributed with 4021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson * this work for additional information regarding copyright ownership. 5021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson * The ASF licenses this file to You under the Apache License, Version 2.0 6021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson * (the "License"); you may not use this file except in compliance with 7021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson * the License. You may obtain a copy of the License at 8021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson * 9021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson * http://www.apache.org/licenses/LICENSE-2.0 10021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson * 11021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson * Unless required by applicable law or agreed to in writing, software 12021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson * distributed under the License is distributed on an "AS IS" BASIS, 13021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson * See the License for the specific language governing permissions and 15021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson * limitations under the License. 16021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson */ 17021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson 18021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilsonpackage libcore.java.util.logging; 19021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson 20021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilsonimport java.util.Locale; 21021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilsonimport java.util.MissingResourceException; 22021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilsonimport java.util.ResourceBundle; 23021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilsonimport java.util.logging.Filter; 24021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilsonimport java.util.logging.Handler; 25021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilsonimport java.util.logging.Level; 26021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilsonimport java.util.logging.LogManager; 27021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilsonimport java.util.logging.LogRecord; 28021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilsonimport java.util.logging.Logger; 29021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilsonimport junit.framework.TestCase; 30021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson 31021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilsonpublic class OldLoggerTest extends TestCase { 32021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson private final static String VALID_RESOURCE_BUNDLE = "bundles/java/util/logging/res"; 33021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson private final static String INVALID_RESOURCE_BUNDLE = "impossible_not_existing"; 34021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson private final static String VALID_KEY = "LOGGERTEST"; 35021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson private final static String VALID_VALUE = "Test_ZH_CN"; 36021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson 37021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson @Override protected void setUp() throws Exception { 38021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson super.setUp(); 39021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson LogManager.getLogManager().reset(); 40021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson Locale.setDefault(new Locale("zh", "CN")); 41021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson } 42021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson 43021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson @Override protected void tearDown() throws Exception { 44021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson LogManager.getLogManager().reset(); 45021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson super.tearDown(); 46021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson } 47021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson 48021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson public void testGetLoggerWithRes_InvalidResourceBundle() { 49021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson assertNull(LogManager.getLogManager().getLogger( 50021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson "testMissingResourceException")); 51021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson 52021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson assertNotNull(LogManager.getLogManager().getLogger("")); 53021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson // The root logger always exists TODO 54021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson try { 55021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson Logger.getLogger("", INVALID_RESOURCE_BUNDLE); 56021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson fail(); 57021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson } catch (MissingResourceException expected) { 58021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson } 59021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson } 60021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson 61021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson public void testGlobalLogger() { 62021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson assertNull(Logger.global.getFilter()); 63021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson assertEquals(0, Logger.global.getHandlers().length); 64021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson assertNull(Logger.global.getLevel()); 65021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson assertEquals("global", Logger.global.getName()); 66021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson assertNull(Logger.global.getParent().getParent()); 67021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson assertNull(Logger.global.getResourceBundle()); 68021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson assertNull(Logger.global.getResourceBundleName()); 69021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson assertTrue(Logger.global.getUseParentHandlers()); 70021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson assertSame(Logger.global, Logger.getLogger("global")); 71da919b1f08fa713ee78aabb3e2e324630ae1b59dElliott Hughes assertSame(Logger.global, LogManager.getLogManager().getLogger("global")); 72da919b1f08fa713ee78aabb3e2e324630ae1b59dElliott Hughes assertSame(Logger.global, Logger.getGlobal()); 73021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson } 74021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson 75021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson public void testConstructor_Normal() { 76021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson MockLogger mlog = new MockLogger("myname", VALID_RESOURCE_BUNDLE); 77021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson assertNull(mlog.getFilter()); 78021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson assertEquals(0, mlog.getHandlers().length); 79021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson assertNull(mlog.getLevel()); 80021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson assertEquals("myname", mlog.getName()); 81021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson assertNull(mlog.getParent()); 82021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson ResourceBundle rb = mlog.getResourceBundle(); 83021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson assertEquals(VALID_VALUE, rb.getString(VALID_KEY)); 84021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson assertEquals(mlog.getResourceBundleName(), VALID_RESOURCE_BUNDLE); 85021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson assertTrue(mlog.getUseParentHandlers()); 86021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson } 87021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson 88021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson public void testConstructor_Null() { 89021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson MockLogger mlog = new MockLogger(null, null); 90021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson assertNull(mlog.getFilter()); 91021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson assertEquals(0, mlog.getHandlers().length); 92021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson assertNull(mlog.getLevel()); 93021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson assertNull(mlog.getName()); 94021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson assertNull(mlog.getParent()); 95021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson assertNull(mlog.getResourceBundle()); 96021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson assertNull(mlog.getResourceBundleName()); 97021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson assertTrue(mlog.getUseParentHandlers()); 98021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson } 99021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson 100021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson public void testConstructor_InvalidName() { 101021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson MockLogger mlog = new MockLogger("...#$%%^&&()-_+=!@~./,[]{};:'\\\"?|", 102021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson null); 103021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson assertEquals("...#$%%^&&()-_+=!@~./,[]{};:'\\\"?|", mlog.getName()); 104021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson } 105021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson 106021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson /* 107021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson * Test constructor with empty name. 108021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson */ 109021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson public void testConstructor_EmptyName() { 110021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson MockLogger mlog = new MockLogger("", null); 111021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson assertEquals("", mlog.getName()); 112021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson } 113021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson 114021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson public void testConstructor_InvalidResourceBundle() { 115021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson try { 116021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson new MockLogger("testConstructor_InvalidResourceBundle", 117021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson INVALID_RESOURCE_BUNDLE); 118021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson fail("Should throw MissingResourceException!"); 119021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson } catch (MissingResourceException expected) { 120021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson } 121021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson } 122021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson 123021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson public void testGetLogger_Null() { 124021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson try { 125021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson Logger.getLogger(null, null); 126021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson fail("Should throw NullPointerException!"); 127021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson } catch (NullPointerException expected) { 128021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson } 129021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson } 130021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson 131021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson public void testGetLogger_WithParent() { 132021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson assertNull(LogManager.getLogManager().getLogger( 133021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson "testGetLogger_WithParent_ParentLogger")); 134021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson 135021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson // get root of hierarchy 136021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson Logger root = Logger.getLogger(""); 137021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson // create the parent logger 138021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson Logger pLog = Logger.getLogger("testGetLogger_WithParent_ParentLogger", 139021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson VALID_RESOURCE_BUNDLE); 140021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson pLog.setLevel(Level.CONFIG); 141021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson pLog.addHandler(new MockHandler()); 142021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson pLog.setFilter(new MockFilter()); 143021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson pLog.setUseParentHandlers(false); 144021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson // check root parent 145021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson assertEquals("testGetLogger_WithParent_ParentLogger", pLog.getName()); 146021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson assertSame(pLog.getParent(), root); 147021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson 148021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson // child part 149021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson assertNull(LogManager.getLogManager().getLogger( 150021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson "testGetLogger_WithParent_ParentLogger.child")); 151021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson // create the child logger 152021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson Logger child = Logger 153021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson .getLogger("testGetLogger_WithParent_ParentLogger.child"); 154021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson assertNull(child.getFilter()); 155021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson assertEquals(0, child.getHandlers().length); 156021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson assertNull(child.getLevel()); 157021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson assertEquals("testGetLogger_WithParent_ParentLogger.child", child 158021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson .getName()); 159021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson assertSame(child.getParent(), pLog); 160021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson assertNull(child.getResourceBundle()); 161021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson assertNull(child.getResourceBundleName()); 162021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson assertTrue(child.getUseParentHandlers()); 163021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson 164021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson // create not valid child 165021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson Logger notChild = Logger 166021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson .getLogger("testGetLogger_WithParent_ParentLogger1.child"); 167021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson assertNull(notChild.getFilter()); 168021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson assertEquals(0, notChild.getHandlers().length); 169021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson assertNull(notChild.getLevel()); 170021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson assertEquals("testGetLogger_WithParent_ParentLogger1.child", notChild 171021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson .getName()); 172021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson assertNotSame(notChild.getParent(), pLog); 173021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson assertNull(notChild.getResourceBundle()); 174021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson assertNull(notChild.getResourceBundleName()); 175021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson assertTrue(notChild.getUseParentHandlers()); 176021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson // verify two level root.parent 177021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson assertEquals("testGetLogger_WithParent_ParentLogger.child", child 178021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson .getName()); 179021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson assertSame(child.getParent().getParent(), root); 180021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson 181021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson 182021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson // create three level child 183021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson Logger childOfChild = Logger 184021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson .getLogger("testGetLogger_WithParent_ParentLogger.child.child"); 185021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson assertNull(childOfChild.getFilter()); 186021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson assertEquals(0, childOfChild.getHandlers().length); 187021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson assertSame(child.getParent().getParent(), root); 188021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson assertNull(childOfChild.getLevel()); 189021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson assertEquals("testGetLogger_WithParent_ParentLogger.child.child", 190021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson childOfChild.getName()); 191021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson 192021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson assertSame(childOfChild.getParent(), child); 193021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson assertSame(childOfChild.getParent().getParent(), pLog); 194021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson assertSame(childOfChild.getParent().getParent().getParent(), root); 195021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson assertNull(childOfChild.getResourceBundle()); 196021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson assertNull(childOfChild.getResourceBundleName()); 197021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson assertTrue(childOfChild.getUseParentHandlers()); 198021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson 199021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson // abnormal case : lookup to root parent in a hierarchy without a logger 200021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson // parent created between 201021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson assertEquals("testGetLogger_WithParent_ParentLogger1.child", notChild 202021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson .getName()); 203021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson assertSame(child.getParent().getParent(), root); 204021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson assertNotSame(child.getParent(), root); 205021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson 206021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson // abnormal cases 207021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson assertNotSame(root.getParent(), root); 208021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson Logger twoDot = Logger.getLogger(".."); 209021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson assertSame(twoDot.getParent(), root); 210021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson 211021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson } 212021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson 213021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson public static class MockLogger extends Logger { 214021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson public MockLogger(String name, String resourceBundleName) { 215021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson super(name, resourceBundleName); 216021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson } 217021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson } 218021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson 219021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson public static class MockHandler extends Handler { 220021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson public void close() {} 221021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson public void flush() {} 222021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson public void publish(LogRecord record) {} 223021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson } 224021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson 225021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson public static class MockFilter implements Filter { 226021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson public boolean isLoggable(LogRecord record) { 227021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson return false; 228021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson } 229021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson } 230021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson} 231