49b551bb087c034364fdb536d593b9d23b014391
1 /*******************************************************************************
2 * Copyright (c) 2013 Ericsson
3 * All rights reserved. This program and the accompanying materials
4 * are made available under the terms of the Eclipse Public License v1.0
5 * which accompanies this distribution, and is available at
6 * http://www.eclipse.org/legal/epl-v10.html
9 * Alexandre Montplaisir - Initial API and implementation
10 * Matthew Khouzam - additional tests
11 *******************************************************************************/
13 package org
.eclipse
.linuxtools
.ctf
.core
.tests
.io
;
15 import static org
.junit
.Assert
.assertEquals
;
17 import java
.nio
.ByteBuffer
;
18 import java
.nio
.ByteOrder
;
20 import org
.eclipse
.linuxtools
.ctf
.core
.event
.io
.BitBuffer
;
21 import org
.eclipse
.linuxtools
.ctf
.core
.trace
.CTFReaderException
;
22 import org
.junit
.Before
;
23 import org
.junit
.Test
;
26 * Part of the BitBuffer tests which test the methods to read/write integers.
27 * These are separated from the main file because the fixture is different.
29 * @author Alexandre Montplaisir
31 public class BitBufferIntTest
{
33 private BitBuffer fixture
;
36 * Perform pre-test initialization.
40 fixture
= new BitBuffer(ByteBuffer
.allocateDirect(128));
41 fixture
.setByteOrder(ByteOrder
.BIG_ENDIAN
);
42 createBuffer(fixture
);
45 private static void createBuffer(BitBuffer fixture
) {
46 createBuffer(fixture
, 16);
49 private static void createBuffer(BitBuffer fixture
, int j
) {
50 byte[] bytes
= new byte[j
];
51 for (int i
= 0; i
< j
; i
++) {
52 bytes
[i
] = (byte) (i
% 0xff);
54 fixture
.setByteBuffer(ByteBuffer
.wrap(bytes
));
59 * Run the int getInt() method test.
61 * @throws CTFReaderException
65 public void testGetInt_base() throws CTFReaderException
{
66 int result
= fixture
.getInt();
67 assertEquals(0x020406, result
);
71 * Run the int getInt(int) method test.
73 * @throws CTFReaderException
77 public void testGetInt_pos0() throws CTFReaderException
{
79 int result
= fixture
.getInt();
80 assertEquals(0x010203, result
);
84 * Run the int getInt(int,boolean) method test.
86 * @throws CTFReaderException
90 public void testGetInt_pos1() throws CTFReaderException
{
93 boolean signed
= true;
95 long result
= fixture
.get(length
, signed
);
96 assertEquals(0, result
);
100 * Run the int getInt(int,boolean) method test.
102 * @throws CTFReaderException
106 public void testGetInt_pos2() throws CTFReaderException
{
109 boolean signed
= true;
111 long result
= fixture
.get(length
, signed
);
112 assertEquals(0, result
);
116 * Run the get method test.
118 * @throws CTFReaderException
122 public void testGetInt_signed() throws CTFReaderException
{
125 boolean signed
= true;
127 long result
= fixture
.get(length
, signed
);
128 assertEquals(0, result
);
132 * Run the get method test.
134 * @throws CTFReaderException
138 public void testGetInt_signed_length1() throws CTFReaderException
{
141 boolean signed
= true;
143 long result
= fixture
.get(length
, signed
);
144 assertEquals(0, result
);
148 * Run the get method test with a little-endian BitBuffer.
150 * @throws CTFReaderException
154 public void testGetInt_le1() throws CTFReaderException
{
155 BitBuffer le_fixture
= new BitBuffer(ByteBuffer
.allocateDirect(128));
156 le_fixture
.setByteOrder(ByteOrder
.LITTLE_ENDIAN
);
157 createBuffer(le_fixture
);
158 le_fixture
.position(1);
160 long result
= le_fixture
.get(length
, false);
162 /* 0x020100 downshifted */
163 assertEquals(0x810080, result
);
167 * Run the get method test with a little-endian BitBuffer.
169 * @throws CTFReaderException
173 public void testGetInt_le2() throws CTFReaderException
{
174 BitBuffer le_fixture
= new BitBuffer(ByteBuffer
.allocateDirect(128));
175 le_fixture
.setByteOrder(ByteOrder
.LITTLE_ENDIAN
);
176 createBuffer(le_fixture
);
177 le_fixture
.position(0);
179 long result
= le_fixture
.get(length
, false);
180 assertEquals(0x020100, result
);
184 * Run the int getInt(int,boolean) method test and expect an overflow.
186 * @throws CTFReaderException
189 @Test(expected
= CTFReaderException
.class)
190 public void testGetInt_invalid() throws CTFReaderException
{
191 BitBuffer small_fixture
= new BitBuffer(ByteBuffer
.allocateDirect(128));
192 small_fixture
.setByteOrder(ByteOrder
.BIG_ENDIAN
);
193 createBuffer(small_fixture
, 2);
194 small_fixture
.position(10);
196 boolean signed
= true;
197 small_fixture
.get(length
, signed
);
201 * Run the get method test and expect an overflow.
203 * @throws CTFReaderException
206 @Test(expected
= CTFReaderException
.class)
207 public void testGetInt_invalid2() throws CTFReaderException
{
208 BitBuffer small_fixture
= new BitBuffer(ByteBuffer
.allocateDirect(128));
209 small_fixture
.setByteOrder(ByteOrder
.BIG_ENDIAN
);
210 createBuffer(small_fixture
, 2);
211 small_fixture
.position(1);
213 boolean signed
= true;
215 small_fixture
.get(length
, signed
);
219 * Run the getLong method test.
221 * @throws CTFReaderException
225 public void testGetLong_pos0() throws CTFReaderException
{
227 long result
= fixture
.getLong();
228 assertEquals(0x01020304050607L
, result
);
232 * Run the getLong method test.
234 * @throws CTFReaderException
238 public void testGetLong_pos7() throws CTFReaderException
{
240 long result
= fixture
.getLong();
241 assertEquals(0x81018202830384L
, result
);
245 * Run the getLong method test.
247 * @throws CTFReaderException
251 public void testGetLong_pos8() throws CTFReaderException
{
253 long result
= fixture
.getLong();
254 assertEquals(result
, 0x0102030405060708L
);
258 * Run the getLong method test.
260 * @throws CTFReaderException
264 public void testGetLong_pos0LE() throws CTFReaderException
{
266 fixture
.setByteOrder(ByteOrder
.LITTLE_ENDIAN
);
267 long result
= fixture
.getLong();
268 assertEquals(result
, 0x0706050403020100L
);
272 * Run the getLong method test.
274 * @throws CTFReaderException
278 public void testGetLong_pos7LE() throws CTFReaderException
{
280 fixture
.setByteOrder(ByteOrder
.LITTLE_ENDIAN
);
281 long result
= fixture
.getLong();
282 assertEquals(result
, 0x100e0c0a08060402L
);
286 * Run the getLong method test.
288 * @throws CTFReaderException
292 public void testGetLong_pos8LE() throws CTFReaderException
{
294 fixture
.setByteOrder(ByteOrder
.LITTLE_ENDIAN
);
295 long result
= fixture
.getLong();
296 assertEquals(result
, 0x0807060504030201L
);
300 * Run the get method test.
302 * @throws CTFReaderException
306 public void testGet35_pos0BE() throws CTFReaderException
{
308 long result
= fixture
.get(35, false);
309 assertEquals(result
, 0x081018L
);
313 * Run the get method test.
315 * @throws CTFReaderException
319 public void testGet35_pos8BE() throws CTFReaderException
{
321 long result
= fixture
.get(35, false);
322 assertEquals(result
, 0x08101820L
);
326 * Run the get method test.
328 * @throws CTFReaderException
332 public void testGet35_pos0LE() throws CTFReaderException
{
334 fixture
.setByteOrder(ByteOrder
.LITTLE_ENDIAN
);
335 long result
= fixture
.get(35, false);
337 assertEquals(result
, 0x0403020100L
);
341 * Run the get method test.
343 * @throws CTFReaderException
347 public void testGetLong35_pos7LE() throws CTFReaderException
{
349 fixture
.setByteOrder(ByteOrder
.LITTLE_ENDIAN
);
350 long result
= fixture
.get(35, false);
351 assertEquals(result
, 0x0208060402L
);
355 * Run the get method test.
357 * @throws CTFReaderException
361 public void testGetLong35_pos8LE() throws CTFReaderException
{
363 fixture
.setByteOrder(ByteOrder
.LITTLE_ENDIAN
);
364 long result
= fixture
.get(35, false);
365 assertEquals(result
, 0x0504030201L
);
369 * Run the get method test.
371 * @throws CTFReaderException
375 public void testGetLong35s_pos0LE() throws CTFReaderException
{
377 fixture
.setByteOrder(ByteOrder
.LITTLE_ENDIAN
);
378 long result
= fixture
.get(35, true);
379 assertEquals(result
, 0xfffffffc03020100L
);
383 * Run the get method test.
385 * @throws CTFReaderException
389 public void testGetLong35s_pos7LE() throws CTFReaderException
{
391 fixture
.setByteOrder(ByteOrder
.LITTLE_ENDIAN
);
392 long result
= fixture
.get(35, true);
393 assertEquals(result
, 0x0208060402L
);
397 * Run the get method test.
399 * @throws CTFReaderException
403 public void testGetLong35s_pos8LE() throws CTFReaderException
{
405 fixture
.setByteOrder(ByteOrder
.LITTLE_ENDIAN
);
406 long result
= fixture
.get(35, true);
407 assertEquals(result
, 0xfffffffd04030201L
);
411 * Run the get method test.
413 * @throws CTFReaderException
417 public void testGetSigned() throws CTFReaderException
{
422 fixture
.setByteOrder(ByteOrder
.LITTLE_ENDIAN
);
423 long result
= fixture
.get(32, true);
424 assertEquals(result
, -1L);
428 * Run the get method test.
430 * @throws CTFReaderException
434 public void testGetUnsigned() throws CTFReaderException
{
439 fixture
.setByteOrder(ByteOrder
.LITTLE_ENDIAN
);
440 long result
= fixture
.get(32, false);
441 assertEquals(0xFFFFFFFFL
, result
);
446 * Run the get method test.
448 * @throws CTFReaderException
452 public void testGet24Signed() throws CTFReaderException
{
457 fixture
.setByteOrder(ByteOrder
.LITTLE_ENDIAN
);
458 long result
= fixture
.get(24, true);
459 assertEquals(-1L, result
);
463 * Run the get method test.
465 * @throws CTFReaderException
469 public void testGet24Unsigned() throws CTFReaderException
{
474 fixture
.setByteOrder(ByteOrder
.LITTLE_ENDIAN
);
475 long result
= fixture
.get(24, false);
476 assertEquals(0xFFFFFFL
, result
);
480 * Run the void putInt(int) method test.
482 * @throws CTFReaderException
486 public void testPutInt() throws CTFReaderException
{
489 fixture
.putInt(value
);
493 * Run the void putInt(int,int,boolean) method test.
495 * @throws CTFReaderException
499 public void testPutInt_signed() throws CTFReaderException
{
504 fixture
.putInt(length
, value
);
508 * Run the void putInt(int,int,int,boolean) method test.
510 * @throws CTFReaderException
514 public void testPutInt_length0() throws CTFReaderException
{
519 fixture
.putInt(length
, value
);
523 * Run the void putInt(int,int,int,boolean) method test.
525 * @throws CTFReaderException
529 public void testPutInt_length1() throws CTFReaderException
{
534 fixture
.putInt(length
, value
);
538 * Run the void putInt(int) method test.
540 * @throws CTFReaderException
544 public void testPutInt_hex() throws CTFReaderException
{
545 final int value
= 0x010203;
548 for (int i
= 0; i
<= 32; i
++) {
550 fixture
.putInt(value
);
553 read
= fixture
.getInt();
555 assertEquals(value
, read
);
560 * Run the void putInt(int,int,int,boolean) method test.
562 * @throws CTFReaderException
565 @Test(expected
= CTFReaderException
.class)
566 public void testPutInt_invalid() throws CTFReaderException
{
568 fixture2
= new BitBuffer(ByteBuffer
.allocateDirect(128));
569 fixture2
.setByteOrder(ByteOrder
.BIG_ENDIAN
);
570 createBuffer(fixture2
, 4);
571 fixture2
.position(1);
576 fixture2
.putInt(length
, value
);
577 fixture2
.get(1, true);
This page took 0.047015 seconds and 4 git commands to generate.