Files
allwpilib/wpimath/src/test/java/org/wpilib/StructTestBase.java

62 lines
1.6 KiB
Java
Raw Normal View History

// Copyright (c) FIRST and other WPILib contributors.
// Open Source Software; you can modify and/or share it under the terms of
// the WPILib BSD license file in the root directory of this project.
2025-11-07 19:55:43 -05:00
package org.wpilib;
2025-11-07 19:55:43 -05:00
import org.wpilib.util.struct.Struct;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import org.junit.jupiter.api.Test;
public abstract class StructTestBase<T> {
private final T m_testData;
private final Struct<T> m_struct;
protected StructTestBase(T testData, Struct<T> struct) {
m_testData = testData;
m_struct = struct;
}
public abstract void checkEquals(T testData, T data);
@Test
void testRoundTrip() {
ByteBuffer buffer = ByteBuffer.allocate(m_struct.getSize());
buffer.order(ByteOrder.LITTLE_ENDIAN);
m_struct.pack(buffer, m_testData);
buffer.rewind();
final T data = m_struct.unpack(buffer);
checkEquals(m_testData, data);
}
@Test
void testDoublePack() {
ByteBuffer buffer = ByteBuffer.allocate(m_struct.getSize());
buffer.order(ByteOrder.LITTLE_ENDIAN);
m_struct.pack(buffer, m_testData);
buffer.rewind();
m_struct.pack(buffer, m_testData);
buffer.rewind();
final T data = m_struct.unpack(buffer);
checkEquals(m_testData, data);
}
@Test
void testDoubleUnpack() {
ByteBuffer buffer = ByteBuffer.allocate(m_struct.getSize());
buffer.order(ByteOrder.LITTLE_ENDIAN);
m_struct.pack(buffer, m_testData);
buffer.rewind();
T data = m_struct.unpack(buffer);
checkEquals(m_testData, data);
buffer.rewind();
data = m_struct.unpack(buffer);
checkEquals(m_testData, data);
}
}