Skip to content

Commit

Permalink
Merge pull request #1611 from navikt/tidspunkt-comparators
Browse files Browse the repository at this point in the history
Add better Tidspunkt comparators
  • Loading branch information
hestad authored Dec 20, 2023
2 parents 12966c3 + dc7c7ec commit baceebc
Show file tree
Hide file tree
Showing 2 changed files with 73 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -60,8 +60,12 @@ constructor(
else -> false
}

operator fun compareTo(tidspunkt: Tidspunkt): Int {
return compareTo(tidspunkt.instant)
override fun compareTo(other: Instant): Int {
return this.instant.compareTo(other)
}

operator fun compareTo(other: Tidspunkt): Int {
return this.instant.compareTo(other.instant)
}

override fun hashCode() = instant.hashCode()
Expand All @@ -75,3 +79,7 @@ constructor(
fun Instant.toTidspunkt() = Tidspunkt(this)
fun LocalDateTime.toTidspunkt(zoneId: ZoneId) = this.atZone(zoneId).toTidspunkt()
fun ZonedDateTime.toTidspunkt() = this.toInstant().toTidspunkt()

operator fun Instant.compareTo(tidspunkt: Tidspunkt): Int {
return this.compareTo(tidspunkt.instant)
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import no.nav.su.se.bakover.common.extensions.startOfDay
import no.nav.su.se.bakover.common.extensions.zoneIdOslo
import no.nav.su.se.bakover.common.serialize
import no.nav.su.se.bakover.common.tid.Tidspunkt
import no.nav.su.se.bakover.common.tid.compareTo
import no.nav.su.se.bakover.common.tid.toTidspunkt
import org.junit.jupiter.api.Test
import java.time.Clock
Expand Down Expand Up @@ -133,6 +134,68 @@ internal class TidspunktTest {
Tidspunkt(instant).plus(1, ChronoUnit.DAYS).toString() shouldBe "1970-01-02T01:01:01.123456Z"
}

@Test
fun `compare against self and instant`() {
val tidligere = Instant.parse("2021-01-01T01:01:01.123456Z")
val tidligereTidspunkt = Tidspunkt(tidligere)
val senere = Instant.parse("2021-01-02T01:01:01.123456Z")
val senereTidspunkt = Tidspunkt(senere)

(tidligereTidspunkt > tidligereTidspunkt) shouldBe false
(tidligereTidspunkt >= tidligereTidspunkt) shouldBe true
(tidligereTidspunkt > tidligere) shouldBe false
(tidligereTidspunkt >= tidligere) shouldBe true

(tidligereTidspunkt < tidligereTidspunkt) shouldBe false
(tidligereTidspunkt <= tidligereTidspunkt) shouldBe true
(tidligereTidspunkt < tidligere) shouldBe false
(tidligereTidspunkt <= tidligere) shouldBe true

(tidligere > tidligereTidspunkt) shouldBe false
(tidligere >= tidligereTidspunkt) shouldBe true
(tidligere > tidligere) shouldBe false
(tidligere >= tidligere) shouldBe true

(tidligere < tidligereTidspunkt) shouldBe false
(tidligere <= tidligereTidspunkt) shouldBe true
(tidligere < tidligere) shouldBe false
(tidligere <= tidligere) shouldBe true

tidligereTidspunkt.compareTo(tidligereTidspunkt) shouldBe 0
tidligereTidspunkt.compareTo(tidligere) shouldBe 0
tidligere.compareTo(tidligereTidspunkt) shouldBe 0
tidligere.compareTo(tidligere) shouldBe 0

(tidligereTidspunkt > senereTidspunkt) shouldBe false
(tidligereTidspunkt >= senereTidspunkt) shouldBe false
(tidligereTidspunkt > senere) shouldBe false
(tidligereTidspunkt >= senere) shouldBe false

(tidligereTidspunkt < senereTidspunkt) shouldBe true
(tidligereTidspunkt <= senereTidspunkt) shouldBe true
(tidligereTidspunkt < senere) shouldBe true
(tidligereTidspunkt <= senere) shouldBe true

(tidligere > senereTidspunkt) shouldBe false
(tidligere >= senereTidspunkt) shouldBe false
(tidligere > senere) shouldBe false
(tidligere >= senere) shouldBe false

(tidligere < senereTidspunkt) shouldBe true
(tidligere <= senereTidspunkt) shouldBe true
(tidligere < senere) shouldBe true
(tidligere <= senere) shouldBe true

tidligereTidspunkt.compareTo(senereTidspunkt) shouldBe -1
tidligereTidspunkt.compareTo(senere) shouldBe -1
tidligere.compareTo(senereTidspunkt) shouldBe -1
tidligere.compareTo(senere) shouldBe -1
senereTidspunkt.compareTo(tidligereTidspunkt) shouldBe 1
senereTidspunkt.compareTo(tidligere) shouldBe 1
senere.compareTo(tidligereTidspunkt) shouldBe 1
senere.compareTo(tidligere) shouldBe 1
}

data class NestedSerialization(
val tidspunkt: Tidspunkt,
val other: String = "other values",
Expand Down

0 comments on commit baceebc

Please sign in to comment.