File tree Expand file tree Collapse file tree 1 file changed +59
-0
lines changed
src/commonTest/kotlin/space/iseki/bencoding Expand file tree Collapse file tree 1 file changed +59
-0
lines changed Original file line number Diff line number Diff line change 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+ }
You can’t perform that action at this time.
0 commit comments