forked from upstream-mirrors/OpenTracks
59 lines
3.2 KiB
Java
59 lines
3.2 KiB
Java
package de.dennisguse.opentracks.sensors;
|
|
|
|
import static org.junit.Assert.assertEquals;
|
|
import static org.junit.Assert.assertThrows;
|
|
|
|
import org.junit.Test;
|
|
|
|
public class UintUtilsTest {
|
|
|
|
@Test
|
|
public void diff_uint16_valid() {
|
|
assertEquals(0, UintUtils.diff(1, 1, UintUtils.UINT16_MAX));
|
|
assertEquals(1, UintUtils.diff(2, 1, UintUtils.UINT16_MAX));
|
|
assertEquals(3, UintUtils.diff(5, 2, UintUtils.UINT16_MAX));
|
|
assertEquals(65535, UintUtils.diff(1, 2, UintUtils.UINT16_MAX)); /* unsigned 16 arithmetic is modulo UINT16_MAX + 1, not modulo UINT16_MAX */
|
|
assertEquals(65530, UintUtils.diff(UintUtils.UINT16_MAX, 5, UintUtils.UINT16_MAX));
|
|
}
|
|
|
|
@Test
|
|
public void diff_uint16_invalid() {
|
|
/* Test modulo arithmetic for arguments that are out of range */
|
|
assertThrows(RuntimeException.class, () -> UintUtils.diff(65537, 1, UintUtils.UINT16_MAX));
|
|
assertThrows(RuntimeException.class, () -> UintUtils.diff(1, 65537, UintUtils.UINT16_MAX));
|
|
assertThrows(RuntimeException.class, () -> UintUtils.diff(65537, 65537, UintUtils.UINT16_MAX));
|
|
assertThrows(RuntimeException.class, () -> UintUtils.diff(-65535, 1, UintUtils.UINT16_MAX));
|
|
assertThrows(RuntimeException.class, () -> UintUtils.diff(1, -65535, UintUtils.UINT16_MAX));
|
|
assertThrows(RuntimeException.class, () -> UintUtils.diff(-65535, -65535, UintUtils.UINT16_MAX));
|
|
assertThrows(RuntimeException.class, () -> UintUtils.diff(-65535, 65537, UintUtils.UINT16_MAX));
|
|
assertThrows(RuntimeException.class, () -> UintUtils.diff(65537, -65535, UintUtils.UINT16_MAX));
|
|
}
|
|
|
|
@Test
|
|
public void diff_uint32() {
|
|
assertEquals(0, UintUtils.diff(1, 1, UintUtils.UINT32_MAX));
|
|
assertEquals(1, UintUtils.diff(2, 1, UintUtils.UINT32_MAX));
|
|
assertEquals(3, UintUtils.diff(5, 2, UintUtils.UINT32_MAX));
|
|
assertEquals(4294967295L, UintUtils.diff(1, 2, UintUtils.UINT32_MAX));
|
|
assertEquals(4294967290L, UintUtils.diff(UintUtils.UINT32_MAX, 5, UintUtils.UINT32_MAX));
|
|
}
|
|
|
|
@Test
|
|
public void diff_unint32_invalid() {
|
|
/* Test modulo arithmetic for arguments that are out of range */
|
|
assertThrows(RuntimeException.class, () -> UintUtils.diff(4294967297L, 1, UintUtils.UINT32_MAX));
|
|
assertThrows(RuntimeException.class, () -> UintUtils.diff(1, 4294967297L, UintUtils.UINT32_MAX));
|
|
assertThrows(RuntimeException.class, () -> UintUtils.diff(4294967297L, 4294967297L, UintUtils.UINT32_MAX));
|
|
assertThrows(RuntimeException.class, () -> UintUtils.diff(-4294967295L, 1, UintUtils.UINT32_MAX));
|
|
assertThrows(RuntimeException.class, () -> UintUtils.diff(1, -4294967295L, UintUtils.UINT32_MAX));
|
|
assertThrows(RuntimeException.class, () -> UintUtils.diff(-4294967295L, -4294967295L, UintUtils.UINT32_MAX));
|
|
assertThrows(RuntimeException.class, () -> UintUtils.diff(-4294967295L, 4294967297L, UintUtils.UINT32_MAX));
|
|
assertThrows(RuntimeException.class, () -> UintUtils.diff(65537, -4294967297L, UintUtils.UINT32_MAX));
|
|
}
|
|
|
|
@Test
|
|
public void realData() {
|
|
assertEquals(1, UintUtils.diff(381616, 381615, UintUtils.UINT32_MAX));
|
|
}
|
|
}
|