package Ġno . nav . oms org sd ager . tid Ċ Ċ import Ġno . nav . oms org sd ager . tid . Per i ode . Companion . dat o Ċ import Ġno . nav . oms org sd ager . tid . Per i ode . Companion . peri ode Ċ import Ġorg . assertj . core . api . Assertions . assertThat Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . junit . jupiter . api . assert Throws Ċ import Ġjava . time . LocalDate Ċ Ċ internal Ġclass ĠT ids lin je Test Ġ{ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Leg ge Ġtil Ġperiod er Ġsom Ġik ke Ġfin nes Ġi Ġt ids lin jen `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠÃ ħ r 1 9 9 9 Ġ= ĠPer i ode ( 2 0 1 9 ) ĊĠĠĠĠĠĠĠ Ġval ĠS om mer 2 0 2 1 Ġ= ĠPer i ode (" 2 0 2 1 - 0 5 - 0 1 / 2 0 2 1 - 0 9 - 0 1 ") ĊĠĠĠĠĠĠĠ Ġval ĠJul i 2 0 2 1 Ġ= ĠPer i ode (" 2 0 2 1 - 0 7 - 0 1 / 2 0 2 1 - 0 7 - 3 1 ") ĊĠĠĠĠĠĠĠ Ġval ĠFe bu ar 2 0 2 2 Ġ= ĠPer i ode (" 2 0 2 2 - 0 2 - 0 1 / 2 0 2 2 - 0 2 - 2 8 ") ĊĠĠĠĠĠĠĠ Ġval ĠÃ ħ r 2 0 2 2 Ġ= ĠPer i ode ( 2 0 2 2 ) ĊĊĠĠĠĠĠĠĠ Ġval Ġt ids lin je Ġ= ĠT ids lin je ( listOf ( S om mer 2 0 2 1 , ĠFe bu ar 2 0 2 2 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. leg g Til ( Jul i 2 0 2 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. leg g Til ( Ã ħ r 2 0 2 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. leg g Til ( Ã ħ r 1 9 9 9 ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( t ids lin je . ny e Period er ()). has Same Elements As ( set Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠÃ ħ r 1 9 9 9 , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPer i ode (" 2 0 2 2 - 0 1 - 0 1 / 2 0 2 2 - 0 1 - 3 1 "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPer i ode (" 2 0 2 2 - 0 3 - 0 1 / 2 0 2 2 - 1 2 - 3 1 ") ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` En kel td ager Ġi Ġper i ode `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠJan Til Apr 2 0 2 1 Ġ= ĠPer i ode (" 2 0 2 1 - 0 1 - 0 1 / 2 0 2 1 - 0 4 - 3 0 ") ĊĠĠĠĠĠĠĠ Ġval ĠNov Til Des 2 0 2 1 Ġ= ĠPer i ode (" 2 0 2 1 - 1 1 - 0 1 / 2 0 2 1 - 1 2 - 3 1 ") ĊĠĠĠĠĠĠĠ Ġval Ġt ids lin je Ġ= ĠT ids lin je ( listOf ( Jan Til Apr 2 0 2 1 , ĠNov Til Des 2 0 2 1 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. leg g Til ( Per i ode ( LocalDate . parse (" 2 0 2 0 - 1 2 - 3 0 "))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. leg g Til ( Per i ode ( LocalDate . parse (" 2 0 2 1 - 0 4 - 3 0 "))) Ġ// ĠAll ere de Ġmed ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. leg g Til ( Per i ode ( LocalDate . parse (" 2 0 2 1 - 0 6 - 0 1 "))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. leg g Til ( Per i ode ( LocalDate . parse (" 2 0 2 1 - 1 2 - 3 1 "))) Ġ// ĠAll ere de Ġmed ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. leg g Til ( Per i ode ( LocalDate . parse (" 2 0 2 2 - 0 1 - 0 2 "))) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( t ids lin je . ny e Period er ()). has Same Elements As ( set Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPer i ode ( LocalDate . parse (" 2 0 2 0 - 1 2 - 3 0 ")), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPer i ode ( LocalDate . parse (" 2 0 2 1 - 0 6 - 0 1 ")), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPer i ode ( LocalDate . parse (" 2 0 2 2 - 0 1 - 0 2 ")) ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Leg ge Ġtil Ġper i ode Ġmed Ġtid enes Ġen de `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠÃ ħ r 2 0 2 1 Ġ= ĠPer i ode ( 2 0 2 1 ) ĊĠĠĠĠĠĠĠ Ġval ĠEv ig Tid Ġ= ĠPer i ode (" 2 0 2 0 - 0 6 - 0 1 / 9 9 9 9 - 1 2 - 3 1 ") ĊĠĠĠĠĠĠĠ Ġval Ġt ids lin je Ġ= ĠT ids lin je ( listOf ( Ã ħ r 2 0 2 1 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. leg g Til ( Ev ig Tid ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( t ids lin je . ny e Period er ()). has Same Elements As ( set Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPer i ode (" 2 0 2 0 - 0 6 - 0 1 / 2 0 2 0 - 1 2 - 3 1 "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPer i ode (" 2 0 2 2 - 0 1 - 0 1 / 9 9 9 9 - 1 2 - 3 1 ") ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` U tg ang sp unkt Ġi Ġtid enes Ġen de `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠÃ ħ r 1 9 9 9 Til Tid ene se En de Ġ= ĠPer i ode (" 1 9 9 9 - 0 6 - 0 2 / 9 9 9 9 - 1 2 - 3 1 ") ĊĠĠĠĠĠĠĠ Ġval ĠÃ ħ r 2 0 2 0 Til T iden es En de Ġ= ĠPer i ode (" 2 0 2 0 - 0 6 - 0 1 / 9 9 9 9 - 1 2 - 3 1 ") ĊĠĠĠĠĠĠĠ Ġval Ġt ids lin je Ġ= ĠT ids lin je ( listOf ( Ã ħ r 2 0 2 0 Til T iden es En de )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. leg g Til ( Ã ħ r 1 9 9 9 Til Tid ene se En de ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( t ids lin je . ny e Period er ()). has Same Elements As ( set Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPer i ode (" 1 9 9 9 - 0 6 - 0 2 / 2 0 2 0 - 0 5 - 3 1 ") ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` M ange Ġperiod er Ġtil Ġtid enes Ġen de `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġper i ode 0 Ġ= Ġ" 2 0 2 1 - 0 1 - 1 0 / 2 0 2 1 - 0 3 - 1 5 ". peri ode () ĊĠĠĠĠĠĠĠ Ġval Ġper i ode 1 Ġ= Ġ" 2 0 2 2 - 0 4 - 1 2 / 9 9 9 9 - 1 2 - 3 1 ". peri ode () ĊĠĠĠĠĠĠĠ Ġval Ġper i ode 2 Ġ= Ġ" 2 0 2 5 - 0 4 - 1 2 / 9 9 9 9 - 1 2 - 3 1 ". peri ode () ĊĠĠĠĠĠĠĠ Ġval Ġper i ode 3 Ġ= Ġ" 1 9 9 9 - 0 7 - 0 2 / 9 9 9 9 - 1 2 - 3 1 ". peri ode () ĊĊĠĠĠĠĠĠĠ Ġval Ġt ids lin je Ġ= ĠT ids lin je ( listOf ( peri ode 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. leg g Til ( peri ode 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. leg g Til ( peri ode 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. leg g Til ( peri ode 3 ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( t ids lin je . ny e Period er ()). has Same Elements As ( set Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" 1 9 9 9 - 0 7 - 0 2 / 2 0 2 1 - 0 1 - 0 9 ". peri ode (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" 2 0 2 1 - 0 3 - 1 6 / 9 9 9 9 - 1 2 - 3 1 ". peri ode () ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Period er Ġsom Ġtil Ġsl utt Ġb lir Ġen Ġlang Ġper i ode `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġper i ode 0 Ġ= ĠPer i ode (" 2 0 2 1 - 0 3 - 0 3 ". dat o ()) ĊĠĠĠĠĠĠĠ Ġval Ġper i ode 1 Ġ= ĠPer i ode (" 2 0 2 1 - 0 3 - 0 1 ". dat o ()) ĊĠĠĠĠĠĠĠ Ġval Ġper i ode 2 Ġ= ĠPer i ode (" 2 0 2 1 - 0 2 - 0 3 / 2 0 2 1 - 0 2 - 2 7 ") ĊĠĠĠĠĠĠĠ Ġval Ġper i ode 3 Ġ= ĠPer i ode (" 2 0 2 1 - 0 3 - 0 2 ". dat o ()) ĊĠĠĠĠĠĠĠ Ġval Ġper i ode 4 Ġ= ĠPer i ode (" 2 0 2 1 - 0 2 - 2 8 ". dat o ()) ĊĊĠĠĠĠĠĠĠ Ġval Ġt ids lin je Ġ= ĠT ids lin je ( emptyList ()) ĊĠĠĠĠĠĠĠ ĠassertThat ( t ids lin je . ny e Period er ()). isEmpty () ĊĠĠĠĠĠĠĠ ĠassertThat ( t ids lin je . leg g Til ( peri ode 0 ). ny e Period er ()). has Same Elements As ( set Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" 2 0 2 1 - 0 3 - 0 3 / 2 0 2 1 - 0 3 - 0 3 ". peri ode () ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠ ĠassertThat ( t ids lin je . leg g Til ( peri ode 1 ). ny e Period er ()). has Same Elements As ( set Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" 2 0 2 1 - 0 3 - 0 3 / 2 0 2 1 - 0 3 - 0 3 ". peri ode (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" 2 0 2 1 - 0 3 - 0 1 / 2 0 2 1 - 0 3 - 0 1 ". peri ode () ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠ ĠassertThat ( t ids lin je . leg g Til ( peri ode 2 ). ny e Period er ()). has Same Elements As ( set Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" 2 0 2 1 - 0 3 - 0 3 / 2 0 2 1 - 0 3 - 0 3 ". peri ode (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" 2 0 2 1 - 0 3 - 0 1 / 2 0 2 1 - 0 3 - 0 1 ". peri ode (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" 2 0 2 1 - 0 2 - 0 3 / 2 0 2 1 - 0 2 - 2 7 ". peri ode () ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠ ĠassertThat ( t ids lin je . leg g Til ( peri ode 3 ). ny e Period er ()). has Same Elements As ( set Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" 2 0 2 1 - 0 3 - 0 1 / 2 0 2 1 - 0 3 - 0 3 ". peri ode (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" 2 0 2 1 - 0 2 - 0 3 / 2 0 2 1 - 0 2 - 2 7 ". peri ode () ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠ ĠassertThat ( t ids lin je . leg g Til ( peri ode 4 ). ny e Period er ()). has Same Elements As ( set Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" 2 0 2 1 - 0 2 - 0 3 / 2 0 2 1 - 0 3 - 0 3 ". peri ode () ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Fe iler Ġom Ġdet Ġleg ges Ġtil Ġen Ġper i ode Ġmed Ġtom Ġl eng re Ġen n Ġ 1 8 ĠÃ¥ r Ġf rem Ġi Ġtid `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstart Ġ= Ġ" 1 9 9 9 - 0 1 - 0 1 ". dat o () ĊĠĠĠĠĠĠĠ Ġval Ġsist e Ok Ġ= Ġ" 2 0 1 7 - 1 2 - 3 1 ". dat o () ĊĠĠĠĠĠĠĠ Ġ// ĠT ids lin je Ġinit al iser es Ġug yl id ig ĊĠĠĠĠĠĠĠ ĠassertThrows < IllegalArgumentException > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠT ids lin je ( listOf ( Per i ode ( start ), ĠPer i ode ( s iste Ok . plus Days ( 1 )))) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// ĠU gy lid g Ġper i ode Ġleg ges Ġtil ĊĠĠĠĠĠĠĠ Ġval Ġt ids lin je Ġ= ĠT ids lin je ( listOf ( Per i ode ( start ), ĠPer i ode ( s iste Ok ))) ĊĠĠĠĠĠĠĠ ĠassertThrows < IllegalArgumentException > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġt ids lin je . leg g Til ( Per i ode ( f om Ġ= Ġsist e Ok . minus Days ( 3 0 ), Ġtom Ġ= Ġsist e Ok . plus Days ( 2 ))) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }