18413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe/* 28413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe * Copyright (C) 2013 The Android Open Source Project 38413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe * 48413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe * Licensed under the Apache License, Version 2.0 (the "License"); 58413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe * you may not use this file except in compliance with the License. 68413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe * You may obtain a copy of the License at 78413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe * 88413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe * http://www.apache.org/licenses/LICENSE-2.0 98413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe * 108413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe * Unless required by applicable law or agreed to in writing, software 118413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe * distributed under the License is distributed on an "AS IS" BASIS, 128413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 138413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe * See the License for the specific language governing permissions and 148413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe * limitations under the License. 158413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe */ 168413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe 178413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampepackage com.android.internal.util; 188413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe 198413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampeimport junit.framework.TestCase; 208413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe 218413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampeimport java.io.ByteArrayOutputStream; 228413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampeimport java.io.IOException; 238413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampeimport java.io.PrintWriter; 248413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampeimport java.io.Writer; 258413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampeimport java.util.ArrayList; 268413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampeimport java.util.LinkedList; 278413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampeimport java.util.List; 288413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe 298413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe/** 308413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe * Tests for {@link IndentingPrintWriter}. 318413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe */ 328413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampepublic class LineBreakBufferedWriterTest extends TestCase { 338413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe 348413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe private ByteArrayOutputStream mStream; 358413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe private RecordingWriter mWriter; 368413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe 378413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe @Override 388413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe protected void setUp() throws Exception { 398413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe super.setUp(); 408413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe 418413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe mWriter = new RecordingWriter(); 428413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe } 438413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe 448413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe public void testLessThanBufferSize() { 458413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe final LineBreakBufferedWriter lw = new LineBreakBufferedWriter(mWriter, 1000); 468413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe 478413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe lw.println("Hello"); 488413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe lw.println("World"); 498413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe lw.println("Test"); 508413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe lw.flush(); 518413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe 528413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe assertOutput("Hello\nWorld\nTest\n"); 538413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe } 548413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe 558413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe public void testMoreThanBufferSizeNoLineBreaks() { 568413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe final LineBreakBufferedWriter lw = new LineBreakBufferedWriter(mWriter, 20); 578413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe 588413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe String literal = "aaaaaaaaaaaaaaa"; 598413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe lw.print(literal); 608413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe lw.print(literal); 618413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe lw.flush(); 628413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe 638413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe // Have to manually inspect output. 648413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe List<String> result = mWriter.getStrings(); 658413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe // Expect two strings. 668413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe assertEquals(2, result.size()); 678413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe // Expect the strings to sum up to the original input. 688413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe assertEquals(2 * literal.length(), result.get(0).length() + result.get(1).length()); 698413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe // Strings should only be a. 708413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe for (String s : result) { 718413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe for (int i = 0; i < s.length(); i++) { 728413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe assertEquals('a', s.charAt(i)); 738413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe } 748413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe } 758413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe } 768413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe 778413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe public void testMoreThanBufferSizeNoLineBreaksSingleString() { 788413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe final LineBreakBufferedWriter lw = new LineBreakBufferedWriter(mWriter, 20); 798413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe 808413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe String literal = "aaaaaaaaaaaaaaa"; 818413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe lw.print(literal + literal); 828413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe lw.flush(); 838413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe 848413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe // Have to manually inspect output. 858413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe List<String> result = mWriter.getStrings(); 868413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe // Expect two strings. 878413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe assertEquals(2, result.size()); 888413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe // Expect the strings to sum up to the original input. 898413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe assertEquals(2 * literal.length(), result.get(0).length() + result.get(1).length()); 908413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe // Strings should only be a. 918413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe for (String s : result) { 928413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe for (int i = 0; i < s.length(); i++) { 938413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe assertEquals('a', s.charAt(i)); 948413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe } 958413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe } 968413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe } 978413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe 988413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe public void testMoreThanBufferSizeLineBreakBefore() { 998413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe final LineBreakBufferedWriter lw = new LineBreakBufferedWriter(mWriter, 20); 1008413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe 1018413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe String literal1 = "aaaaaaaaaa\nbbbb"; 1028413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe String literal2 = "cccccccccc"; 1038413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe lw.print(literal1); 1048413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe lw.print(literal2); 1058413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe lw.flush(); 1068413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe 1078413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe assertOutput("aaaaaaaaaa", "bbbbcccccccccc"); 1088413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe } 1098413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe 1108413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe public void testMoreThanBufferSizeLineBreakBeforeSingleString() { 1118413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe final LineBreakBufferedWriter lw = new LineBreakBufferedWriter(mWriter, 20); 1128413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe 1138413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe String literal1 = "aaaaaaaaaa\nbbbb"; 1148413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe String literal2 = "cccccccccc"; 1158413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe lw.print(literal1 + literal2); 1168413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe lw.flush(); 1178413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe 1188413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe assertOutput("aaaaaaaaaa", "bbbbcccccccccc"); 1198413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe } 1208413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe 1218413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe public void testMoreThanBufferSizeLineBreakNew() { 1228413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe final LineBreakBufferedWriter lw = new LineBreakBufferedWriter(mWriter, 20); 1238413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe 1248413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe String literal1 = "aaaaaaaaaabbbbb"; 1258413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe String literal2 = "c\nd\nddddddddd"; 1268413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe lw.print(literal1); 1278413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe lw.print(literal2); 1288413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe lw.flush(); 1298413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe 1308413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe assertOutput("aaaaaaaaaabbbbbc\nd", "ddddddddd"); 1318413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe } 1328413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe 1338413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe public void testMoreThanBufferSizeLineBreakBeforeAndNew() { 1348413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe final LineBreakBufferedWriter lw = new LineBreakBufferedWriter(mWriter, 20); 1358413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe 1368413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe String literal1 = "aaaaaaaaaa\nbbbbb"; 1378413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe String literal2 = "c\nd\nddddddddd"; 1388413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe lw.print(literal1); 1398413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe lw.print(literal2); 1408413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe lw.flush(); 1418413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe 1428413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe assertOutput("aaaaaaaaaa\nbbbbbc\nd", "ddddddddd"); 1438413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe } 1448413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe 1458413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe public void testMoreThanBufferSizeInt() { 1468413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe final LineBreakBufferedWriter lw = new LineBreakBufferedWriter(mWriter, 15); 1478413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe 1488413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe int literal1 = 1234567890; 1498413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe int literal2 = 987654321; 1508413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe lw.print(literal1); 1518413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe lw.print(literal2); 1528413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe lw.flush(); 1538413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe 1548413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe assertOutput("123456789098765", "4321"); 1558413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe } 1568413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe 1578413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe public void testMoreThanBufferSizeChar() { 1588413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe final LineBreakBufferedWriter lw = new LineBreakBufferedWriter(mWriter, 15); 1598413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe 1608413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe for(int i = 0; i < 10; i++) { 1618413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe lw.print('$'); 1628413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe } 1638413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe for(int i = 0; i < 10; i++) { 1648413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe lw.print('%'); 1658413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe } 1668413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe lw.flush(); 1678413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe 1688413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe assertOutput("$$$$$$$$$$%%%%%", "%%%%%"); 1698413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe } 1708413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe 1718413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe public void testMoreThanBufferSizeLineBreakNewChars() { 1728413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe final LineBreakBufferedWriter lw = new LineBreakBufferedWriter(mWriter, 20); 1738413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe 1748413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe String literal1 = "aaaaaaaaaabbbbb"; 1758413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe String literal2 = "c\nd\nddddddddd"; 1768413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe lw.print(literal1.toCharArray()); 1778413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe lw.print(literal2.toCharArray()); 1788413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe lw.flush(); 1798413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe 1808413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe assertOutput("aaaaaaaaaabbbbbc\nd", "ddddddddd"); 1818413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe } 1828413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe 183f72cc9437b7592980003050c492526c660dc5b14Andreas Gampe public void testMoreThenInitialCapacitySimpleWrites() { 184f72cc9437b7592980003050c492526c660dc5b14Andreas Gampe // This check is different from testMoreThanBufferSizeChar. The initial capacity is lower 185f72cc9437b7592980003050c492526c660dc5b14Andreas Gampe // than the maximum buffer size here. 186f72cc9437b7592980003050c492526c660dc5b14Andreas Gampe final LineBreakBufferedWriter lw = new LineBreakBufferedWriter(mWriter, 1024, 3); 187f72cc9437b7592980003050c492526c660dc5b14Andreas Gampe 188f72cc9437b7592980003050c492526c660dc5b14Andreas Gampe for(int i = 0; i < 10; i++) { 189f72cc9437b7592980003050c492526c660dc5b14Andreas Gampe lw.print('$'); 190f72cc9437b7592980003050c492526c660dc5b14Andreas Gampe } 191f72cc9437b7592980003050c492526c660dc5b14Andreas Gampe for(int i = 0; i < 10; i++) { 192f72cc9437b7592980003050c492526c660dc5b14Andreas Gampe lw.print('%'); 193f72cc9437b7592980003050c492526c660dc5b14Andreas Gampe } 194f72cc9437b7592980003050c492526c660dc5b14Andreas Gampe lw.flush(); 195f72cc9437b7592980003050c492526c660dc5b14Andreas Gampe 196f72cc9437b7592980003050c492526c660dc5b14Andreas Gampe assertOutput("$$$$$$$$$$%%%%%%%%%%"); 197f72cc9437b7592980003050c492526c660dc5b14Andreas Gampe } 198f72cc9437b7592980003050c492526c660dc5b14Andreas Gampe 1998413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe private void assertOutput(String... golden) { 2008413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe List<String> goldList = createTestGolden(golden); 2018413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe assertEquals(goldList, mWriter.getStrings()); 2028413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe } 2038413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe 2048413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe private static List<String> createTestGolden(String... args) { 2058413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe List<String> ret = new ArrayList<String>(); 2068413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe for (String s : args) { 2078413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe ret.add(s); 2088413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe } 2098413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe return ret; 2108413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe } 2118413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe 2128413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe // A writer recording calls to write. 2138413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe private final static class RecordingWriter extends Writer { 2148413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe 2158413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe private List<String> strings = new ArrayList<String>(); 2168413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe 2178413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe public RecordingWriter() { 2188413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe } 2198413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe 2208413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe public List<String> getStrings() { 2218413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe return strings; 2228413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe } 2238413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe 2248413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe @Override 2258413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe public void write(char[] cbuf, int off, int len) { 2268413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe strings.add(new String(cbuf, off, len)); 2278413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe } 2288413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe 2298413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe @Override 2308413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe public void flush() { 2318413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe // Ignore. 2328413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe } 2338413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe 2348413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe @Override 2358413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe public void close() { 2368413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe // Ignore. 2378413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe } 2388413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe } 2398413db8c36f4ba5979cdc2b1c3e1429e6ba34d6aAndreas Gampe} 240