From df36ffabb1c1a268e62b9f42e7310ecf0aff7ba0 Mon Sep 17 00:00:00 2001 From: Janne Koschinski <janne@kuschku.de> Date: Tue, 26 Sep 2017 15:58:46 +0200 Subject: [PATCH] Fixed a few bugs with the serialization tests --- app/build.gradle.kts | 4 +++- .../serializer/DateTimeSerializer.kt | 21 +++++++++++++------ .../kuschku/libquassel/SerializerUnitTest.kt | 7 ++++--- 3 files changed, 22 insertions(+), 10 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 1dc2ea01c..bb47d3bf5 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -86,7 +86,9 @@ dependencies { implementation(appArch("persistence.room", "runtime")) kapt(appArch("persistence.room", "compiler")) - implementation(appArch("paging", "runtime", version = "1.0.0-alpha1")) + implementation(appArch("paging", "runtime", version = "1.0.0-alpha1")) { + exclude(group = "junit", module = "junit") + } implementation("org.threeten:threetenbp:1.3.6") diff --git a/lib/src/main/java/de/kuschku/libquassel/protocol/primitive/serializer/DateTimeSerializer.kt b/lib/src/main/java/de/kuschku/libquassel/protocol/primitive/serializer/DateTimeSerializer.kt index fd14d529f..3d6f407e2 100644 --- a/lib/src/main/java/de/kuschku/libquassel/protocol/primitive/serializer/DateTimeSerializer.kt +++ b/lib/src/main/java/de/kuschku/libquassel/protocol/primitive/serializer/DateTimeSerializer.kt @@ -2,10 +2,7 @@ package de.kuschku.libquassel.protocol.primitive.serializer import de.kuschku.libquassel.protocol.Quassel_Features import de.kuschku.libquassel.util.nio.ChainedByteBuffer -import org.threeten.bp.Instant -import org.threeten.bp.LocalDateTime -import org.threeten.bp.OffsetDateTime -import org.threeten.bp.ZoneOffset +import org.threeten.bp.* import org.threeten.bp.temporal.ChronoField import org.threeten.bp.temporal.JulianFields import org.threeten.bp.temporal.Temporal @@ -37,6 +34,12 @@ object DateTimeSerializer : Serializer<Temporal> { ByteSerializer.serialize(buffer, TimeSpec.OffsetFromUTC.value, features) IntSerializer.serialize(buffer, data.offset.totalSeconds, features) } + is ZonedDateTime -> { + IntSerializer.serialize(buffer, data.getLong(JulianFields.JULIAN_DAY).toInt(), features) + IntSerializer.serialize(buffer, data.getLong(ChronoField.MILLI_OF_DAY).toInt(), features) + ByteSerializer.serialize(buffer, TimeSpec.OffsetFromUTC.value, features) + IntSerializer.serialize(buffer, data.offset.totalSeconds, features) + } is Instant -> { val time = data.atOffset(ZoneOffset.UTC) IntSerializer.serialize(buffer, time.getLong(JulianFields.JULIAN_DAY).toInt(), features) @@ -56,12 +59,18 @@ object DateTimeSerializer : Serializer<Temporal> { if (milliOfDay == -1L || julianDay == -1L) return Instant.EPOCH return when (timeSpec) { - TimeSpec.LocalTime -> + TimeSpec.LocalTime -> Instant.EPOCH.atZone(ZoneOffset.systemDefault()) .with(JulianFields.JULIAN_DAY, julianDay) .with(ChronoField.MILLI_OF_DAY, milliOfDay) .toInstant() - else -> + TimeSpec.OffsetFromUTC -> + Instant.EPOCH.atOffset( + ZoneOffset.ofTotalSeconds(IntSerializer.deserialize(buffer, features))) + .with(JulianFields.JULIAN_DAY, julianDay) + .with(ChronoField.MILLI_OF_DAY, milliOfDay) + .toInstant() + else -> Instant.EPOCH.atOffset(ZoneOffset.UTC) .with(JulianFields.JULIAN_DAY, julianDay) .with(ChronoField.MILLI_OF_DAY, milliOfDay) diff --git a/lib/src/test/java/de/kuschku/libquassel/SerializerUnitTest.kt b/lib/src/test/java/de/kuschku/libquassel/SerializerUnitTest.kt index 85f57bd66..829653e92 100644 --- a/lib/src/test/java/de/kuschku/libquassel/SerializerUnitTest.kt +++ b/lib/src/test/java/de/kuschku/libquassel/SerializerUnitTest.kt @@ -44,12 +44,13 @@ class SerializerUnitTest { @Test fun dateTimeSerializer() { assertEquals(Instant.EPOCH, roundTrip(DateTimeSerializer, Instant.EPOCH)) - assertEquals(Instant.now(), roundTrip(DateTimeSerializer, Instant.now())) + val now = Instant.now() + assertEquals(now, roundTrip(DateTimeSerializer, now)) val value1 = Instant.EPOCH.atOffset(ZoneOffset.ofTotalSeconds(1234)) - assertEquals(value1, roundTrip(DateTimeSerializer, value1)) + assertEquals(value1.toInstant(), roundTrip(DateTimeSerializer, value1)) val value2 = Instant.now().atOffset(ZoneOffset.ofTotalSeconds(1234)) - assertEquals(value2, roundTrip(DateTimeSerializer, value2)) + assertEquals(value2.toInstant(), roundTrip(DateTimeSerializer, value2)) val value3 = LocalDateTime.of(1970, 1, 1, 0, 0) .atZone(ZoneOffset.systemDefault()).toInstant() -- GitLab