1
+ /*
2
+ * Copyright 2019-2021 JetBrains s.r.o.
3
+ * Use of this source code is governed by the Apache 2.0 License that can be found in the LICENSE.txt file.
4
+ */
5
+
6
+ package kotlinx.datetime.serialization.test
7
+
8
+ import kotlinx.datetime.*
9
+ import kotlinx.datetime.serializers.*
10
+ import kotlinx.serialization.KSerializer
11
+ import kotlinx.serialization.json.*
12
+ import kotlinx.serialization.serializer
13
+ import kotlin.test.*
14
+
15
+ class UtcOffsetSerializationTest {
16
+
17
+ private fun testSerializationAsPrimitive (serializer : KSerializer <UtcOffset >) {
18
+ val offset2h = UtcOffset .parse(" +2" )
19
+ assertEquals(" \" +02:00\" " , Json .encodeToString(serializer, offset2h))
20
+ assertEquals(offset2h, Json .decodeFromString(serializer, " \" +02:00\" " ))
21
+ assertEquals(offset2h, Json .decodeFromString(serializer, " \" +02\" " ))
22
+ assertEquals(offset2h, Json .decodeFromString(serializer, " \" +2\" " ))
23
+
24
+ assertFailsWith<IllegalArgumentException > {
25
+ Json .decodeFromString(serializer, " \" UTC+02:00\" " ) // not an offset
26
+ }
27
+ }
28
+
29
+ @Test
30
+ fun defaultSerializer () {
31
+ testSerializationAsPrimitive(Json .serializersModule.serializer())
32
+ }
33
+
34
+ @Test
35
+ fun stringPrimitiveSerializer () {
36
+ testSerializationAsPrimitive(UtcOffsetSerializer )
37
+ testSerializationAsPrimitive(UtcOffset .serializer())
38
+ }
39
+ }
0 commit comments