BitwiseStreamsTest.java revision e564b19ed2f6b8b5667648254bc6c6859bb536e7
183917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink/* 283917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink * Copyright (C) 2006 The Android Open Source Project 383917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink * 483917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink * Licensed under the Apache License, Version 2.0 (the "License"); 583917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink * you may not use this file except in compliance with the License. 683917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink * You may obtain a copy of the License at 783917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink * 883917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink * http://www.apache.org/licenses/LICENSE-2.0 983917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink * 1083917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink * Unless required by applicable law or agreed to in writing, software 1183917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink * distributed under the License is distributed on an "AS IS" BASIS, 1283917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1383917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink * See the License for the specific language governing permissions and 1483917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink * limitations under the License. 1583917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink */ 1683917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink 1783917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalinkpackage com.android.unit_tests; 1883917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink 1983917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalinkimport com.android.internal.util.BitwiseInputStream; 2083917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalinkimport com.android.internal.util.BitwiseOutputStream; 2183917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalinkimport com.android.internal.util.HexDump; 2283917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink 2383917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalinkimport android.test.AndroidTestCase; 2483917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalinkimport android.test.suitebuilder.annotation.SmallTest; 2583917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink 26e564b19ed2f6b8b5667648254bc6c6859bb536e7Tammo Spalinkimport android.util.Log; 27e564b19ed2f6b8b5667648254bc6c6859bb536e7Tammo Spalink 2883917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalinkpublic class BitwiseStreamsTest extends AndroidTestCase { 2983917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink private final static String LOG_TAG = "BitwiseStreamsTest"; 3083917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink 3183917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink @SmallTest 3283917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink public void testOne() throws Exception { 3383917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink int offset = 3; 3483917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink byte[] inBuf = HexDump.hexStringToByteArray("FFDD"); 3583917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink BitwiseOutputStream outStream = new BitwiseOutputStream(30); 3683917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink outStream.skip(offset); 3783917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink for (int i = 0; i < inBuf.length; i++) outStream.write(8, inBuf[i]); 3883917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink byte[] outBuf = outStream.toByteArray(); 3983917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink BitwiseInputStream inStream = new BitwiseInputStream(outBuf); 4083917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink byte[] inBufDup = new byte[inBuf.length]; 4183917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink inStream.skip(offset); 4283917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink for (int i = 0; i < inBufDup.length; i++) inBufDup[i] = inStream.read(8); 4383917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink assertEquals(HexDump.toHexString(inBuf), HexDump.toHexString(inBufDup)); 4483917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink } 4583917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink 4683917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink @SmallTest 4783917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink public void testTwo() throws Exception { 4883917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink int offset = 3; 4983917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink byte[] inBuf = HexDump.hexStringToByteArray("11d4f29c0e9ad3c36e72584e064d9b53"); 5083917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink BitwiseOutputStream outStream = new BitwiseOutputStream(30); 5183917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink outStream.skip(offset); 5283917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink for (int i = 0; i < inBuf.length; i++) outStream.write(8, inBuf[i]); 5383917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink BitwiseInputStream inStream = new BitwiseInputStream(outStream.toByteArray()); 5483917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink inStream.skip(offset); 5583917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink byte[] inBufDup = new byte[inBuf.length]; 5683917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink for (int i = 0; i < inBufDup.length; i++) inBufDup[i] = inStream.read(8); 5783917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink assertEquals(HexDump.toHexString(inBuf), HexDump.toHexString(inBufDup)); 5883917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink } 5983917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink 6083917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink @SmallTest 6183917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink public void testThree() throws Exception { 6283917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink int offset = 4; 6383917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink byte[] inBuf = HexDump.hexStringToByteArray("00031040900112488ea794e0"); 6483917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink BitwiseOutputStream outStream = new BitwiseOutputStream(30); 6583917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink outStream.skip(offset); 6683917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink for (int i = 0; i < inBuf.length; i++) outStream.write(8, inBuf[i]); 6783917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink BitwiseInputStream inStream = new BitwiseInputStream(outStream.toByteArray()); 6883917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink inStream.skip(offset); 6983917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink byte[] inBufDup = new byte[inBuf.length]; 7083917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink for (int i = 0; i < inBufDup.length; i++) inBufDup[i] = inStream.read(8); 7183917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink assertEquals(HexDump.toHexString(inBuf), HexDump.toHexString(inBufDup)); 7283917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink } 7383917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink 7483917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink @SmallTest 7583917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink public void testFour() throws Exception { 7683917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink int offset = 7; 7783917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink byte[] inBuf = HexDump.hexStringToByteArray("00031040900112488ea794e0"); 7883917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink BitwiseOutputStream outStream = new BitwiseOutputStream(30); 7983917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink outStream.skip(offset); 8083917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink for (int i = 0; i < inBuf.length; i++) { 8183917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink outStream.write(5, inBuf[i] >>> 3); 8283917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink outStream.write(3, inBuf[i] & 0x07); 8383917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink } 8483917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink BitwiseInputStream inStream = new BitwiseInputStream(outStream.toByteArray()); 8583917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink inStream.skip(offset); 8683917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink byte[] inBufDup = new byte[inBuf.length]; 8783917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink for (int i = 0; i < inBufDup.length; i++) inBufDup[i] = inStream.read(8); 8883917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink assertEquals(HexDump.toHexString(inBuf), HexDump.toHexString(inBufDup)); 8983917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink } 90e564b19ed2f6b8b5667648254bc6c6859bb536e7Tammo Spalink 91e564b19ed2f6b8b5667648254bc6c6859bb536e7Tammo Spalink @SmallTest 92e564b19ed2f6b8b5667648254bc6c6859bb536e7Tammo Spalink public void testFive() throws Exception { 93e564b19ed2f6b8b5667648254bc6c6859bb536e7Tammo Spalink int num_runs = 10; 94e564b19ed2f6b8b5667648254bc6c6859bb536e7Tammo Spalink long start = android.os.SystemClock.elapsedRealtime(); 95e564b19ed2f6b8b5667648254bc6c6859bb536e7Tammo Spalink for (int run = 0; run < num_runs; run++) { 96e564b19ed2f6b8b5667648254bc6c6859bb536e7Tammo Spalink int offset = run % 8; 97e564b19ed2f6b8b5667648254bc6c6859bb536e7Tammo Spalink byte[] inBuf = HexDump.hexStringToByteArray("00031040900112488ea794e0"); 98e564b19ed2f6b8b5667648254bc6c6859bb536e7Tammo Spalink BitwiseOutputStream outStream = new BitwiseOutputStream(30); 99e564b19ed2f6b8b5667648254bc6c6859bb536e7Tammo Spalink outStream.skip(offset); 100e564b19ed2f6b8b5667648254bc6c6859bb536e7Tammo Spalink for (int i = 0; i < inBuf.length; i++) { 101e564b19ed2f6b8b5667648254bc6c6859bb536e7Tammo Spalink outStream.write(5, inBuf[i] >>> 3); 102e564b19ed2f6b8b5667648254bc6c6859bb536e7Tammo Spalink outStream.write(3, inBuf[i] & 0x07); 103e564b19ed2f6b8b5667648254bc6c6859bb536e7Tammo Spalink } 104e564b19ed2f6b8b5667648254bc6c6859bb536e7Tammo Spalink BitwiseInputStream inStream = new BitwiseInputStream(outStream.toByteArray()); 105e564b19ed2f6b8b5667648254bc6c6859bb536e7Tammo Spalink inStream.skip(offset); 106e564b19ed2f6b8b5667648254bc6c6859bb536e7Tammo Spalink byte[] inBufDup = new byte[inBuf.length]; 107e564b19ed2f6b8b5667648254bc6c6859bb536e7Tammo Spalink for (int i = 0; i < inBufDup.length; i++) inBufDup[i] = inStream.read(8); 108e564b19ed2f6b8b5667648254bc6c6859bb536e7Tammo Spalink assertEquals(HexDump.toHexString(inBuf), HexDump.toHexString(inBufDup)); 109e564b19ed2f6b8b5667648254bc6c6859bb536e7Tammo Spalink } 110e564b19ed2f6b8b5667648254bc6c6859bb536e7Tammo Spalink long end = android.os.SystemClock.elapsedRealtime(); 111e564b19ed2f6b8b5667648254bc6c6859bb536e7Tammo Spalink Log.d(LOG_TAG, "repeated encode-decode took " + (end - start) + " ms"); 112e564b19ed2f6b8b5667648254bc6c6859bb536e7Tammo Spalink } 11383917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink} 114