16772bce3d3322ccbcf6481545ffe895d5d401b39Jean-Baptiste Queru/*
26772bce3d3322ccbcf6481545ffe895d5d401b39Jean-Baptiste Queru * Copyright (C) 2012 The Android Open Source Project
36772bce3d3322ccbcf6481545ffe895d5d401b39Jean-Baptiste Queru *
46772bce3d3322ccbcf6481545ffe895d5d401b39Jean-Baptiste Queru * Licensed under the Apache License, Version 2.0 (the "License");
56772bce3d3322ccbcf6481545ffe895d5d401b39Jean-Baptiste Queru * you may not use this file except in compliance with the License.
66772bce3d3322ccbcf6481545ffe895d5d401b39Jean-Baptiste Queru * You may obtain a copy of the License at
76772bce3d3322ccbcf6481545ffe895d5d401b39Jean-Baptiste Queru *
86772bce3d3322ccbcf6481545ffe895d5d401b39Jean-Baptiste Queru *      http://www.apache.org/licenses/LICENSE-2.0
96772bce3d3322ccbcf6481545ffe895d5d401b39Jean-Baptiste Queru *
106772bce3d3322ccbcf6481545ffe895d5d401b39Jean-Baptiste Queru * Unless required by applicable law or agreed to in writing, software
116772bce3d3322ccbcf6481545ffe895d5d401b39Jean-Baptiste Queru * distributed under the License is distributed on an "AS IS" BASIS,
126772bce3d3322ccbcf6481545ffe895d5d401b39Jean-Baptiste Queru * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
136772bce3d3322ccbcf6481545ffe895d5d401b39Jean-Baptiste Queru * See the License for the specific language governing permissions and
146772bce3d3322ccbcf6481545ffe895d5d401b39Jean-Baptiste Queru * limitations under the License.
156772bce3d3322ccbcf6481545ffe895d5d401b39Jean-Baptiste Queru */
166772bce3d3322ccbcf6481545ffe895d5d401b39Jean-Baptiste Queru
176772bce3d3322ccbcf6481545ffe895d5d401b39Jean-Baptiste Querupackage com.android.volley.toolbox;
186772bce3d3322ccbcf6481545ffe895d5d401b39Jean-Baptiste Queru
196772bce3d3322ccbcf6481545ffe895d5d401b39Jean-Baptiste Queruimport android.test.AndroidTestCase;
206772bce3d3322ccbcf6481545ffe895d5d401b39Jean-Baptiste Queru
216772bce3d3322ccbcf6481545ffe895d5d401b39Jean-Baptiste Querupublic class ByteArrayPoolTest extends AndroidTestCase {
226772bce3d3322ccbcf6481545ffe895d5d401b39Jean-Baptiste Queru    public void testReusesBuffer() {
236772bce3d3322ccbcf6481545ffe895d5d401b39Jean-Baptiste Queru        ByteArrayPool pool = new ByteArrayPool(32);
246772bce3d3322ccbcf6481545ffe895d5d401b39Jean-Baptiste Queru
256772bce3d3322ccbcf6481545ffe895d5d401b39Jean-Baptiste Queru        byte[] buf1 = pool.getBuf(16);
266772bce3d3322ccbcf6481545ffe895d5d401b39Jean-Baptiste Queru        byte[] buf2 = pool.getBuf(16);
276772bce3d3322ccbcf6481545ffe895d5d401b39Jean-Baptiste Queru
286772bce3d3322ccbcf6481545ffe895d5d401b39Jean-Baptiste Queru        pool.returnBuf(buf1);
296772bce3d3322ccbcf6481545ffe895d5d401b39Jean-Baptiste Queru        pool.returnBuf(buf2);
306772bce3d3322ccbcf6481545ffe895d5d401b39Jean-Baptiste Queru
316772bce3d3322ccbcf6481545ffe895d5d401b39Jean-Baptiste Queru        byte[] buf3 = pool.getBuf(16);
326772bce3d3322ccbcf6481545ffe895d5d401b39Jean-Baptiste Queru        byte[] buf4 = pool.getBuf(16);
336772bce3d3322ccbcf6481545ffe895d5d401b39Jean-Baptiste Queru        assertTrue(buf3 == buf1 || buf3 == buf2);
346772bce3d3322ccbcf6481545ffe895d5d401b39Jean-Baptiste Queru        assertTrue(buf4 == buf1 || buf4 == buf2);
356772bce3d3322ccbcf6481545ffe895d5d401b39Jean-Baptiste Queru        assertTrue(buf3 != buf4);
366772bce3d3322ccbcf6481545ffe895d5d401b39Jean-Baptiste Queru    }
376772bce3d3322ccbcf6481545ffe895d5d401b39Jean-Baptiste Queru
386772bce3d3322ccbcf6481545ffe895d5d401b39Jean-Baptiste Queru    public void testObeysSizeLimit() {
396772bce3d3322ccbcf6481545ffe895d5d401b39Jean-Baptiste Queru        ByteArrayPool pool = new ByteArrayPool(32);
406772bce3d3322ccbcf6481545ffe895d5d401b39Jean-Baptiste Queru
416772bce3d3322ccbcf6481545ffe895d5d401b39Jean-Baptiste Queru        byte[] buf1 = pool.getBuf(16);
426772bce3d3322ccbcf6481545ffe895d5d401b39Jean-Baptiste Queru        byte[] buf2 = pool.getBuf(16);
436772bce3d3322ccbcf6481545ffe895d5d401b39Jean-Baptiste Queru        byte[] buf3 = pool.getBuf(16);
446772bce3d3322ccbcf6481545ffe895d5d401b39Jean-Baptiste Queru
456772bce3d3322ccbcf6481545ffe895d5d401b39Jean-Baptiste Queru        pool.returnBuf(buf1);
466772bce3d3322ccbcf6481545ffe895d5d401b39Jean-Baptiste Queru        pool.returnBuf(buf2);
476772bce3d3322ccbcf6481545ffe895d5d401b39Jean-Baptiste Queru        pool.returnBuf(buf3);
486772bce3d3322ccbcf6481545ffe895d5d401b39Jean-Baptiste Queru
496772bce3d3322ccbcf6481545ffe895d5d401b39Jean-Baptiste Queru        byte[] buf4 = pool.getBuf(16);
506772bce3d3322ccbcf6481545ffe895d5d401b39Jean-Baptiste Queru        byte[] buf5 = pool.getBuf(16);
516772bce3d3322ccbcf6481545ffe895d5d401b39Jean-Baptiste Queru        byte[] buf6 = pool.getBuf(16);
526772bce3d3322ccbcf6481545ffe895d5d401b39Jean-Baptiste Queru
536772bce3d3322ccbcf6481545ffe895d5d401b39Jean-Baptiste Queru        assertTrue(buf4 == buf2 || buf4 == buf3);
546772bce3d3322ccbcf6481545ffe895d5d401b39Jean-Baptiste Queru        assertTrue(buf5 == buf2 || buf5 == buf3);
556772bce3d3322ccbcf6481545ffe895d5d401b39Jean-Baptiste Queru        assertTrue(buf4 != buf5);
566772bce3d3322ccbcf6481545ffe895d5d401b39Jean-Baptiste Queru        assertTrue(buf6 != buf1 && buf6 != buf2 && buf6 != buf3);
576772bce3d3322ccbcf6481545ffe895d5d401b39Jean-Baptiste Queru    }
586772bce3d3322ccbcf6481545ffe895d5d401b39Jean-Baptiste Queru
596772bce3d3322ccbcf6481545ffe895d5d401b39Jean-Baptiste Queru    public void testReturnsBufferWithRightSize() {
606772bce3d3322ccbcf6481545ffe895d5d401b39Jean-Baptiste Queru        ByteArrayPool pool = new ByteArrayPool(32);
616772bce3d3322ccbcf6481545ffe895d5d401b39Jean-Baptiste Queru
626772bce3d3322ccbcf6481545ffe895d5d401b39Jean-Baptiste Queru        byte[] buf1 = pool.getBuf(16);
636772bce3d3322ccbcf6481545ffe895d5d401b39Jean-Baptiste Queru        pool.returnBuf(buf1);
646772bce3d3322ccbcf6481545ffe895d5d401b39Jean-Baptiste Queru
656772bce3d3322ccbcf6481545ffe895d5d401b39Jean-Baptiste Queru        byte[] buf2 = pool.getBuf(17);
666772bce3d3322ccbcf6481545ffe895d5d401b39Jean-Baptiste Queru        assertNotSame(buf2, buf1);
676772bce3d3322ccbcf6481545ffe895d5d401b39Jean-Baptiste Queru
686772bce3d3322ccbcf6481545ffe895d5d401b39Jean-Baptiste Queru        byte[] buf3 = pool.getBuf(15);
696772bce3d3322ccbcf6481545ffe895d5d401b39Jean-Baptiste Queru        assertSame(buf3, buf1);
706772bce3d3322ccbcf6481545ffe895d5d401b39Jean-Baptiste Queru    }
716772bce3d3322ccbcf6481545ffe895d5d401b39Jean-Baptiste Queru}
72