implement numeric encodings, optimize

This commit is contained in:
2026-01-17 12:27:41 +01:00
parent 45d74d9cff
commit 55faf1d670
22 changed files with 355 additions and 249 deletions

View File

@@ -1,31 +1,33 @@
package com.infendro.encoding
import com.infendro.encoding.stream.Base16
import com.infendro.encoding.stream.StreamEncoding
import kotlin.test.Test
import kotlin.test.assertContentEquals
class `Base16 Test` {
val encoding: Encoding
val encoding: StreamEncoding
get() = Base16
val `Hello World!` = ubyteArrayOf(
0x48U, 0x65U, 0x6cU, 0x6cU,
0x6fU, 0x20U, 0x57U, 0x6fU,
0x72U, 0x6cU, 0x64U, 0x21U,
val `Hello World!` = byteArrayOf(
0x48, 0x65, 0x6c, 0x6c,
0x6f, 0x20, 0x57, 0x6f,
0x72, 0x6c, 0x64, 0x21,
)
@Test
fun `encode empty ByteArray`() {
val expected = ubyteArrayOf()
val actual = encoding.encode(ubyteArrayOf())
val expected = byteArrayOf()
val actual = encoding.encode(byteArrayOf())
assertContentEquals(expected, actual)
}
@Test
fun `encode "Hello World!"`() {
val expected = ubyteArrayOf(
0x34U, 0x38U, 0x36U, 0x35U, 0x36U, 0x63U, 0x36U, 0x63U,
0x36U, 0x66U, 0x32U, 0x30U, 0x35U, 0x37U, 0x36U, 0x66U,
0x37U, 0x32U, 0x36U, 0x63U, 0x36U, 0x34U, 0x32U, 0x31U,
val expected = byteArrayOf(
0x34, 0x38, 0x36, 0x35, 0x36, 0x63, 0x36, 0x63,
0x36, 0x66, 0x32, 0x30, 0x35, 0x37, 0x36, 0x66,
0x37, 0x32, 0x36, 0x63, 0x36, 0x34, 0x32, 0x31,
)
val actual = encoding.encode(`Hello World!`)
assertContentEquals(expected, actual)

View File

@@ -1,40 +1,42 @@
package com.infendro.encoding
import com.infendro.encoding.stream.Base2
import com.infendro.encoding.stream.StreamEncoding
import kotlin.test.Test
import kotlin.test.assertContentEquals
class `Base2 Test` {
val encoding: Encoding
val encoding: StreamEncoding
get() = Base2
val `Hello World!` = ubyteArrayOf(
0x48U, 0x65U, 0x6cU, 0x6cU,
0x6fU, 0x20U, 0x57U, 0x6fU,
0x72U, 0x6cU, 0x64U, 0x21U,
val `Hello World!` = byteArrayOf(
0x48, 0x65, 0x6c, 0x6c,
0x6f, 0x20, 0x57, 0x6f,
0x72, 0x6c, 0x64, 0x21,
)
@Test
fun `encode empty ByteArray`() {
val expected = ubyteArrayOf()
val actual = encoding.encode(ubyteArrayOf())
val expected = byteArrayOf()
val actual = encoding.encode(byteArrayOf())
assertContentEquals(expected, actual)
}
@Test
fun `encode "Hello World!"`() {
val expected = ubyteArrayOf(
0x30U, 0x31U, 0x30U, 0x30U, 0x31U, 0x30U, 0x30U, 0x30U,
0x30U, 0x31U, 0x31U, 0x30U, 0x30U, 0x31U, 0x30U, 0x31U,
0x30U, 0x31U, 0x31U, 0x30U, 0x31U, 0x31U, 0x30U, 0x30U,
0x30U, 0x31U, 0x31U, 0x30U, 0x31U, 0x31U, 0x30U, 0x30U,
0x30U, 0x31U, 0x31U, 0x30U, 0x31U, 0x31U, 0x31U, 0x31U,
0x30U, 0x30U, 0x31U, 0x30U, 0x30U, 0x30U, 0x30U, 0x30U,
0x30U, 0x31U, 0x30U, 0x31U, 0x30U, 0x31U, 0x31U, 0x31U,
0x30U, 0x31U, 0x31U, 0x30U, 0x31U, 0x31U, 0x31U, 0x31U,
0x30U, 0x31U, 0x31U, 0x31U, 0x30U, 0x30U, 0x31U, 0x30U,
0x30U, 0x31U, 0x31U, 0x30U, 0x31U, 0x31U, 0x30U, 0x30U,
0x30U, 0x31U, 0x31U, 0x30U, 0x30U, 0x31U, 0x30U, 0x30U,
0x30U, 0x30U, 0x31U, 0x30U, 0x30U, 0x30U, 0x30U, 0x31U,
val expected = byteArrayOf(
0x30, 0x31, 0x30, 0x30, 0x31, 0x30, 0x30, 0x30,
0x30, 0x31, 0x31, 0x30, 0x30, 0x31, 0x30, 0x31,
0x30, 0x31, 0x31, 0x30, 0x31, 0x31, 0x30, 0x30,
0x30, 0x31, 0x31, 0x30, 0x31, 0x31, 0x30, 0x30,
0x30, 0x31, 0x31, 0x30, 0x31, 0x31, 0x31, 0x31,
0x30, 0x30, 0x31, 0x30, 0x30, 0x30, 0x30, 0x30,
0x30, 0x31, 0x30, 0x31, 0x30, 0x31, 0x31, 0x31,
0x30, 0x31, 0x31, 0x30, 0x31, 0x31, 0x31, 0x31,
0x30, 0x31, 0x31, 0x31, 0x30, 0x30, 0x31, 0x30,
0x30, 0x31, 0x31, 0x30, 0x31, 0x31, 0x30, 0x30,
0x30, 0x31, 0x31, 0x30, 0x30, 0x31, 0x30, 0x30,
0x30, 0x30, 0x31, 0x30, 0x30, 0x30, 0x30, 0x31,
)
val actual = encoding.encode(`Hello World!`)
assertContentEquals(expected, actual)

View File

@@ -1,31 +1,33 @@
package com.infendro.encoding
import com.infendro.encoding.stream.Base32
import com.infendro.encoding.stream.StreamEncoding
import kotlin.test.Test
import kotlin.test.assertContentEquals
class `Base32 Test` {
val encoding: Encoding
val encoding: StreamEncoding
get() = Base32
val `Hello World!` = ubyteArrayOf(
0x48U, 0x65U, 0x6cU, 0x6cU,
0x6fU, 0x20U, 0x57U, 0x6fU,
0x72U, 0x6cU, 0x64U, 0x21U,
val `Hello World!` = byteArrayOf(
0x48, 0x65, 0x6c, 0x6c,
0x6f, 0x20, 0x57, 0x6f,
0x72, 0x6c, 0x64, 0x21,
)
@Test
fun `encode empty ByteArray`() {
val expected = ubyteArrayOf()
val actual = encoding.encode(ubyteArrayOf())
val expected = byteArrayOf()
val actual = encoding.encode(byteArrayOf())
assertContentEquals(expected, actual)
}
@Test
fun `encode "Hello World!"`() {
val expected = ubyteArrayOf(
0x4aU, 0x42U, 0x53U, 0x57U, 0x59U, 0x33U, 0x44U, 0x50U,
0x45U, 0x42U, 0x4cU, 0x57U, 0x36U, 0x34U, 0x54U, 0x4dU,
0x4dU, 0x51U, 0x51U, 0x51U, 0x3dU, 0x3dU, 0x3dU, 0x3dU,
val expected = byteArrayOf(
0x4a, 0x42, 0x53, 0x57, 0x59, 0x33, 0x44, 0x50,
0x45, 0x42, 0x4c, 0x57, 0x36, 0x34, 0x54, 0x4d,
0x4d, 0x51, 0x51, 0x51, 0x3d, 0x3d, 0x3d, 0x3d,
)
val actual = encoding.encode(`Hello World!`)
assertContentEquals(expected, actual)

View File

@@ -1,30 +1,32 @@
package com.infendro.encoding
import com.infendro.encoding.stream.Base64
import com.infendro.encoding.stream.StreamEncoding
import kotlin.test.Test
import kotlin.test.assertContentEquals
class `Base64 Test` {
val encoding: Encoding
val encoding: StreamEncoding
get() = Base64
val `Hello World!` = ubyteArrayOf(
0x48U, 0x65U, 0x6cU, 0x6cU,
0x6fU, 0x20U, 0x57U, 0x6fU,
0x72U, 0x6cU, 0x64U, 0x21U,
val `Hello World!` = byteArrayOf(
0x48, 0x65, 0x6c, 0x6c,
0x6f, 0x20, 0x57, 0x6f,
0x72, 0x6c, 0x64, 0x21,
)
@Test
fun `encode empty ByteArray`() {
val expected = ubyteArrayOf()
val actual = encoding.encode(ubyteArrayOf())
val expected = byteArrayOf()
val actual = encoding.encode(byteArrayOf())
assertContentEquals(expected, actual)
}
@Test
fun `encode "Hello World!"`() {
val expected = ubyteArrayOf(
0x53U, 0x47U, 0x56U, 0x73U, 0x62U, 0x47U, 0x38U, 0x67U,
0x56U, 0x32U, 0x39U, 0x79U, 0x62U, 0x47U, 0x51U, 0x68U,
val expected = byteArrayOf(
0x53, 0x47, 0x56, 0x73, 0x62, 0x47, 0x38, 0x67,
0x56, 0x32, 0x39, 0x79, 0x62, 0x47, 0x51, 0x68,
)
val actual = encoding.encode(`Hello World!`)
assertContentEquals(expected, actual)

View File

@@ -1,32 +1,34 @@
package com.infendro.encoding
import com.infendro.encoding.stream.Base8
import com.infendro.encoding.stream.StreamEncoding
import kotlin.test.Test
import kotlin.test.assertContentEquals
class `Base8 Test` {
val encoding: Encoding
val encoding: StreamEncoding
get() = Base8
val `Hello World!` = ubyteArrayOf(
0x48U, 0x65U, 0x6cU, 0x6cU,
0x6fU, 0x20U, 0x57U, 0x6fU,
0x72U, 0x6cU, 0x64U, 0x21U,
val `Hello World!` = byteArrayOf(
0x48, 0x65, 0x6c, 0x6c,
0x6f, 0x20, 0x57, 0x6f,
0x72, 0x6c, 0x64, 0x21,
)
@Test
fun `encode empty ByteArray`() {
val expected = ubyteArrayOf()
val actual = encoding.encode(ubyteArrayOf())
val expected = byteArrayOf()
val actual = encoding.encode(byteArrayOf())
assertContentEquals(expected, actual)
}
@Test
fun `encode "Hello World!"`() {
val expected = ubyteArrayOf(
0x32U, 0x32U, 0x30U, 0x36U, 0x32U, 0x35U, 0x35U, 0x34U,
0x33U, 0x33U, 0x30U, 0x36U, 0x37U, 0x34U, 0x34U, 0x30U,
0x32U, 0x35U, 0x36U, 0x36U, 0x37U, 0x35U, 0x36U, 0x32U,
0x33U, 0x33U, 0x30U, 0x36U, 0x32U, 0x30U, 0x34U, 0x31U,
val expected = byteArrayOf(
0x32, 0x32, 0x30, 0x36, 0x32, 0x35, 0x35, 0x34,
0x33, 0x33, 0x30, 0x36, 0x37, 0x34, 0x34, 0x30,
0x32, 0x35, 0x36, 0x36, 0x37, 0x35, 0x36, 0x32,
0x33, 0x33, 0x30, 0x36, 0x32, 0x30, 0x34, 0x31,
)
val actual = encoding.encode(`Hello World!`)
assertContentEquals(expected, actual)