171cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey/* 271cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey * Copyright (C) 2013 The Android Open Source Project 371cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey * 471cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey * Licensed under the Apache License, Version 2.0 (the "License"); 571cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey * you may not use this file except in compliance with the License. 671cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey * You may obtain a copy of the License at 771cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey * 871cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey * http://www.apache.org/licenses/LICENSE-2.0 971cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey * 1071cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey * Unless required by applicable law or agreed to in writing, software 1171cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey * distributed under the License is distributed on an "AS IS" BASIS, 1271cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1371cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey * See the License for the specific language governing permissions and 1471cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey * limitations under the License. 1571cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey */ 1671cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey 1771cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkeypackage com.android.internal.util; 1871cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey 1971cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkeyimport junit.framework.TestCase; 2071cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey 2171cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkeyimport java.io.ByteArrayOutputStream; 2271cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkeyimport java.io.PrintWriter; 2371cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey 2471cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey/** 2571cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey * Tests for {@link IndentingPrintWriter}. 2671cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey */ 2771cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkeypublic class IndentingPrintWriterTest extends TestCase { 2871cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey 2971cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey private ByteArrayOutputStream mStream; 3071cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey private PrintWriter mWriter; 3171cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey 3271cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey @Override 3371cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey protected void setUp() throws Exception { 3471cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey super.setUp(); 3571cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey 3671cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey mStream = new ByteArrayOutputStream(); 3771cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey mWriter = new PrintWriter(mStream); 3871cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey } 3971cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey 4071cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey public void testMultipleIndents() throws Exception { 4171cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey final IndentingPrintWriter pw = new IndentingPrintWriter(mWriter, " "); 4271cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey 4371cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey pw.print("Hello"); 4471cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey pw.increaseIndent(); 4571cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey pw.println(); 4671cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey pw.print("World"); 4771cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey pw.increaseIndent(); 4871cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey pw.println(); 4971cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey pw.print("And"); 5071cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey pw.decreaseIndent(); 5171cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey pw.println(); 5271cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey pw.print("Goodbye"); 5371cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey pw.decreaseIndent(); 5471cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey pw.println(); 5571cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey pw.print("World"); 5671cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey pw.println(); 5771cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey 5871cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey pw.flush(); 5971cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey assertEquals("Hello\n World\n And\n Goodbye\nWorld\n", mStream.toString()); 6071cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey } 6171cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey 6271cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey public void testAdjustIndentAfterNewline() throws Exception { 6371cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey final IndentingPrintWriter pw = new IndentingPrintWriter(mWriter, " "); 6471cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey 6571cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey pw.println("Hello"); 6671cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey pw.increaseIndent(); 6771cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey pw.println("World"); 6871cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey 6971cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey pw.flush(); 7071cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey assertEquals("Hello\n World\n", mStream.toString()); 7171cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey } 7271cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey 7371cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey public void testWrapping() throws Exception { 7471cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey final IndentingPrintWriter pw = new IndentingPrintWriter(mWriter, "", 10); 7571cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey 7671cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey pw.print("dog "); 7771cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey pw.print("cat "); 7871cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey pw.print("cow "); 7971cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey pw.print("meow "); 8071cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey 8171cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey pw.flush(); 8271cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey assertEquals("dog cat \ncow meow ", mStream.toString()); 8371cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey } 8471cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey 8571cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey public void testWrappingIndented() throws Exception { 8671cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey final IndentingPrintWriter pw = new IndentingPrintWriter(mWriter, " ", 10); 8771cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey 8871cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey pw.increaseIndent(); 8971cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey pw.print("dog "); 9071cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey pw.print("meow "); 9171cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey pw.print("a "); 9271cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey pw.print("b "); 9371cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey pw.print("cow "); 9471cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey 9571cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey pw.flush(); 9671cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey assertEquals(" dog \n meow \n a b \n cow ", mStream.toString()); 9771cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey } 9871cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey 9971cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey public void testWrappingEmbeddedNewlines() throws Exception { 10071cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey final IndentingPrintWriter pw = new IndentingPrintWriter(mWriter, " ", 10); 10171cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey 10271cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey pw.increaseIndent(); 10371cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey pw.print("Lorem ipsum \ndolor sit \namet, consectetur \nadipiscing elit."); 10471cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey 10571cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey pw.flush(); 10671cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey assertEquals(" Lorem ip\n sum \n dolor si\n t \n amet, co\n" 10771cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey + " nsectetu\n r \n adipisci\n ng elit.\n", mStream.toString()); 10871cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey } 10971cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey 11071cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey public void testWrappingSingleGiant() throws Exception { 11171cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey final IndentingPrintWriter pw = new IndentingPrintWriter(mWriter, " ", 10); 11271cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey 11371cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey pw.increaseIndent(); 11471cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey pw.print("Lorem ipsum dolor sit amet, consectetur adipiscing elit."); 11571cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey 11671cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey pw.flush(); 11771cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey assertEquals(" Lorem ip\n sum dolo\n r sit am\n et, cons\n" 11871cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey + " ectetur \n adipisci\n ng elit.\n", mStream.toString()); 11971cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey } 12071cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey 12171cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey public void testWrappingPrefixedGiant() throws Exception { 12271cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey final IndentingPrintWriter pw = new IndentingPrintWriter(mWriter, " ", 10); 12371cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey 12471cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey pw.increaseIndent(); 12571cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey pw.print("foo"); 12671cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey pw.print("Lorem ipsum dolor sit amet, consectetur adipiscing elit."); 12771cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey 12871cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey pw.flush(); 12971cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey assertEquals(" foo\n Lorem ip\n sum dolo\n r sit am\n et, cons\n" 13071cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey + " ectetur \n adipisci\n ng elit.\n", mStream.toString()); 13171cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey } 13271cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey} 133