switch to signed-first approach
All checks were successful
/ test (pull_request) Successful in 2m47s

It turns out signed math is more performant
This commit is contained in:
2026-01-15 14:10:14 +01:00
parent d06e523914
commit ff0e17b5ad
35 changed files with 862 additions and 826 deletions

View File

@@ -0,0 +1,65 @@
package com.infendro.bytes.bytearray
import kotlin.test.Test
import kotlin.test.assertContentEquals
import kotlin.test.assertFails
class ByteArrayOperatorsTest {
@Test
fun inv() {
val expected = ubyteArrayOf(0xFFU, 0xE0U).asByteArray()
val actual = byteArrayOf(0x00, 0x1F).inv()
assertContentEquals(expected, actual)
}
@Test
fun andSize() {
assertFails {
byteArrayOf() and byteArrayOf(0x00)
}
assertFails {
byteArrayOf(0x00) and byteArrayOf()
}
}
@Test
fun and() {
val expected = byteArrayOf(0x18, 0x00)
val actual = byteArrayOf(0x5C, 0x70) and byteArrayOf(0x3A, 0x0F)
assertContentEquals(expected, actual)
}
@Test
fun orSize() {
assertFails {
byteArrayOf() or byteArrayOf(0x00)
}
assertFails {
byteArrayOf(0x00) or byteArrayOf()
}
}
@Test
fun or() {
val expected = byteArrayOf(0x7E, 0x7F)
val actual = byteArrayOf(0x5C, 0x70) or byteArrayOf(0x3A, 0x0F)
assertContentEquals(expected, actual)
}
@Test
fun xorSize() {
assertFails {
byteArrayOf() xor byteArrayOf(0x00)
}
assertFails {
byteArrayOf(0x00) xor byteArrayOf()
}
}
@Test
fun xor() {
val expected = byteArrayOf(0x66, 0x7F)
val actual = byteArrayOf(0x5C, 0x70) xor byteArrayOf(0x3A, 0x0F)
assertContentEquals(expected, actual)
}
}