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