|
6 | 6 | package kotlinx.datetime.serialization.test
|
7 | 7 |
|
8 | 8 | import kotlinx.datetime.*
|
| 9 | +import kotlinx.datetime.format.char |
9 | 10 | import kotlinx.datetime.serializers.*
|
10 | 11 | import kotlinx.serialization.KSerializer
|
11 | 12 | import kotlinx.serialization.json.*
|
@@ -82,4 +83,24 @@ class LocalDateTimeSerializationTest {
|
82 | 83 | // should be the same as the ISO 8601
|
83 | 84 | iso8601Serialization(Json.serializersModule.serializer())
|
84 | 85 | }
|
| 86 | + |
| 87 | + object PythonDateTimeSerializer : CustomLocalDateTimeSerializer(LocalDateTime.Format { |
| 88 | + date(LocalDate.Formats.ISO) |
| 89 | + char(' ') |
| 90 | + time(LocalTime.Formats.ISO) |
| 91 | + }) |
| 92 | + |
| 93 | + @Test |
| 94 | + fun testCustomSerializer() { |
| 95 | + for ((localDateTime, json) in listOf( |
| 96 | + Pair(LocalDateTime(2008, 7, 5, 2, 1), "\"2008-07-05 02:01:00\""), |
| 97 | + Pair(LocalDateTime(2007, 12, 31, 23, 59, 1), "\"2007-12-31 23:59:01\""), |
| 98 | + Pair(LocalDateTime(999, 12, 31, 23, 59, 59, 990000000), "\"0999-12-31 23:59:59.99\""), |
| 99 | + Pair(LocalDateTime(-1, 1, 2, 23, 59, 59, 999990000), "\"-0001-01-02 23:59:59.99999\""), |
| 100 | + Pair(LocalDateTime(-2008, 1, 2, 23, 59, 59, 999999990), "\"-2008-01-02 23:59:59.99999999\""), |
| 101 | + )) { |
| 102 | + assertEquals(json, Json.encodeToString(PythonDateTimeSerializer, localDateTime)) |
| 103 | + assertEquals(localDateTime, Json.decodeFromString(PythonDateTimeSerializer, json)) |
| 104 | + } |
| 105 | + } |
85 | 106 | }
|
0 commit comments