diff --git a/build.gradle.kts b/build.gradle.kts index 7fe021e..d42cab3 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -17,6 +17,12 @@ kotlin { } linuxX64() + sourceSets { + commonTest.dependencies { + implementation(libs.test) + } + } + compilerOptions { freeCompilerArgs.add("-opt-in=kotlin.ExperimentalUnsignedTypes") } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index bb704f3..7b812f8 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -3,3 +3,6 @@ kotlin = "2.1.20" [plugins] multiplatform = { id = "org.jetbrains.kotlin.multiplatform", version.ref = "kotlin" } + +[libraries] +test = { module = "org.jetbrains.kotlin:kotlin-test", version.ref = "kotlin" } diff --git a/src/commonTest/kotlin/com/infendro/encoding/Base16.kt b/src/commonTest/kotlin/com/infendro/encoding/Base16.kt new file mode 100644 index 0000000..87e6888 --- /dev/null +++ b/src/commonTest/kotlin/com/infendro/encoding/Base16.kt @@ -0,0 +1,33 @@ +package com.infendro.encoding + +import kotlin.test.Test +import kotlin.test.assertContentEquals + +class `Base16 Test` { + val encoding: Encoding + get() = Base16 + + val `Hello World!` = ubyteArrayOf( + 0x48U, 0x65U, 0x6cU, 0x6cU, + 0x6fU, 0x20U, 0x57U, 0x6fU, + 0x72U, 0x6cU, 0x64U, 0x21U, + ) + + @Test + fun `encode empty ByteArray`() { + val expected = ubyteArrayOf() + val actual = encoding.encode(ubyteArrayOf()) + 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 actual = encoding.encode(`Hello World!`) + assertContentEquals(expected, actual) + } +} diff --git a/src/commonTest/kotlin/com/infendro/encoding/Base2.kt b/src/commonTest/kotlin/com/infendro/encoding/Base2.kt new file mode 100644 index 0000000..3b638e6 --- /dev/null +++ b/src/commonTest/kotlin/com/infendro/encoding/Base2.kt @@ -0,0 +1,42 @@ +package com.infendro.encoding + +import kotlin.test.Test +import kotlin.test.assertContentEquals + +class `Base2 Test` { + val encoding: Encoding + get() = Base2 + + val `Hello World!` = ubyteArrayOf( + 0x48U, 0x65U, 0x6cU, 0x6cU, + 0x6fU, 0x20U, 0x57U, 0x6fU, + 0x72U, 0x6cU, 0x64U, 0x21U, + ) + + @Test + fun `encode empty ByteArray`() { + val expected = ubyteArrayOf() + val actual = encoding.encode(ubyteArrayOf()) + 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 actual = encoding.encode(`Hello World!`) + assertContentEquals(expected, actual) + } +} diff --git a/src/commonTest/kotlin/com/infendro/encoding/Base32.kt b/src/commonTest/kotlin/com/infendro/encoding/Base32.kt new file mode 100644 index 0000000..8b673f5 --- /dev/null +++ b/src/commonTest/kotlin/com/infendro/encoding/Base32.kt @@ -0,0 +1,33 @@ +package com.infendro.encoding + +import kotlin.test.Test +import kotlin.test.assertContentEquals + +class `Base32 Test` { + val encoding: Encoding + get() = Base32 + + val `Hello World!` = ubyteArrayOf( + 0x48U, 0x65U, 0x6cU, 0x6cU, + 0x6fU, 0x20U, 0x57U, 0x6fU, + 0x72U, 0x6cU, 0x64U, 0x21U, + ) + + @Test + fun `encode empty ByteArray`() { + val expected = ubyteArrayOf() + val actual = encoding.encode(ubyteArrayOf()) + 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 actual = encoding.encode(`Hello World!`) + assertContentEquals(expected, actual) + } +} diff --git a/src/commonTest/kotlin/com/infendro/encoding/Base64.kt b/src/commonTest/kotlin/com/infendro/encoding/Base64.kt new file mode 100644 index 0000000..3fad608 --- /dev/null +++ b/src/commonTest/kotlin/com/infendro/encoding/Base64.kt @@ -0,0 +1,32 @@ +package com.infendro.encoding + +import kotlin.test.Test +import kotlin.test.assertContentEquals + +class `Base64 Test` { + val encoding: Encoding + get() = Base64 + + val `Hello World!` = ubyteArrayOf( + 0x48U, 0x65U, 0x6cU, 0x6cU, + 0x6fU, 0x20U, 0x57U, 0x6fU, + 0x72U, 0x6cU, 0x64U, 0x21U, + ) + + @Test + fun `encode empty ByteArray`() { + val expected = ubyteArrayOf() + val actual = encoding.encode(ubyteArrayOf()) + 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 actual = encoding.encode(`Hello World!`) + assertContentEquals(expected, actual) + } +} diff --git a/src/commonTest/kotlin/com/infendro/encoding/Base8.kt b/src/commonTest/kotlin/com/infendro/encoding/Base8.kt new file mode 100644 index 0000000..9f69400 --- /dev/null +++ b/src/commonTest/kotlin/com/infendro/encoding/Base8.kt @@ -0,0 +1,34 @@ +package com.infendro.encoding + +import kotlin.test.Test +import kotlin.test.assertContentEquals + +class `Base8 Test` { + val encoding: Encoding + get() = Base8 + + val `Hello World!` = ubyteArrayOf( + 0x48U, 0x65U, 0x6cU, 0x6cU, + 0x6fU, 0x20U, 0x57U, 0x6fU, + 0x72U, 0x6cU, 0x64U, 0x21U, + ) + + @Test + fun `encode empty ByteArray`() { + val expected = ubyteArrayOf() + val actual = encoding.encode(ubyteArrayOf()) + 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 actual = encoding.encode(`Hello World!`) + assertContentEquals(expected, actual) + } +}