blob: e120cc7ef1a04e42ff7ae2c24196b8352b4fb405 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2013, 2014 École Polytechnique de Montréal, Ericsson
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Geneviève Bastien - Initial API and implementation
* Alexandre Montplaisir - Split out in separate class
* Matthew Khouzam - update api (exceptions)
*******************************************************************************/
package org.eclipse.tracecompass.ctf.core.tests.types;
import static org.junit.Assert.assertEquals;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.tracecompass.ctf.core.CTFException;
import org.eclipse.tracecompass.ctf.core.event.io.BitBuffer;
import org.eclipse.tracecompass.ctf.core.event.types.Encoding;
import org.eclipse.tracecompass.ctf.core.event.types.IntegerDeclaration;
import org.eclipse.tracecompass.ctf.core.event.types.IntegerDefinition;
import org.junit.Before;
import org.junit.Test;
/**
* Endianness test for {@link IntegerDefinition}.
*
* @author Geneviève Bastien
*/
public class IntegerEndiannessTest {
private static final @NonNull String name = "testInt";
private static final @NonNull String clockName = "clock";
private ByteBuffer bb;
private @NonNull BitBuffer input = new BitBuffer();
/**
* Set up the bit-buffer to be used
*/
@Before
public void setUp() {
bb = java.nio.ByteBuffer.allocateDirect(8);
final ByteBuffer byb = bb;
bb.put((byte) 0xab);
bb.put((byte) 0xcd);
bb.put((byte) 0xef);
bb.put((byte) 0x12);
bb.put((byte) 0x34);
bb.put((byte) 0x56);
bb.put((byte) 0x78);
bb.put((byte) 0x9a);
input = new BitBuffer(byb);
}
/**
* Read 32-bits BE
*
* @throws CTFException
* error
*/
@Test
public void test32BE() throws CTFException {
IntegerDeclaration be = IntegerDeclaration.createDeclaration(32, true, 1, ByteOrder.BIG_ENDIAN, Encoding.NONE, clockName, 8);
IntegerDefinition fixture_be = be.createDefinition(null, name, input);
assertEquals(0xabcdef12, fixture_be.getValue());
}
/**
* Read 64-bits BE
*
* @throws CTFException
* error
*/
@Test
public void test64BE() throws CTFException {
IntegerDeclaration be = IntegerDeclaration.createDeclaration(64, true, 1, ByteOrder.BIG_ENDIAN, Encoding.NONE, clockName, 8);
IntegerDefinition fixture_be = be.createDefinition(null, name, input);
assertEquals(0xabcdef123456789aL, fixture_be.getValue());
}
/**
* Read 32-bits LE
*
* @throws CTFException
* error
*/
@Test
public void test32LE() throws CTFException {
IntegerDeclaration le = IntegerDeclaration.createDeclaration(32, true, 1, ByteOrder.LITTLE_ENDIAN, Encoding.NONE, clockName, 8);
IntegerDefinition fixture_le = le.createDefinition(null, name, input);
assertEquals(0x12efcdab, fixture_le.getValue());
}
/**
* Read 64-bits LE
*
* @throws CTFException
* error
*/
@Test
public void test64LE() throws CTFException {
IntegerDeclaration le = IntegerDeclaration.createDeclaration(64, true, 1, ByteOrder.LITTLE_ENDIAN, Encoding.NONE, clockName, 8);
IntegerDefinition fixture_le = le.createDefinition(null, name, input);
assertEquals(0x9a78563412efcdabL, fixture_le.getValue());
}
}