1573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal/* 2573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal * Copyright (C) 2016 The Android Open Source Project 3573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal * 4573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal * Licensed under the Apache License, Version 2.0 (the "License"); 5573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal * you may not use this file except in compliance with the License. 6573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal * You may obtain a copy of the License at 7573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal * 8573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal * http://www.apache.org/licenses/LICENSE-2.0 9573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal * 10573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal * Unless required by applicable law or agreed to in writing, software 11573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal * distributed under the License is distributed on an "AS IS" BASIS, 12573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal * See the License for the specific language governing permissions and 14573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal * limitations under the License. 15573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal */ 16573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal 17573de1504ea684a2a647613659d4771c2a315eeamukesh agrawalpackage com.android.server.wifi; 18573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal 19573de1504ea684a2a647613659d4771c2a315eeamukesh agrawalimport static org.junit.Assert.assertEquals; 20573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal 21573de1504ea684a2a647613659d4771c2a315eeamukesh agrawalimport android.test.suitebuilder.annotation.SmallTest; 22573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal 23573de1504ea684a2a647613659d4771c2a315eeamukesh agrawalimport org.junit.Before; 24573de1504ea684a2a647613659d4771c2a315eeamukesh agrawalimport org.junit.Test; 25573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal 26573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal/** 27573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal * Unit tests for {@link LogcatLog}. 28573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal */ 29573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal@SmallTest 30573de1504ea684a2a647613659d4771c2a315eeamukesh agrawalpublic class LogcatLogTest { 31573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal private static final String TAG = "LogcatLogTest"; 32573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal private LogcatLog mLogger; 33573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal 34573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal /** Initializes test fixture. */ 35573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal @Before 36573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal public void setUp() { 37573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal mLogger = new LogcatLog(TAG); 38573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal } 39573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal 40573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal /** 41573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal * Verifies that LogcatLog's LogMessage implementation correctly 42573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal * handles a format with no parameters. 43573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal * 44573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal * Note: In practice, we expect clients to use eC() and friends 45573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal * when the message is a literal. But we still want to make sure 46573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal * this functionality works. 47573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal */ 48573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal @Test 49573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal public void logMessageWorksWithParameterlessFormat() { 50573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal WifiLog.LogMessage logMessage = mLogger.err("hello world"); 51573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal logMessage.flush(); 52573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal assertEquals("hello world", logMessage.toString()); 53573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal } 54573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal 55573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal /** Verifies that LogMessage works with an empty format. */ 56573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal @Test 57573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal public void logMessageWorksWithEmptyFormat() { 58573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal WifiLog.LogMessage logMessage = mLogger.err(""); 59573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal logMessage.flush(); 60573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal assertEquals("", logMessage.toString()); 61573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal } 62573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal 63573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal /** Verifies that LogMessage works with a value-only format. */ 64573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal @Test 65573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal public void logMessageWorksWithValueOnly() { 66573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal WifiLog.LogMessage logMessage = mLogger.err("%"); 67573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal logMessage.c(1).flush(); 68573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal assertEquals("1", logMessage.toString()); 69573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal } 70573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal 71573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal /** 72573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal * Verifies that LogMessage works when the placeholder is replaced 73573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal * by the placeholder character. 74573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal */ 75573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal @Test 76573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal public void logMessageIsNotConfusedByPlaceholderInValue() { 77573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal WifiLog.LogMessage logMessage = mLogger.err("%"); 78573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal logMessage.c('%').flush(); 79573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal assertEquals("%", logMessage.toString()); 80573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal } 81573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal 82573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal /** Verifies that LogMessage works when a value is at the start of the format. */ 83573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal @Test 84573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal public void logMessageWorksWithValueAtBegin() { 85573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal WifiLog.LogMessage logMessage = mLogger.err("%stuff"); 86573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal logMessage.c(1).flush(); 87573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal assertEquals("1stuff", logMessage.toString()); 88573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal } 89573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal 90573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal /** Verifies that LogMessage works when a value is in the middle of the format. */ 91573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal @Test 92573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal public void logMessageWorksWithValueInMiddle() { 93573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal WifiLog.LogMessage logMessage = mLogger.err("s%uff"); 94573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal logMessage.c(1).flush(); 95573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal assertEquals("s1uff", logMessage.toString()); 96573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal } 97573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal 98573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal /** Verifies that LogMessage works when a value is at the end of the format. */ 99573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal @Test 100573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal public void logMessageWorksWithValueAtEnd() { 101573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal WifiLog.LogMessage logMessage = mLogger.err("stuff%"); 102573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal logMessage.c(1).flush(); 103573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal assertEquals("stuff1", logMessage.toString()); 104573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal } 105573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal 106573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal /** Verifies that LogMessage works when a format has multiple values. */ 107573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal @Test 108573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal public void logMessageWorksWithMultipleValues() { 109573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal WifiLog.LogMessage logMessage = mLogger.err("% %"); 110573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal logMessage.c("hello").c("world").flush(); 111573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal assertEquals("hello world", logMessage.toString()); 112573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal } 113573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal 114573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal /** Verifies that LogMessage works when a format has multiple values and literals. */ 115573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal @Test 116573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal public void logMessageWorksWithMultipleValuesAndLiterals() { 117573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal WifiLog.LogMessage logMessage = mLogger.err("first:% second:%"); 118573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal logMessage.c("hello").c("world").flush(); 119573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal assertEquals("first:hello second:world", logMessage.toString()); 120573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal } 121573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal 122573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal /** Verifies that LogMessage works when a format has multiple adjacent values. */ 123573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal @Test 124573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal public void logMessageWorksWithAdjacentValues() { 125573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal WifiLog.LogMessage logMessage = mLogger.err("%%"); 126573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal logMessage.c("hello").c("world").flush(); 127573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal assertEquals("helloworld", logMessage.toString()); 128573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal } 129573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal 130573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal /** Verifies that LogMessage silently ignores extraneous values. */ 131573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal @Test 132573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal public void logMessageSilentlyIgnoresExtraneousValues() { 133573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal WifiLog.LogMessage logMessage = mLogger.err("%"); 134573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal logMessage.c("hello world"); 135573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal logMessage.c("more stuff"); 136573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal logMessage.flush(); 137573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal assertEquals("hello world", logMessage.toString()); 138573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal } 139573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal 140573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal /** 141573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal * Verifies that LogMessage silently ignores extraneous values, 142573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal * even with an empty format string. 143573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal */ 144573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal @Test 145573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal public void logMessageSilentlyIgnoresExtraneousValuesEvenForEmptyFormat() { 146573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal WifiLog.LogMessage logMessage = mLogger.err(""); 147573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal logMessage.c("hello world"); 148573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal logMessage.c("more stuff"); 149573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal logMessage.flush(); 150573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal assertEquals("", logMessage.toString()); 151573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal } 152573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal 153573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal /** 154573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal * Verifies that LogMessage silently ignores extraneous values, 155573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal * even if the format string is all literals. 156573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal */ 157573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal @Test 158573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal public void logMessageSilentlyIgnoresExtraneousValuesEvenForFormatWithoutPlaceholders() { 159573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal WifiLog.LogMessage logMessage = mLogger.err("literal format"); 160573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal logMessage.c("hello world"); 161573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal logMessage.c("more stuff"); 162573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal logMessage.flush(); 163573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal assertEquals("literal format", logMessage.toString()); 164573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal } 165573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal 166573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal /** Verifies that LogMessage copies an unused placeholder to output. */ 167573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal @Test 168573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal public void logMessageCopiesUnusedPlaceholderToOutput() { 169573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal WifiLog.LogMessage logMessage = mLogger.err("%"); 170573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal logMessage.flush(); 171573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal assertEquals("%", logMessage.toString()); 172573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal } 173573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal 174573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal /** Verifies that LogMessage copies multiple unused placeholders to output. */ 175573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal @Test 176573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal public void logMessageCopiesMultipleUnusedPlaceholdersToOutput() { 177573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal WifiLog.LogMessage logMessage = mLogger.err("%%%%%"); 178573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal logMessage.flush(); 179573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal assertEquals("%%%%%", logMessage.toString()); 180573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal } 181573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal 182573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal /** 183573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal * Verifies that LogMessage copies an unused placeholder to output, 184573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal * even if preceded by non-placeholders. 185573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal */ 186573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal @Test 187573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal public void logMessageCopiesUnusedPlaceholderAtEndToOutput() { 188573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal WifiLog.LogMessage logMessage = mLogger.err("foo%"); 189573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal logMessage.flush(); 190573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal assertEquals("foo%", logMessage.toString()); 191573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal } 192573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal 193573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal /** 194573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal * Verifies that LogMessage copies an unused placeholder to output, 195573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal * even if followed by non-placeholders. 196573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal */ 197573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal @Test 198573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal public void logMessageCopiesUnusedPlaceholderAtBeginToOutput() { 199573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal WifiLog.LogMessage logMessage = mLogger.err("%foo"); 200573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal logMessage.flush(); 201573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal assertEquals("%foo", logMessage.toString()); 202573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal } 203573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal 204573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal /** 205573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal * Verifies that LogMessage copies an unused placeholder to output, 206573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal * even if it is in the middle of non-placeholders. 207573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal */ 208573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal @Test 209573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal public void logMessageCopiesUnusedPlaceholderInMiddleToOutput() { 210573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal WifiLog.LogMessage logMessage = mLogger.err("f%o"); 211573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal logMessage.flush(); 212573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal assertEquals("f%o", logMessage.toString()); 213573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal } 214573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal 215573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal /** 216573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal * Verifies that LogMessage copies multiple unused placeholders to output, 217573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal * even if they are embedded amongst non-placeholders. 218573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal */ 219573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal @Test 220573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal public void logMessageCopiesUnusedPlaceholdersInMiddleToOutput() { 221573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal WifiLog.LogMessage logMessage = mLogger.err("f%o%o%d"); 222573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal logMessage.flush(); 223573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal assertEquals("f%o%o%d", logMessage.toString()); 224573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal } 225573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal 226573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal /** 227573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal * Verifies that LogMessage preserves meta-characters in format string. 228573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal * 229573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal * Note that we deliberately test only the meta-characters that we 230573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal * expect to find in log messages. (Newline might also be 231573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal * preserved, but clients shouldn't depend on that, as messages 232573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal * that have newlines make logs hard to read.) 233573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal */ 234573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal @Test 235573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal public void logMessagePreservesMetaCharactersInFormat() { 236573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal WifiLog.LogMessage logMessage = mLogger.err("\\hello\tworld\\"); 237573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal logMessage.flush(); 238573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal assertEquals("\\hello\tworld\\", logMessage.toString()); 239573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal } 240573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal 241573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal /** Verifies that LogMessage propagates meta-characters in char values. */ 242573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal @Test 243573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal public void logMessagePropagatesMetaCharactersInCharValues() { 244573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal WifiLog.LogMessage logMessage = mLogger.err("hello%big%world"); 245573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal logMessage.c('\t').c('\\').flush(); 246573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal assertEquals("hello\tbig\\world", logMessage.toString()); 247573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal } 248573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal 249573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal /** Verifies that LogMessage propagates meta-characters in String values. */ 250573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal @Test 251573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal public void logMessagePropagatesMetaCharactersInStringValues() { 252573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal WifiLog.LogMessage logMessage = mLogger.err("%%world"); 253573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal logMessage.c("hello\t").c("big\\").flush(); 254573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal assertEquals("hello\tbig\\world", logMessage.toString()); 255573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal } 256573de1504ea684a2a647613659d4771c2a315eeamukesh agrawal} 257