Skip to content

Commit 2876f3b

Browse files
committed
refactor: clean up Examples.kt
1 parent 0f2b18d commit 2876f3b

1 file changed

Lines changed: 14 additions & 39 deletions

File tree

src/jvmTest/kotlin/com/eignex/kencode/Examples.kt

Lines changed: 14 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ import kotlin.time.Instant
1919
@OptIn(ExperimentalTime::class, ExperimentalSerializationApi::class)
2020
class Examples {
2121

22-
// Exmaple from readme
22+
// Example from readme
2323

2424
@Serializable
2525
data class Payload(
@@ -37,33 +37,14 @@ class Examples {
3737
val external: Boolean,
3838
val handledAt: Instant?,
3939

40-
// encoded as VarUInt
40+
// encoded as varint ordinal
4141
val type: PayloadType
4242
)
4343

4444
enum class PayloadType {
4545
TYPE1, TYPE2, TYPE3
4646
}
4747

48-
@Test
49-
fun `blog post example`() {
50-
@Serializable
51-
data class JobState(
52-
val clientId: Int,
53-
val batchId: Int,
54-
val retryCount: Int?,
55-
val isPriority: Boolean
56-
)
57-
58-
val state = JobState(119, 210, null, true)
59-
val encodedState = EncodedFormat.encodeToString(state)
60-
println(encodedState)
61-
// This encodes the object into the string:
62-
// 02waa1a8
63-
64-
EncodedFormat.decodeFromString<JobState>(encodedState)
65-
}
66-
6748
@Test
6849
fun `example serialization`() {
6950
val payload = Payload(
@@ -84,26 +65,20 @@ class Examples {
8465
}
8566

8667
@Serializable
87-
data class ProtoBufRequired(val map: Map<String, Int>)
68+
data class MapPayload(val map: Map<String, Int>)
8869

8970
@Test
90-
fun `protobuf serialization`() {
91-
// This setup can handle arbitrary payloads (limited by ProtoBuf)
92-
val payload = ProtoBufRequired(
93-
mapOf("k1" to 1285, "k2" to 9681)
94-
)
95-
val format = EncodedFormat(binaryFormat = ProtoBuf)
96-
val encoded = format.encodeToString(payload)
97-
val result = format.decodeFromString<ProtoBufRequired>(encoded)
98-
assertEquals(payload, result)
99-
println(encoded)
71+
fun `protobuf comparison`() {
72+
val payload = MapPayload(mapOf("k1" to 1285, "k2" to 9681))
73+
println(EncodedFormat(binaryFormat = ProtoBuf).encodeToString<MapPayload>(payload))
74+
println(EncodedFormat.encodeToString<MapPayload>(payload))
10075
}
10176

10277
@Test
10378
fun `standalone readme`() {
10479
val bytes = "any byte data".encodeToByteArray()
105-
println(Base36.encode(bytes))
10680
println(Base62.encode(bytes))
81+
println(Base36.encode(bytes))
10782
println(Base64.encode(bytes))
10883
println(Base85.encode(bytes))
10984
}
@@ -123,19 +98,19 @@ class Examples {
12398

12499
// Wrap XTEA/CTR as a PayloadTransform.
125100
// Each encode prepends a fresh 8-byte IV; decode reads it back.
101+
val encryptCipher = Cipher.getInstance("XTEA/CTR/NoPadding", "BC")
102+
val decryptCipher = Cipher.getInstance("XTEA/CTR/NoPadding", "BC")
126103
val xteaTransform = object : PayloadTransform {
127104
override fun encode(data: ByteArray): ByteArray {
128105
val iv = ByteArray(8).also { random.nextBytes(it) }
129-
val cipher = Cipher.getInstance("XTEA/CTR/NoPadding", "BC")
130-
cipher.init(Cipher.ENCRYPT_MODE, key, IvParameterSpec(iv))
131-
return iv + cipher.doFinal(data)
106+
encryptCipher.init(Cipher.ENCRYPT_MODE, key, IvParameterSpec(iv))
107+
return iv + encryptCipher.doFinal(data)
132108
}
133109

134110
override fun decode(data: ByteArray): ByteArray {
135111
val iv = data.copyOfRange(0, 8)
136-
val cipher = Cipher.getInstance("XTEA/CTR/NoPadding", "BC")
137-
cipher.init(Cipher.DECRYPT_MODE, key, IvParameterSpec(iv))
138-
return cipher.doFinal(data.copyOfRange(8, data.size))
112+
decryptCipher.init(Cipher.DECRYPT_MODE, key, IvParameterSpec(iv))
113+
return decryptCipher.doFinal(data.copyOfRange(8, data.size))
139114
}
140115
}
141116

0 commit comments

Comments
 (0)