PoolingByteArrayOutputStreamTest.java revision d56b88ae161057e848e7410d1b9ce5b0b8c427fc
1d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru/* 2d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru * Copyright (C) 2011 The Android Open Source Project 3d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru * 4d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru * Licensed under the Apache License, Version 2.0 (the "License"); 5d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru * you may not use this file except in compliance with the License. 6d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru * You may obtain a copy of the License at 7d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru * 8d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru * http://www.apache.org/licenses/LICENSE-2.0 9d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru * 10d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru * Unless required by applicable law or agreed to in writing, software 11d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru * distributed under the License is distributed on an "AS IS" BASIS, 12d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru * See the License for the specific language governing permissions and 14d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru * limitations under the License. 15d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru */ 16d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru 17d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Querupackage com.android.volley.toolbox; 18d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru 19d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queruimport java.io.IOException; 20d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queruimport java.util.Arrays; 21d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru 22d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queruimport android.test.AndroidTestCase; 23d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queruimport android.test.suitebuilder.annotation.SmallTest; 24d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru 25d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru@SmallTest 26d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Querupublic class PoolingByteArrayOutputStreamTest extends AndroidTestCase { 27d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru @Override 28d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru public void tearDown() { 29d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru PoolingByteArrayOutputStream.setSizeLimit(0); 30d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru } 31d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru 32d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru public void testPooledOneBuffer() throws IOException { 33d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru PoolingByteArrayOutputStream.setSizeLimit(32768); 34d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru writeOneBuffer(); 35d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru writeOneBuffer(); 36d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru writeOneBuffer(); 37d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru } 38d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru 39d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru public void testPooledIndividualWrites() throws IOException { 40d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru PoolingByteArrayOutputStream.setSizeLimit(32768); 41d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru writeBytesIndividually(); 42d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru writeBytesIndividually(); 43d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru writeBytesIndividually(); 44d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru } 45d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru 46d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru public void testUnpooled() throws IOException { 47d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru PoolingByteArrayOutputStream.setSizeLimit(0); 48d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru writeOneBuffer(); 49d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru writeOneBuffer(); 50d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru writeOneBuffer(); 51d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru } 52d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru 53d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru public void testUnpooledIndividualWrites() throws IOException { 54d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru PoolingByteArrayOutputStream.setSizeLimit(0); 55d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru writeBytesIndividually(); 56d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru writeBytesIndividually(); 57d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru writeBytesIndividually(); 58d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru } 59d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru 60d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru private void writeOneBuffer() throws IOException { 61d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru byte[] data = new byte[16384]; 62d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru for (int i = 0; i < data.length; i++) { 63d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru data[i] = (byte) (i & 0xff); 64d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru } 65d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru PoolingByteArrayOutputStream os = new PoolingByteArrayOutputStream(); 66d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru os.write(data); 67d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru 68d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru assertTrue(Arrays.equals(data, os.toByteArray())); 69d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru } 70d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru 71d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru private void writeBytesIndividually() { 72d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru byte[] data = new byte[16384]; 73d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru for (int i = 0; i < data.length; i++) { 74d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru data[i] = (byte) (i & 0xff); 75d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru } 76d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru PoolingByteArrayOutputStream os = new PoolingByteArrayOutputStream(); 77d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru for (int i = 0; i < data.length; i++) { 78d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru os.write(data[i]); 79d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru } 80d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru 81d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru assertTrue(Arrays.equals(data, os.toByteArray())); 82d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru } 83d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru} 84