@@ -19,7 +19,7 @@ import kotlin.time.Instant
1919@OptIn(ExperimentalTime ::class , ExperimentalSerializationApi ::class )
2020class 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