1f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project/* 2f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Licensed to the Apache Software Foundation (ASF) under one or more 3f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * contributor license agreements. See the NOTICE file distributed with 4f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * this work for additional information regarding copyright ownership. 5f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * The ASF licenses this file to You under the Apache License, Version 2.0 6f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * (the "License"); you may not use this file except in compliance with 7f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the License. You may obtain a copy of the License at 8f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 9f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 10f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 11f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 12f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 13f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * See the License for the specific language governing permissions and 15f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * limitations under the License. 16f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 17f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 18f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpackage org.apache.harmony.logging.tests.java.util.logging; 19f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 20f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.*; 21f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 22f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.io.ByteArrayOutputStream; 23f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.io.IOException; 24f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.io.OutputStream; 25f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.io.PrintStream; 26f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.io.UnsupportedEncodingException; 27f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.nio.CharBuffer; 28f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.nio.charset.Charset; 29f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.nio.charset.CharsetEncoder; 30f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.nio.charset.CodingErrorAction; 31f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.security.Permission; 32f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.util.Arrays; 33f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.util.Properties; 34f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.util.logging.Filter; 35f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.util.logging.Formatter; 36f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.util.logging.Handler; 37f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.util.logging.Level; 38f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.util.logging.LogManager; 39f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.util.logging.LogRecord; 40f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.util.logging.LoggingPermission; 41f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.util.logging.SimpleFormatter; 42f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.util.logging.SocketHandler; 43f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.util.logging.StreamHandler; 44f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 45f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport junit.framework.TestCase; 46f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 47f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport org.apache.harmony.logging.tests.java.util.logging.HandlerTest.NullOutputStream; 48f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport org.apache.harmony.logging.tests.java.util.logging.util.EnvironmentHelper; 49f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport tests.util.CallVerificationStack; 50f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 51f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project/** 52f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test the class StreamHandler. 53f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 54f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project@TestTargetClass(StreamHandler.class) 55f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpublic class StreamHandlerTest extends TestCase { 56f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 57f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private final static String INVALID_LEVEL = "impossible_level"; 58f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 59f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private final PrintStream err = System.err; 60f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 61f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private OutputStream errSubstituteStream = null; 62f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 63f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private static String className = StreamHandlerTest.class.getName(); 64f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 65f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private static CharsetEncoder encoder; 66f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 67f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project static { 68f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project encoder = Charset.forName("iso-8859-1").newEncoder(); 69f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project encoder.onMalformedInput(CodingErrorAction.REPLACE); 70f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project encoder.onUnmappableCharacter(CodingErrorAction.REPLACE); 71f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 72f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 73f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* 74f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @see TestCase#setUp() 75f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 76f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project protected void setUp() throws Exception { 77f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project super.setUp(); 78f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project errSubstituteStream = new NullOutputStream(); 79f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project System.setErr(new PrintStream(errSubstituteStream)); 80f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 81f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 82f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* 83f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @see TestCase#tearDown() 84f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 85f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project protected void tearDown() throws Exception { 86f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project LogManager.getLogManager().reset(); 87f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project CallVerificationStack.getInstance().clear(); 88f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project System.setErr(err); 89f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project super.tearDown(); 90f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 91f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 92f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* 93f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test the constructor with no parameter, and no relevant log manager 94f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * properties are set. 95f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 96f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 97f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 98f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies the constructor with no parameter, and no relevant log manager properties are set.", 99f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "StreamHandler", 100f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 101f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 102f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testConstructor_NoParameter_NoProperties() { 103f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull(LogManager.getLogManager().getProperty( 104f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "java.util.logging.StreamHandler.level")); 105f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull(LogManager.getLogManager().getProperty( 106f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "java.util.logging.StreamHandler.filter")); 107f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull(LogManager.getLogManager().getProperty( 108f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "java.util.logging.StreamHandler.formatter")); 109f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull(LogManager.getLogManager().getProperty( 110f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "java.util.logging.StreamHandler.encoding")); 111f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 112f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project StreamHandler h = new StreamHandler(); 113f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertSame(Level.INFO, h.getLevel()); 114f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(h.getFormatter() instanceof SimpleFormatter); 115f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull(h.getFilter()); 116f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull(h.getEncoding()); 117f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 118f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 119f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* 120f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test the constructor with insufficient privilege. 121f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 122f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 123f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 124f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies the constructor with insufficient privilege.", 125f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "StreamHandler", 126f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.io.OutputStream.class, java.util.logging.Formatter.class} 127f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 128f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testConstructor_NoParameter_InsufficientPrivilege() { 129f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull(LogManager.getLogManager().getProperty( 130f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "java.util.logging.StreamHandler.level")); 131f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull(LogManager.getLogManager().getProperty( 132f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "java.util.logging.StreamHandler.filter")); 133f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull(LogManager.getLogManager().getProperty( 134f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "java.util.logging.StreamHandler.formatter")); 135f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull(LogManager.getLogManager().getProperty( 136f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "java.util.logging.StreamHandler.encoding")); 137f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 138f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project SecurityManager oldMan = System.getSecurityManager(); 139f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project System.setSecurityManager(new MockSecurityManager()); 140f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // set a normal value 141f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 142f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project StreamHandler h = new StreamHandler(); 143f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertSame(Level.INFO, h.getLevel()); 144f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(h.getFormatter() instanceof SimpleFormatter); 145f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull(h.getFilter()); 146f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull(h.getEncoding()); 147f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } finally { 148f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project System.setSecurityManager(oldMan); 149f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 150f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 151f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 152f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* 153f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test the constructor with no parameter, and valid relevant log manager 154f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * properties are set. 155f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 156f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 157f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 158f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies the constructor with no parameter, and valid relevant log manager properties are set.", 159f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "StreamHandler", 160f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 161f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 162f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testConstructor_NoParameter_ValidProperties() throws Exception { 163f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Properties p = new Properties(); 164f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project p.put("java.util.logging.StreamHandler.level", "FINE"); 165f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project p.put("java.util.logging.StreamHandler.filter", className 166f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + "$MockFilter"); 167f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project p.put("java.util.logging.StreamHandler.formatter", className 168f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + "$MockFormatter"); 169f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project p.put("java.util.logging.StreamHandler.encoding", "iso-8859-1"); 170f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project LogManager.getLogManager().readConfiguration( 171f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project EnvironmentHelper.PropertiesToInputStream(p)); 172f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 173f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("FINE", LogManager.getLogManager().getProperty( 174f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "java.util.logging.StreamHandler.level")); 175f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("iso-8859-1", LogManager.getLogManager().getProperty( 176f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "java.util.logging.StreamHandler.encoding")); 177f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project StreamHandler h = new StreamHandler(); 178f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertSame(h.getLevel(), Level.parse("FINE")); 179f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(h.getFormatter() instanceof MockFormatter); 180f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(h.getFilter() instanceof MockFilter); 181f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("iso-8859-1", h.getEncoding()); 182f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 183f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 184f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* 185f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test the constructor with no parameter, and invalid relevant log manager 186f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * properties are set. 187f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 188f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 189f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 190f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies the constructor with no parameter, and invalid relevant log manager properties are set.", 191f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "StreamHandler", 192f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 193f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 194f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testConstructor_NoParameter_InvalidProperties() 195f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throws Exception { 196f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Properties p = new Properties(); 197f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project p.put("java.util.logging.StreamHandler.level", INVALID_LEVEL); 198f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project p.put("java.util.logging.StreamHandler.filter", className + ""); 199f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project p.put("java.util.logging.StreamHandler.formatter", className + ""); 200f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project p.put("java.util.logging.StreamHandler.encoding", "XXXX"); 201f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project LogManager.getLogManager().readConfiguration( 202f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project EnvironmentHelper.PropertiesToInputStream(p)); 203f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 204f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(INVALID_LEVEL, LogManager.getLogManager().getProperty( 205f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "java.util.logging.StreamHandler.level")); 206f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("XXXX", LogManager.getLogManager().getProperty( 207f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "java.util.logging.StreamHandler.encoding")); 208f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project StreamHandler h = new StreamHandler(); 209f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertSame(Level.INFO, h.getLevel()); 210f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(h.getFormatter() instanceof SimpleFormatter); 211f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull(h.getFilter()); 212f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull(h.getEncoding()); 213f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.publish(new LogRecord(Level.SEVERE, "test")); 214f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(CallVerificationStack.getInstance().empty()); 215f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull(h.getEncoding()); 216f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 217f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 218f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* 219f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test the constructor with normal parameter values, and no relevant log 220f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * manager properties are set. 221f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 222f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 223f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 224f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies the constructor with normal parameter values, and no relevant log manager properties are set.", 225f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "StreamHandler", 226f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.io.OutputStream.class, java.util.logging.Formatter.class} 227f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 228f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testConstructor_HasParameters_NoProperties() { 229f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull(LogManager.getLogManager().getProperty( 230f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "java.util.logging.StreamHandler.level")); 231f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull(LogManager.getLogManager().getProperty( 232f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "java.util.logging.StreamHandler.filter")); 233f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull(LogManager.getLogManager().getProperty( 234f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "java.util.logging.StreamHandler.formatter")); 235f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull(LogManager.getLogManager().getProperty( 236f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "java.util.logging.StreamHandler.encoding")); 237f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 238f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project StreamHandler h = new StreamHandler(new ByteArrayOutputStream(), 239f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new MockFormatter2()); 240f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertSame(Level.INFO, h.getLevel()); 241f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(h.getFormatter() instanceof MockFormatter2); 242f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull(h.getFilter()); 243f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull(h.getEncoding()); 244f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 245f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 246f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* 247f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test the constructor with insufficient privilege. 248f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 249f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 250f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 251f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies the constructor with insufficient privilege.", 252f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "StreamHandler", 253f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.io.OutputStream.class, java.util.logging.Formatter.class} 254f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 255f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testConstructor_HasParameter_InsufficientPrivilege() { 256f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull(LogManager.getLogManager().getProperty( 257f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "java.util.logging.StreamHandler.level")); 258f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull(LogManager.getLogManager().getProperty( 259f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "java.util.logging.StreamHandler.filter")); 260f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull(LogManager.getLogManager().getProperty( 261f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "java.util.logging.StreamHandler.formatter")); 262f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull(LogManager.getLogManager().getProperty( 263f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "java.util.logging.StreamHandler.encoding")); 264f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 265f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project SecurityManager oldMan = System.getSecurityManager(); 266f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project System.setSecurityManager(new MockSecurityManager()); 267f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // set a normal value 268f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 269f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project StreamHandler h = new StreamHandler(new ByteArrayOutputStream(), 270f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new MockFormatter2()); 271f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertSame(Level.INFO, h.getLevel()); 272f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(h.getFormatter() instanceof MockFormatter2); 273f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull(h.getFilter()); 274f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull(h.getEncoding()); 275f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } finally { 276f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project System.setSecurityManager(oldMan); 277f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 278f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 279f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 280f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* 281f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test the constructor with normal parameter values, and valid relevant log 282f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * manager properties are set. 283f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 284f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 285f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 286f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies the constructor with normal parameter values, and valid relevant log manager properties are set.", 287f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "StreamHandler", 288f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.io.OutputStream.class, java.util.logging.Formatter.class} 289f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 290f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testConstructor_HasParameters_ValidProperties() 291f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throws Exception { 292f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Properties p = new Properties(); 293f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project p.put("java.util.logging.StreamHandler.level", "FINE"); 294f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project p.put("java.util.logging.StreamHandler.filter", className 295f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + "$MockFilter"); 296f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project p.put("java.util.logging.StreamHandler.formatter", className 297f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + "$MockFormatter"); 298f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project p.put("java.util.logging.StreamHandler.encoding", "iso-8859-1"); 299f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project LogManager.getLogManager().readConfiguration( 300f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project EnvironmentHelper.PropertiesToInputStream(p)); 301f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 302f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("FINE", LogManager.getLogManager().getProperty( 303f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "java.util.logging.StreamHandler.level")); 304f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("iso-8859-1", LogManager.getLogManager().getProperty( 305f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "java.util.logging.StreamHandler.encoding")); 306f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project StreamHandler h = new StreamHandler(new ByteArrayOutputStream(), 307f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new MockFormatter2()); 308f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertSame(h.getLevel(), Level.parse("FINE")); 309f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(h.getFormatter() instanceof MockFormatter2); 310f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(h.getFilter() instanceof MockFilter); 311f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("iso-8859-1", h.getEncoding()); 312f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 313f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 314f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* 315f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test the constructor with normal parameter, and invalid relevant log 316f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * manager properties are set. 317f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 318f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 319f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 320f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies the constructor with normal parameter, and invalid relevant log manager properties are set.", 321f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "StreamHandler", 322f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.io.OutputStream.class, java.util.logging.Formatter.class} 323f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 324f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testConstructor_HasParameters_InvalidProperties() 325f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throws Exception { 326f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Properties p = new Properties(); 327f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project p.put("java.util.logging.StreamHandler.level", INVALID_LEVEL); 328f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project p.put("java.util.logging.StreamHandler.filter", className + ""); 329f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project p.put("java.util.logging.StreamHandler.formatter", className + ""); 330f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project p.put("java.util.logging.StreamHandler.encoding", "XXXX"); 331f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project LogManager.getLogManager().readConfiguration( 332f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project EnvironmentHelper.PropertiesToInputStream(p)); 333f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 334f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(INVALID_LEVEL, LogManager.getLogManager().getProperty( 335f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "java.util.logging.StreamHandler.level")); 336f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("XXXX", LogManager.getLogManager().getProperty( 337f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "java.util.logging.StreamHandler.encoding")); 338f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project StreamHandler h = new StreamHandler(new ByteArrayOutputStream(), 339f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new MockFormatter2()); 340f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertSame(Level.INFO, h.getLevel()); 341f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(h.getFormatter() instanceof MockFormatter2); 342f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull(h.getFilter()); 343f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull(h.getEncoding()); 344f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 345f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 346f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* 347f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test the constructor with null formatter, and invalid relevant log manager 348f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * properties are set. 349f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 350f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 351f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 352f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies the constructor with null formatter, and invalid relevant log manager properties are set.", 353f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "StreamHandler", 354f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.io.OutputStream.class, java.util.logging.Formatter.class} 355f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 356f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testConstructor_HasParameters_ValidPropertiesNullStream() 357f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throws Exception { 358f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Properties p = new Properties(); 359f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project p.put("java.util.logging.StreamHandler.level", "FINE"); 360f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project p.put("java.util.logging.StreamHandler.filter", className 361f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + "$MockFilter"); 362f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project p.put("java.util.logging.StreamHandler.formatter", className 363f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + "$MockFormatter"); 364f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project p.put("java.util.logging.StreamHandler.encoding", "iso-8859-1"); 365f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project LogManager.getLogManager().readConfiguration( 366f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project EnvironmentHelper.PropertiesToInputStream(p)); 367f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 368f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("FINE", LogManager.getLogManager().getProperty( 369f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "java.util.logging.StreamHandler.level")); 370f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("iso-8859-1", LogManager.getLogManager().getProperty( 371f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "java.util.logging.StreamHandler.encoding")); 372f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 373f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new StreamHandler(new ByteArrayOutputStream(), null); 374f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Should throw NullPointerException!"); 375f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 376f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 377f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 378f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 379f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 380f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* 381f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test the constructor with null output stream, and invalid relevant log 382f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * manager properties are set. 383f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 384f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 385f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 386f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies the constructor with null output stream, and invalid relevant log manager properties are set.", 387f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "StreamHandler", 388f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.io.OutputStream.class, java.util.logging.Formatter.class} 389f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 390f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testConstructor_HasParameters_ValidPropertiesNullFormatter() 391f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throws Exception { 392f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Properties p = new Properties(); 393f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project p.put("java.util.logging.StreamHandler.level", "FINE"); 394f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project p.put("java.util.logging.StreamHandler.filter", className 395f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + "$MockFilter"); 396f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project p.put("java.util.logging.StreamHandler.formatter", className 397f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + "$MockFormatter"); 398f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project p.put("java.util.logging.StreamHandler.encoding", "iso-8859-1"); 399f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project LogManager.getLogManager().readConfiguration( 400f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project EnvironmentHelper.PropertiesToInputStream(p)); 401f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 402f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("FINE", LogManager.getLogManager().getProperty( 403f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "java.util.logging.StreamHandler.level")); 404f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("iso-8859-1", LogManager.getLogManager().getProperty( 405f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "java.util.logging.StreamHandler.encoding")); 406f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 407f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new StreamHandler(null, new MockFormatter2()); 408f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Should throw NullPointerException!"); 409f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 410f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 411f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 412f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 413f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 414f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* 415f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test close() when having sufficient privilege, and a record has been 416f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * written to the output stream. 417f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 418f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 419f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 420f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies close() when having sufficient privilege, and a record has been written to the output stream.", 421f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "close", 422f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 423f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 424f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testClose_SufficientPrivilege_NormalClose() { 425f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteArrayOutputStream aos = new MockOutputStream(); 426f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project StreamHandler h = new StreamHandler(aos, new MockFormatter()); 427f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.publish(new LogRecord(Level.SEVERE, 428f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "testClose_SufficientPrivilege_NormalClose msg")); 429f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.close(); 430f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("close", CallVerificationStack.getInstance() 431f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .getCurrentSourceMethod()); 432f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull(CallVerificationStack.getInstance().pop()); 433f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("flush", CallVerificationStack.getInstance() 434f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .getCurrentSourceMethod()); 435f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project CallVerificationStack.getInstance().clear(); 436f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(aos.toString().endsWith("MockFormatter_Tail")); 437f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.close(); 438f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 439f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 440f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* 441f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test close() when having sufficient privilege, and an output stream that 442f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * always throws exceptions. 443f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 444f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 445f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 446f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies close() when having sufficient privilege, and an output stream that always throws exceptions.", 447f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "close", 448f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 449f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 450f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testClose_SufficientPrivilege_Exception() { 451f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteArrayOutputStream aos = new MockExceptionOutputStream(); 452f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project StreamHandler h = new StreamHandler(aos, new MockFormatter()); 453f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.publish(new LogRecord(Level.SEVERE, 454f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "testClose_SufficientPrivilege_Exception msg")); 455f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.flush(); 456f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.close(); 457f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 458f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 459f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* 460f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test close() when having sufficient privilege, and no record has been 461f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * written to the output stream. 462f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 463f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 464f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 465f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies close() method when having sufficient privilege, and no record has been written to the output stream.", 466f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "close", 467f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 468f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 469f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testClose_SufficientPrivilege_DirectClose() { 470f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteArrayOutputStream aos = new MockOutputStream(); 471f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project StreamHandler h = new StreamHandler(aos, new MockFormatter()); 472f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.close(); 473f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("close", CallVerificationStack.getInstance() 474f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .getCurrentSourceMethod()); 475f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull(CallVerificationStack.getInstance().pop()); 476f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("flush", CallVerificationStack.getInstance() 477f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .getCurrentSourceMethod()); 478f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project CallVerificationStack.getInstance().clear(); 479f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("MockFormatter_HeadMockFormatter_Tail", aos.toString()); 480f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 481f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 482f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* 483f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test close() when having insufficient privilege. 484f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 485f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 486f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 487f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies SecurityException.", 488f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "close", 489f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 490f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 491f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testClose_InsufficientPrivilege() { 492f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project StreamHandler h = new StreamHandler(new ByteArrayOutputStream(), 493f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new MockFormatter()); 494f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 495f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project SecurityManager oldMan = System.getSecurityManager(); 496f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project System.setSecurityManager(new MockSecurityManager()); 497f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 498f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.close(); 499f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Should throw SecurityException!"); 500f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (SecurityException e) { 501f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 502f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } finally { 503f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project System.setSecurityManager(oldMan); 504f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 505f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 506f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 507f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* 508f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test close() when having no output stream. 509f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 510f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 511f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 512f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies close() method when having no output stream.", 513f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "close", 514f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 515f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 516f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testClose_NoOutputStream() { 517f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project StreamHandler h = new StreamHandler(); 518f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.close(); 519f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 520f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 521f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* 522f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test flush(). 523f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 524f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 525f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 526f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies flush() method.", 527f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "flush", 528f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 529f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 530f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testFlush_Normal() { 531f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteArrayOutputStream aos = new MockOutputStream(); 532f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project StreamHandler h = new StreamHandler(aos, new MockFormatter()); 533f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.flush(); 534f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("flush", CallVerificationStack.getInstance().getCurrentSourceMethod()); 535f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull(CallVerificationStack.getInstance().pop()); 536f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project CallVerificationStack.getInstance().clear(); 537f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 538f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 539f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* 540f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test flush() when having no output stream. 541f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 542f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 543f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 544f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies flush() when having no output stream.", 545f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "flush", 546f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 547f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 548f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testFlush_NoOutputStream() { 549f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project StreamHandler h = new StreamHandler(); 550f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.flush(); 551f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 552f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 553f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* 554f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test isLoggable(), use no filter, having no output stream 555f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 556f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 557f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 558f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies isLoggable(), use no filter, having no output stream.", 559f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "isLoggable", 560f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.util.logging.LogRecord.class} 561f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 562f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testIsLoggable_NoOutputStream() { 563f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project StreamHandler h = new StreamHandler(); 564f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project LogRecord r = new LogRecord(Level.INFO, null); 565f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFalse(h.isLoggable(r)); 566f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 567f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.setLevel(Level.WARNING); 568f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFalse(h.isLoggable(r)); 569f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 570f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.setLevel(Level.CONFIG); 571f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFalse(h.isLoggable(r)); 572f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 573f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project r.setLevel(Level.OFF); 574f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.setLevel(Level.OFF); 575f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFalse(h.isLoggable(r)); 576f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 577f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 578f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* 579f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test isLoggable(), use no filter, having output stream 580f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 581f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 582f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 583f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies isLoggable(), use no filter, having output stream.", 584f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "isLoggable", 585f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.util.logging.LogRecord.class} 586f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 587f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testIsLoggable_NoFilter() { 588f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project StreamHandler h = new StreamHandler(new ByteArrayOutputStream(), 589f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new SimpleFormatter()); 590f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project LogRecord r = new LogRecord(Level.INFO, null); 591f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(h.isLoggable(r)); 592f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 593f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.setLevel(Level.WARNING); 594f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFalse(h.isLoggable(r)); 595f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 596f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.setLevel(Level.CONFIG); 597f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(h.isLoggable(r)); 598f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 599f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project r.setLevel(Level.OFF); 600f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.setLevel(Level.OFF); 601f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFalse(h.isLoggable(r)); 602f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 603f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 604f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* 605f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test isLoggable(), use a filter, having output stream 606f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 607f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 608f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 609f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies isLoggable(), use a filter, having output stream.", 610f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "isLoggable", 611f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.util.logging.LogRecord.class} 612f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 613f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testIsLoggable_WithFilter() { 614f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project StreamHandler h = new StreamHandler(new ByteArrayOutputStream(), 615f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new SimpleFormatter()); 616f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project LogRecord r = new LogRecord(Level.INFO, null); 617f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.setFilter(new MockFilter()); 618f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFalse(h.isLoggable(r)); 619f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertSame(r, CallVerificationStack.getInstance().pop()); 620f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 621f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.setLevel(Level.CONFIG); 622f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFalse(h.isLoggable(r)); 623f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertSame(r, CallVerificationStack.getInstance().pop()); 624f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 625f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.setLevel(Level.WARNING); 626f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFalse(h.isLoggable(r)); //level to high, data will not reach the filter 627f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(CallVerificationStack.getInstance().empty()); 628f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 629f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 630f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* 631f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test isLoggable(), null log record, having output stream. Handler should 632f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * call ErrorManager to handle exceptional case 633f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 634f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 635f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 636f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies isLoggable(), null log record, having output stream. Handler should call ErrorManager to handle exceptional case.", 637f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "isLoggable", 638f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.util.logging.LogRecord.class} 639f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 640f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testIsLoggable_Null() { 641f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project StreamHandler h = new StreamHandler(new ByteArrayOutputStream(), 642f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new SimpleFormatter()); 643f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFalse(h.isLoggable(null)); 644f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 645f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 646f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* 647f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test isLoggable(), null log record, without output stream 648f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 649f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 650f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 651f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies isLoggable(), null log record, without output stream.", 652f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "isLoggable", 653f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.util.logging.LogRecord.class} 654f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 655f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testIsLoggable_Null_NoOutputStream() { 656f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project StreamHandler h = new StreamHandler(); 657f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFalse(h.isLoggable(null)); 658f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 659f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 660f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* 661f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test publish(), use no filter, having output stream, normal log record. 662f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 663f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 664f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 665f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies publish(), use no filter, having output stream, normal log record.", 666f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "publish", 667f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.util.logging.LogRecord.class} 668f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 669f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testPublish_NoOutputStream() { 670f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project StreamHandler h = new StreamHandler(); 671f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project LogRecord r = new LogRecord(Level.INFO, "testPublish_NoOutputStream"); 672f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.publish(r); 673f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 674f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.setLevel(Level.WARNING); 675f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.publish(r); 676f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 677f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.setLevel(Level.CONFIG); 678f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.publish(r); 679f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 680f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project r.setLevel(Level.OFF); 681f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.setLevel(Level.OFF); 682f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.publish(r); 683f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 684f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 685f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* 686f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test publish(), use no filter, having output stream, normal log record. 687f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 688f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 689f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 690f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies publish(), use no filter, having output stream, normal log record.", 691f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "publish", 692f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.util.logging.LogRecord.class} 693f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 694f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testPublish_NoFilter() { 695f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteArrayOutputStream aos = new ByteArrayOutputStream(); 696f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project StreamHandler h = new StreamHandler(aos, new MockFormatter()); 697f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 698f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project LogRecord r = new LogRecord(Level.INFO, "testPublish_NoFilter"); 699f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.setLevel(Level.INFO); 700f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.publish(r); 701f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.flush(); 702f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("MockFormatter_Head" + "testPublish_NoFilter", aos 703f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .toString()); 704f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 705f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.setLevel(Level.WARNING); 706f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.publish(r); 707f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.flush(); 708f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("MockFormatter_Head" + "testPublish_NoFilter", aos 709f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .toString()); 710f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 711f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.setLevel(Level.CONFIG); 712f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.publish(r); 713f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.flush(); 714f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("MockFormatter_Head" + "testPublish_NoFilter" 715f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + "testPublish_NoFilter", aos.toString()); 716f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 717f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project r.setLevel(Level.OFF); 718f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.setLevel(Level.OFF); 719f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.publish(r); 720f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.flush(); 721f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("MockFormatter_Head" + "testPublish_NoFilter" 722f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + "testPublish_NoFilter", aos.toString()); 723f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 724f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 725f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* 726f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test publish(), use a filter, having output stream, normal log record. 727f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 728f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 729f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 730f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies publish(), use a filter, having output stream, normal log record.", 731f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "publish", 732f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.util.logging.LogRecord.class} 733f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 734f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testPublish_WithFilter() { 735f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteArrayOutputStream aos = new ByteArrayOutputStream(); 736f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project StreamHandler h = new StreamHandler(aos, new MockFormatter()); 737f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.setFilter(new MockFilter()); 738f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 739f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project LogRecord r = new LogRecord(Level.INFO, "testPublish_WithFilter"); 740f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.setLevel(Level.INFO); 741f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.publish(r); 742f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.flush(); 743f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("", aos.toString()); 744f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertSame(r, CallVerificationStack.getInstance().pop()); 745f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 746f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.setLevel(Level.WARNING); 747f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.publish(r); 748f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.flush(); 749f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("", aos.toString()); 750f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(CallVerificationStack.getInstance().empty()); 751f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 752f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.setLevel(Level.CONFIG); 753f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.publish(r); 754f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.flush(); 755f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("", aos.toString()); 756f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertSame(r, CallVerificationStack.getInstance().pop()); 757f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 758f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project r.setLevel(Level.OFF); 759f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.setLevel(Level.OFF); 760f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.publish(r); 761f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.flush(); 762f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("", aos.toString()); 763f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(CallVerificationStack.getInstance().empty()); 764f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 765f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 766f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* 767f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test publish(), null log record, handler should call ErrorManager to 768f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * handle exceptional case 769f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 770f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 771f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 772f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies publish(), null log record, handler should call ErrorManager to handle exceptional case.", 773f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "publish", 774f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.util.logging.LogRecord.class} 775f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 776f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testPublish_Null() { 777f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project StreamHandler h = new StreamHandler(new ByteArrayOutputStream(), 778f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new SimpleFormatter()); 779f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.publish(null); 780f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 781f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 782f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* 783f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test publish(), null log record, without output stream 784f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 785f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 786f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 787f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies publish(), null log record, without output stream.", 788f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "publish", 789f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.util.logging.LogRecord.class} 790f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 791f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testPublish_Null_NoOutputStream() { 792f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project StreamHandler h = new StreamHandler(); 793f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.publish(null); 794f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // regression test for Harmony-1279 795f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project MockFilter filter = new MockFilter(); 796f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.setLevel(Level.FINER); 797f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.setFilter(filter); 798f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project LogRecord record = new LogRecord(Level.FINE, "abc"); 799f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.publish(record); 800f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // verify that filter.isLoggable is not called, because there's no 801f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // associated output stream. 802f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(CallVerificationStack.getInstance().empty()); 803f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 804f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 805f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* 806f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test publish(), a log record with empty msg, having output stream 807f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 808f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 809f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 810f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies publish(), a log record with empty msg, having output stream.", 811f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "publish", 812f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.util.logging.LogRecord.class} 813f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 814f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testPublish_EmptyMsg() { 815f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteArrayOutputStream aos = new ByteArrayOutputStream(); 816f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project StreamHandler h = new StreamHandler(aos, new MockFormatter()); 817f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project LogRecord r = new LogRecord(Level.INFO, ""); 818f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.publish(r); 819f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.flush(); 820f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("MockFormatter_Head", aos.toString()); 821f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 822f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 823f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* 824f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test publish(), a log record with null msg, having output stream 825f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 826f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 827f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 828f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies publish(), a log record with null msg, having output stream.", 829f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "publish", 830f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.util.logging.LogRecord.class} 831f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 832f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testPublish_NullMsg() { 833f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteArrayOutputStream aos = new ByteArrayOutputStream(); 834f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project StreamHandler h = new StreamHandler(aos, new MockFormatter()); 835f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project LogRecord r = new LogRecord(Level.INFO, null); 836f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.publish(r); 837f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.flush(); 838f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("MockFormatter_Head", aos.toString()); 839f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 840f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 841f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* 842f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test publish(), after close. 843f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 844f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 845f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 846f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies publish(), after close.", 847f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "publish", 848f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.util.logging.LogRecord.class} 849f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 850f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testPublish_AfterClose() throws Exception { 851f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Properties p = new Properties(); 852f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project p.put("java.util.logging.StreamHandler.level", "FINE"); 853f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project LogManager.getLogManager().readConfiguration( 854f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project EnvironmentHelper.PropertiesToInputStream(p)); 855f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 856f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteArrayOutputStream aos = new ByteArrayOutputStream(); 857f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project StreamHandler h = new StreamHandler(aos, new MockFormatter()); 858f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertSame(h.getLevel(), Level.FINE); 859f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project LogRecord r = new LogRecord(Level.INFO, "testPublish_NoFormatter"); 860f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(h.isLoggable(r)); 861f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.close(); 862f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFalse(h.isLoggable(r)); 863f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.publish(r); 864f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.flush(); 865f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("MockFormatter_HeadMockFormatter_Tail", aos.toString()); 866f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 867f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 868f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* 869f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test setEncoding() method with supported encoding. 870f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 871f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 872f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 873f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies setEncoding() method with supported encoding.", 874f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "setEncoding", 875f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.lang.String.class} 876f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 877f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testSetEncoding_Normal() throws Exception { 878f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteArrayOutputStream aos = new ByteArrayOutputStream(); 879f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project StreamHandler h = new StreamHandler(aos, new MockFormatter()); 880f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.setEncoding("iso-8859-1"); 881f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("iso-8859-1", h.getEncoding()); 882f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project LogRecord r = new LogRecord(Level.INFO, "\u6881\u884D\u8F69"); 883f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.publish(r); 884f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.flush(); 885f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 886f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte[] bytes = encoder.encode( 887f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project CharBuffer.wrap("MockFormatter_Head" + "\u6881\u884D\u8F69")) 888f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .array(); 889f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(Arrays.equals(bytes, aos.toByteArray())); 890f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 891f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 892f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* 893f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test setEncoding() method with supported encoding, after a log record 894f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * has been written. 895f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 896f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 897f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 898f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies setEncoding() method with supported encoding, after a log record has been written.", 899f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "setEncoding", 900f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.lang.String.class} 901f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 902f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testSetEncoding_AfterPublish() throws Exception { 903f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteArrayOutputStream aos = new ByteArrayOutputStream(); 904f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project StreamHandler h = new StreamHandler(aos, new MockFormatter()); 905f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.setEncoding("iso-8859-1"); 906f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("iso-8859-1", h.getEncoding()); 907f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project LogRecord r = new LogRecord(Level.INFO, "\u6881\u884D\u8F69"); 908f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.publish(r); 909f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.flush(); 910f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(Arrays.equals(aos.toByteArray(), encoder.encode( 911f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project CharBuffer.wrap("MockFormatter_Head" + "\u6881\u884D\u8F69")) 912f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .array())); 913f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 914f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.setEncoding("iso8859-1"); 915f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("iso8859-1", h.getEncoding()); 916f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project r = new LogRecord(Level.INFO, "\u6881\u884D\u8F69"); 917f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.publish(r); 918f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.flush(); 919f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFalse(Arrays.equals(aos.toByteArray(), encoder.encode( 920f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project CharBuffer.wrap("MockFormatter_Head" + "\u6881\u884D\u8F69" 921f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + "testSetEncoding_Normal2")).array())); 922f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte[] b0 = aos.toByteArray(); 923f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte[] b1 = encoder.encode( 924f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project CharBuffer.wrap("MockFormatter_Head" + "\u6881\u884D\u8F69")) 925f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .array(); 926f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte[] b2 = encoder.encode(CharBuffer.wrap("\u6881\u884D\u8F69")) 927f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .array(); 928f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte[] b3 = new byte[b1.length + b2.length]; 929f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project System.arraycopy(b1, 0, b3, 0, b1.length); 930f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project System.arraycopy(b2, 0, b3, b1.length, b2.length); 931f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(Arrays.equals(b0, b3)); 932f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 933f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 934f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* 935f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test setEncoding() methods with null. 936f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 937f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 938f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 939f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies setEncoding() methods with null.", 940f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "setEncoding", 941f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.lang.String.class} 942f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 943f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testSetEncoding_Null() throws Exception { 944f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project StreamHandler h = new StreamHandler(); 945f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.setEncoding(null); 946f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull(h.getEncoding()); 947f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 948f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 949f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* 950f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test setEncoding() methods with unsupported encoding. 951f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 952f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 953f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 954f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies setEncoding() methods with unsupported encoding.", 955f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "setEncoding", 956f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.lang.String.class} 957f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 958f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testSetEncoding_Unsupported() { 959f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project StreamHandler h = new StreamHandler(); 960f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 961f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.setEncoding("impossible"); 962f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Should throw UnsupportedEncodingException!"); 963f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (UnsupportedEncodingException e) { 964f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 965f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 966f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull(h.getEncoding()); 967f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 968f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 969f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* 970f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test setEncoding() with insufficient privilege. 971f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 972f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 973f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 974f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies setEncoding() method with insufficient privilege.", 975f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "setEncoding", 976f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.lang.String.class} 977f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 978f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testSetEncoding_InsufficientPrivilege() throws Exception { 979f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project StreamHandler h = new StreamHandler(); 980f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project SecurityManager oldMan = System.getSecurityManager(); 981f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project System.setSecurityManager(new MockSecurityManager()); 982f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // set a normal value 983f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 984f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.setEncoding("iso-8859-1"); 985f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Should throw SecurityException!"); 986f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (SecurityException e) { 987f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 988f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } finally { 989f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project System.setSecurityManager(oldMan); 990f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 991f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull(h.getEncoding()); 992f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project System.setSecurityManager(new MockSecurityManager()); 993f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // set an invalid value 994f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 995f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 996f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.setEncoding("impossible"); 997f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Should throw SecurityException!"); 998f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (SecurityException e) { 999f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 1000f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } finally { 1001f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project System.setSecurityManager(oldMan); 1002f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1003f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull(h.getEncoding()); 1004f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1005f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1006f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* 1007f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test setEncoding() methods will flush a stream before setting. 1008f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 1009f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 1010f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 1011f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies that setEncoding() method will flush a stream before setting.", 1012f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "setEncoding", 1013f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.lang.String.class} 1014f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 1015f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testSetEncoding_FlushBeforeSetting() throws Exception { 1016f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteArrayOutputStream aos = new ByteArrayOutputStream(); 1017f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project StreamHandler h = new StreamHandler(aos, new MockFormatter()); 1018f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project LogRecord r = new LogRecord(Level.INFO, "abcd"); 1019f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.publish(r); 1020f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFalse(aos.toString().indexOf("abcd") > 0); 1021f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.setEncoding("iso-8859-1"); 1022f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(aos.toString().indexOf("abcd") > 0); 1023f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1024f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1025f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* 1026f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test setOutputStream() with null. 1027f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 1028f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 1029f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 1030f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies setOutputStream() method with null.", 1031f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "setOutputStream", 1032f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.io.OutputStream.class} 1033f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 1034f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testSetOutputStream_null() { 1035f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project MockStreamHandler h = new MockStreamHandler( 1036f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new ByteArrayOutputStream(), new SimpleFormatter()); 1037f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1038f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.setOutputStream(null); 1039f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Should throw NullPointerException!"); 1040f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 1041f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 1042f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1043f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1044f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1045f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* 1046f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test setOutputStream() under normal condition. 1047f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 1048f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 1049f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 1050f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies setOutputStream() method under normal condition.", 1051f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "setOutputStream", 1052f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.io.OutputStream.class} 1053f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 1054f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testSetOutputStream_Normal() { 1055f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteArrayOutputStream aos = new ByteArrayOutputStream(); 1056f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project MockStreamHandler h = new MockStreamHandler(aos, new MockFormatter()); 1057f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1058f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project LogRecord r = new LogRecord(Level.INFO, "testSetOutputStream_Normal"); 1059f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.publish(r); 1060f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertSame(r, CallVerificationStack.getInstance().pop()); 1061f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(CallVerificationStack.getInstance().empty()); 1062f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.flush(); 1063f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("MockFormatter_Head" + "testSetOutputStream_Normal", aos 1064f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .toString()); 1065f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1066f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteArrayOutputStream aos2 = new ByteArrayOutputStream(); 1067f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.setOutputStream(aos2); 1068f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("MockFormatter_Head" + "testSetOutputStream_Normal" 1069f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + "MockFormatter_Tail", aos.toString()); 1070f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project r = new LogRecord(Level.INFO, "testSetOutputStream_Normal2"); 1071f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.publish(r); 1072f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertSame(r, CallVerificationStack.getInstance().pop()); 1073f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(CallVerificationStack.getInstance().empty()); 1074f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.flush(); 1075f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("MockFormatter_Head" + "testSetOutputStream_Normal2", aos2 1076f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .toString()); 1077f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("MockFormatter_Head" + "testSetOutputStream_Normal" 1078f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + "MockFormatter_Tail", aos.toString()); 1079f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1080f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1081f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* 1082f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test setOutputStream() after close. 1083f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 1084f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 1085f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 1086f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies setOutputStream() method after close.", 1087f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "setOutputStream", 1088f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.io.OutputStream.class} 1089f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 1090f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testSetOutputStream_AfterClose() { 1091f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteArrayOutputStream aos = new ByteArrayOutputStream(); 1092f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project MockStreamHandler h = new MockStreamHandler(aos, new MockFormatter()); 1093f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1094f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project LogRecord r = new LogRecord(Level.INFO, "testSetOutputStream_Normal"); 1095f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.publish(r); 1096f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertSame(r, CallVerificationStack.getInstance().pop()); 1097f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(CallVerificationStack.getInstance().empty()); 1098f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.flush(); 1099f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("MockFormatter_Head" + "testSetOutputStream_Normal", aos 1100f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .toString()); 1101f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.close(); 1102f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1103f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteArrayOutputStream aos2 = new ByteArrayOutputStream(); 1104f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.setOutputStream(aos2); 1105f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("MockFormatter_Head" + "testSetOutputStream_Normal" 1106f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + "MockFormatter_Tail", aos.toString()); 1107f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project r = new LogRecord(Level.INFO, "testSetOutputStream_Normal2"); 1108f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.publish(r); 1109f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertSame(r, CallVerificationStack.getInstance().pop()); 1110f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(CallVerificationStack.getInstance().empty()); 1111f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.flush(); 1112f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("MockFormatter_Head" + "testSetOutputStream_Normal2", aos2 1113f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .toString()); 1114f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("MockFormatter_Head" + "testSetOutputStream_Normal" 1115f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + "MockFormatter_Tail", aos.toString()); 1116f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1117f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1118f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* 1119f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test setOutputStream() when having insufficient privilege. 1120f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 1121f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 1122f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 1123f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies setOutputStream() method when having insufficient privilege.", 1124f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "setOutputStream", 1125f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.io.OutputStream.class} 1126f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 1127f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testSetOutputStream_InsufficientPrivilege() { 1128f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project MockStreamHandler h = new MockStreamHandler(); 1129f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project SecurityManager oldMan = System.getSecurityManager(); 1130f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project System.setSecurityManager(new MockSecurityManager()); 1131f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1132f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1133f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.setOutputStream(new ByteArrayOutputStream()); 1134f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Should throw SecurityException!"); 1135f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (SecurityException e) { 1136f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 1137f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } finally { 1138f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project System.setSecurityManager(oldMan); 1139f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1140f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1141f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h = new MockStreamHandler(); 1142f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project System.setSecurityManager(new MockSecurityManager()); 1143f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1144f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.setOutputStream(null); 1145f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Should throw NullPointerException!"); 1146f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 1147f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 1148f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } finally { 1149f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project System.setSecurityManager(oldMan); 1150f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1151f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1152f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1153f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* 1154f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * A mock stream handler, expose setOutputStream. 1155f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 1156f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public static class MockStreamHandler extends StreamHandler { 1157f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public MockStreamHandler() { 1158f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project super(); 1159f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1160f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1161f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public MockStreamHandler(OutputStream out, Formatter formatter) { 1162f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project super(out, formatter); 1163f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1164f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1165f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void setOutputStream(OutputStream out) { 1166f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project super.setOutputStream(out); 1167f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1168f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1169f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public boolean isLoggable(LogRecord r) { 1170f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project CallVerificationStack.getInstance().push(r); 1171f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return super.isLoggable(r); 1172f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1173f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1174f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1175f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* 1176f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * A mock filter, always return false. 1177f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 1178f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public static class MockFilter implements Filter { 1179f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1180f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public boolean isLoggable(LogRecord record) { 1181f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project CallVerificationStack.getInstance().push(record); 1182f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return false; 1183f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1184f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1185f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1186f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* 1187f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * A mock formatter. 1188f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 1189f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public static class MockFormatter extends java.util.logging.Formatter { 1190f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public String format(LogRecord r) { 1191f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // System.out.println("formatter called..."); 1192f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return super.formatMessage(r); 1193f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1194f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1195f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* 1196f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * (non-Javadoc) 1197f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 1198f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @see java.util.logging.Formatter#getHead(java.util.logging.Handler) 1199f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 1200f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public String getHead(Handler h) { 1201f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return "MockFormatter_Head"; 1202f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1203f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1204f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* 1205f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * (non-Javadoc) 1206f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 1207f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @see java.util.logging.Formatter#getTail(java.util.logging.Handler) 1208f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 1209f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public String getTail(Handler h) { 1210f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return "MockFormatter_Tail"; 1211f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1212f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1213f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1214f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* 1215f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Another mock formatter. 1216f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 1217f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public static class MockFormatter2 extends java.util.logging.Formatter { 1218f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public String format(LogRecord r) { 1219f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // System.out.println("formatter2 called..."); 1220f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return r.getMessage(); 1221f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1222f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1223f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1224f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* 1225f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * A mock output stream. 1226f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 1227f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public static class MockOutputStream extends ByteArrayOutputStream { 1228f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1229f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* 1230f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * (non-Javadoc) 1231f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 1232f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @see java.io.OutputStream#close() 1233f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 1234f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void close() throws IOException { 1235f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project CallVerificationStack.getInstance().push(null); 1236f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project super.close(); 1237f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1238f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1239f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* 1240f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * (non-Javadoc) 1241f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 1242f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @see java.io.OutputStream#flush() 1243f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 1244f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void flush() throws IOException { 1245f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project CallVerificationStack.getInstance().push(null); 1246f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project super.flush(); 1247f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1248f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1249f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* 1250f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * (non-Javadoc) 1251f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 1252f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @see java.io.OutputStream#write(int) 1253f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 1254f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void write(int oneByte) { 1255f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project super.write(oneByte); 1256f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1257f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1258f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1259f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* 1260f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * A mock output stream that always throw exception. 1261f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 1262f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public static class MockExceptionOutputStream extends ByteArrayOutputStream { 1263f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1264f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* 1265f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * (non-Javadoc) 1266f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 1267f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @see java.io.OutputStream#close() 1268f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 1269f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void close() throws IOException { 1270f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throw new IOException(); 1271f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1272f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1273f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* 1274f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * (non-Javadoc) 1275f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 1276f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @see java.io.OutputStream#flush() 1277f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 1278f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void flush() throws IOException { 1279f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throw new IOException(); 1280f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1281f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1282f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* 1283f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * (non-Javadoc) 1284f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 1285f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @see java.io.OutputStream#write(byte[], int, int) 1286f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 1287f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public synchronized void write(byte[] buffer, int offset, int count) { 1288f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throw new NullPointerException(); 1289f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1290f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1291f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* 1292f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * (non-Javadoc) 1293f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 1294f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @see java.io.OutputStream#write(int) 1295f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 1296f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public synchronized void write(int oneByte) { 1297f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throw new NullPointerException(); 1298f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1299f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1300f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1301f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* 1302f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Used to grant all permissions except logging control. 1303f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 1304f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public static class MockSecurityManager extends SecurityManager { 1305f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1306f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public MockSecurityManager() { 1307f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1308f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1309f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void checkPermission(Permission perm) { 1310f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // grant all permissions except logging control 1311f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (perm instanceof LoggingPermission) { 1312f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throw new SecurityException(); 1313f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1314f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1315f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1316f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void checkPermission(Permission perm, Object context) { 1317f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // grant all permissions except logging control 1318f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (perm instanceof LoggingPermission) { 1319f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throw new SecurityException(); 1320f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1321f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1322f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1323f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1324f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project} 1325