blob: a93524776d216647cfafad2ec63518e5cfffd306 [file] [log] [blame]
Tammo Spalink83917db2009-04-14 10:01:23 +08001/*
2 * Copyright (C) 2006 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package com.android.unit_tests;
18
19import com.android.internal.util.BitwiseInputStream;
20import com.android.internal.util.BitwiseOutputStream;
21import com.android.internal.util.HexDump;
22
23import android.test.AndroidTestCase;
24import android.test.suitebuilder.annotation.SmallTest;
25
Tammo Spalinke564b192009-04-15 19:15:37 +080026import android.util.Log;
27
Tammo Spalink83917db2009-04-14 10:01:23 +080028public class BitwiseStreamsTest extends AndroidTestCase {
29 private final static String LOG_TAG = "BitwiseStreamsTest";
30
31 @SmallTest
32 public void testOne() throws Exception {
33 int offset = 3;
34 byte[] inBuf = HexDump.hexStringToByteArray("FFDD");
35 BitwiseOutputStream outStream = new BitwiseOutputStream(30);
36 outStream.skip(offset);
37 for (int i = 0; i < inBuf.length; i++) outStream.write(8, inBuf[i]);
38 byte[] outBuf = outStream.toByteArray();
39 BitwiseInputStream inStream = new BitwiseInputStream(outBuf);
40 byte[] inBufDup = new byte[inBuf.length];
41 inStream.skip(offset);
42 for (int i = 0; i < inBufDup.length; i++) inBufDup[i] = inStream.read(8);
43 assertEquals(HexDump.toHexString(inBuf), HexDump.toHexString(inBufDup));
44 }
45
46 @SmallTest
47 public void testTwo() throws Exception {
48 int offset = 3;
49 byte[] inBuf = HexDump.hexStringToByteArray("11d4f29c0e9ad3c36e72584e064d9b53");
50 BitwiseOutputStream outStream = new BitwiseOutputStream(30);
51 outStream.skip(offset);
52 for (int i = 0; i < inBuf.length; i++) outStream.write(8, inBuf[i]);
53 BitwiseInputStream inStream = new BitwiseInputStream(outStream.toByteArray());
54 inStream.skip(offset);
55 byte[] inBufDup = new byte[inBuf.length];
56 for (int i = 0; i < inBufDup.length; i++) inBufDup[i] = inStream.read(8);
57 assertEquals(HexDump.toHexString(inBuf), HexDump.toHexString(inBufDup));
58 }
59
60 @SmallTest
61 public void testThree() throws Exception {
62 int offset = 4;
63 byte[] inBuf = HexDump.hexStringToByteArray("00031040900112488ea794e0");
64 BitwiseOutputStream outStream = new BitwiseOutputStream(30);
65 outStream.skip(offset);
66 for (int i = 0; i < inBuf.length; i++) outStream.write(8, inBuf[i]);
67 BitwiseInputStream inStream = new BitwiseInputStream(outStream.toByteArray());
68 inStream.skip(offset);
69 byte[] inBufDup = new byte[inBuf.length];
70 for (int i = 0; i < inBufDup.length; i++) inBufDup[i] = inStream.read(8);
71 assertEquals(HexDump.toHexString(inBuf), HexDump.toHexString(inBufDup));
72 }
73
74 @SmallTest
75 public void testFour() throws Exception {
76 int offset = 7;
77 byte[] inBuf = HexDump.hexStringToByteArray("00031040900112488ea794e0");
78 BitwiseOutputStream outStream = new BitwiseOutputStream(30);
79 outStream.skip(offset);
80 for (int i = 0; i < inBuf.length; i++) {
81 outStream.write(5, inBuf[i] >>> 3);
82 outStream.write(3, inBuf[i] & 0x07);
83 }
84 BitwiseInputStream inStream = new BitwiseInputStream(outStream.toByteArray());
85 inStream.skip(offset);
86 byte[] inBufDup = new byte[inBuf.length];
87 for (int i = 0; i < inBufDup.length; i++) inBufDup[i] = inStream.read(8);
88 assertEquals(HexDump.toHexString(inBuf), HexDump.toHexString(inBufDup));
89 }
Tammo Spalinke564b192009-04-15 19:15:37 +080090
91 @SmallTest
92 public void testFive() throws Exception {
93 int num_runs = 10;
94 long start = android.os.SystemClock.elapsedRealtime();
95 for (int run = 0; run < num_runs; run++) {
96 int offset = run % 8;
97 byte[] inBuf = HexDump.hexStringToByteArray("00031040900112488ea794e0");
98 BitwiseOutputStream outStream = new BitwiseOutputStream(30);
99 outStream.skip(offset);
100 for (int i = 0; i < inBuf.length; i++) {
101 outStream.write(5, inBuf[i] >>> 3);
102 outStream.write(3, inBuf[i] & 0x07);
103 }
104 BitwiseInputStream inStream = new BitwiseInputStream(outStream.toByteArray());
105 inStream.skip(offset);
106 byte[] inBufDup = new byte[inBuf.length];
107 for (int i = 0; i < inBufDup.length; i++) inBufDup[i] = inStream.read(8);
108 assertEquals(HexDump.toHexString(inBuf), HexDump.toHexString(inBufDup));
109 }
110 long end = android.os.SystemClock.elapsedRealtime();
111 Log.d(LOG_TAG, "repeated encode-decode took " + (end - start) + " ms");
112 }
Tammo Spalink83917db2009-04-14 10:01:23 +0800113}