Skip to content

Commit

Permalink
Behold uendelighet når månedtidslinje konverteres til dag
Browse files Browse the repository at this point in the history
  • Loading branch information
MagnusTonnessen committed Feb 24, 2025
1 parent 88bbff7 commit 55242a4
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 22 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -38,30 +38,21 @@ fun <T> Tidslinje<T>.konverterTilDag(): Tidslinje<T> {

var tidspunkt = this.startsTidspunkt

when (this.tidsEnhet) {
TidsEnhet.UKE -> {
for (periode in this.innhold) {
val nyttTidspunkt = tidspunkt.plusWeeks(periode.lengde.toLong())
periode.lengde = tidspunkt.until(nyttTidspunkt, ChronoUnit.DAYS).toInt()
tidspunkt = nyttTidspunkt
for (periode in this.innhold) {
val nyttTidspunkt =
when (this.tidsEnhet) {
TidsEnhet.UKE -> tidspunkt.plusWeeks(periode.lengde.toLong())
TidsEnhet.MÅNED -> tidspunkt.plusMonths(periode.lengde.toLong())
TidsEnhetR -> tidspunkt.plusYears(periode.lengde.toLong())
else -> tidspunkt
}
}

TidsEnhet.MÅNED -> {
for (periode in this.innhold) {
val nyttTidspunkt = tidspunkt.plusMonths(periode.lengde.toLong())
periode.lengde = tidspunkt.until(nyttTidspunkt, ChronoUnit.DAYS).toInt()
tidspunkt = nyttTidspunkt
periode.lengde =
if (periode.erUendelig) {
periode.lengde // Dersom perioden er uendelig, skal lengden forbli >= INF
} else {
tidspunkt.until(nyttTidspunkt, ChronoUnit.DAYS).toInt()
}
}

else -> {
for (periode in this.innhold) {
val nyttTidspunkt = tidspunkt.plusYears(periode.lengde.toLong())
periode.lengde = tidspunkt.until(nyttTidspunkt, ChronoUnit.DAYS).toInt()
tidspunkt = nyttTidspunkt
}
}
tidspunkt = nyttTidspunkt
}

this.tidsEnhet = TidsEnhet.DAG
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,14 @@
package no.nav.familie.tidslinje.utvidelser

import no.nav.familie.tidslinje.INF
import no.nav.familie.tidslinje.Periode
import no.nav.familie.tidslinje.TidsEnhet
import no.nav.familie.tidslinje.Tidslinje
import no.nav.familie.tidslinje.TidslinjePeriode
import no.nav.familie.tidslinje.Verdi
import no.nav.familie.tidslinje.tilTidslinje
import org.junit.jupiter.api.Assertions
import org.junit.jupiter.api.Assertions.assertEquals
import org.junit.jupiter.api.Assertions.assertTrue
import org.junit.jupiter.api.Test
import java.time.LocalDate
Expand Down Expand Up @@ -647,4 +650,20 @@ class KonverterTidTest {
Assertions.assertEquals(correct, tidslinjeMåned.innhold.map { it.periodeVerdi.verdi!!.toInt() }.toList())
assertTrue(tidslinjeMåned.innhold.last().erUendelig)
}

@Test fun `konvertering fra månedtidslinje til dagtidslinje skal beholde uendelighet`() {
val perioder = listOf(Periode(verdi = 'a', fom = LocalDate.now(), tom = null))

val månedTidslinje =
perioder.tilTidslinje().konverterTilMåned { _, månedListe ->
månedListe.single().single().periodeVerdi
}

val dagTidslinje = månedTidslinje.konverterTilDag()

val faktiskLengde = dagTidslinje.innhold.sumOf { it.lengde }
val forventetLengde = månedTidslinje.innhold.sumOf { it.lengde }

assertEquals(forventetLengde, faktiskLengde)
}
}

0 comments on commit 55242a4

Please sign in to comment.