Skip to content

Commit 7e4dc0a

Browse files
committed
test: binary string
1 parent 07275f7 commit 7e4dc0a

File tree

1 file changed

+59
-0
lines changed

1 file changed

+59
-0
lines changed
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
package space.iseki.bencoding
2+
3+
import kotlinx.serialization.Serializable
4+
import kotlinx.serialization.decodeFromByteArray
5+
import kotlin.io.encoding.Base64
6+
import kotlin.io.encoding.ExperimentalEncodingApi
7+
import kotlin.test.Test
8+
import kotlin.test.assertEquals
9+
10+
class BinaryStringTest {
11+
@Serializable
12+
data class A(
13+
@BinaryString val a: String,
14+
)
15+
16+
@Serializable
17+
data class B(
18+
@BinaryString(BinaryStringStrategy.ISO88591) val a: String,
19+
)
20+
21+
@Serializable
22+
data class C(
23+
@BinaryString(BinaryStringStrategy.Base64) val a: String,
24+
)
25+
26+
@OptIn(ExperimentalEncodingApi::class)
27+
companion object {
28+
private val str = "\u0000\u0001\u0002"
29+
private val data = "d1:a3:${str}e".encodeToByteArray()
30+
31+
init {
32+
check(data.size == 10)
33+
}
34+
35+
private val binaryA = A(str)
36+
private val base64A = A(Base64.encode(str.encodeToByteArray()))
37+
private val binaryB = B(str)
38+
private val base64C = C(base64A.a)
39+
40+
init {
41+
check(base64A.a.length == 4)
42+
}
43+
}
44+
45+
@Test
46+
fun testDefault() {
47+
assertEquals(binaryA, Bencode.decodeFromByteArray<A>(data))
48+
assertEquals(
49+
base64A,
50+
Bencode { binaryStringStrategy = BinaryStringStrategy.Base64 }.decodeFromByteArray<A>(data)
51+
)
52+
}
53+
54+
@Test
55+
fun testNonDefault(){
56+
assertEquals(binaryB, Bencode.decodeFromByteArray<B>(data))
57+
assertEquals(base64C, Bencode.decodeFromByteArray<C>(data))
58+
}
59+
}

0 commit comments

Comments
 (0)