package com.lambdaworks.codec;
import static org.assertj.core.api.Assertions.assertThat;
import java.util.ArrayList;
import java.util.List;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
@RunWith(Parameterized.class)
public class CRC16Test {
private byte[] bytes;
private int expected;
public CRC16Test(byte[] bytes, int expected, String hex) {
this.bytes = bytes;
this.expected = expected;
}
@Parameterized.Parameters(name = "{2}")
public static List<Object[]> parameters() {
List<Object[]> parameters = new ArrayList<>();
params(parameters, "".getBytes(), 0x0);
params(parameters, "123456789".getBytes(), 0x31C3);
params(parameters, "sfger132515".getBytes(), 0xA45C);
params(parameters, "hae9Napahngaikeethievubaibogiech".getBytes(), 0x58CE);
params(parameters, "AAAAAAAAAAAAAAAAAAAAAA".getBytes(), 0x92cd);
params(parameters, "Hello, World!".getBytes(), 0x4FD6);
return parameters;
}
private static void params(List<Object[]> parameters, byte[] bytes, int expectation) {
parameters.add(new Object[] { bytes, expectation, "0x" + Integer.toHexString(expectation).toUpperCase() });
}
@Test
public void testCRC16() throws Exception {
int result = CRC16.crc16(bytes);
assertThat(result).describedAs("Expects " + Integer.toHexString(expected)).isEqualTo(expected);
}
}