package Ġno . nav . hel se . person . info try gd h istor ikk Ċ Ċ import Ġno . nav . hel se . hen del ser . In n tek ts meld ing Ċ import Ġno . nav . hel se . hen del ser . Per i ode Ċ import Ġno . nav . hel se . hen del ser . til Ċ import Ġno . nav . hel se . person . A ktiv it ets log g Ċ import Ġno . nav . hel se . person . In n te kt sh istor ikk Ċ import Ġno . nav . hel se . person . In n tek ts ins pe kt Ã¸ r Ċ import Ġno . nav . hel se . test helpers .* Ċ import Ġno . nav . hel se . Ã¸ k onom i . In n te kt Ċ import Ġno . nav . hel se . Ã¸ k onom i . In n te kt . Companion . m Ã¥ ned lig Ċ import Ġorg . junit . jupiter . api . Assertions .* Ċ import Ġorg . junit . jupiter . api . BeforeEach Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġjava . time . LocalDate Ċ import Ġjava . time . LocalDateTime Ċ import Ġjava . util .* Ċ Ċ internal Ġclass ĠInfo try gd In n tek ts op pl ys ning Test Ġ{ ĊĊĠĠĠ Ġprivate Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠOR GN R Ġ= Ġ" 1 2 3 4 5 6 7 8 9 " ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠIN N TE KT Ġ= Ġ 3 1 0 0 0 . 0 0 . m Ã¥ ned lig ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠDAT O Ġ= Ġ 1 . jan uar ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠPER IO DE Ġ= ĠPer i ode ( 1 . fe bru ar , Ġ 2 8 . fe bru ar ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġh istor ikk : ĠIn n te kt sh istor ikk ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġaktiv it ets log g : ĠA ktiv it ets log g ĊĠĠĠ Ġprivate Ġval Ġins pe kt Ã¸ r Ġget () Ġ= ĠIn n tek ts ins pe kt Ã¸ r ( h istor ikk ) ĊĊĠĠĠ Ġ@ BeforeEach ĊĠĠĠ Ġfun Ġsetup () Ġ{ ĊĠĠĠĠĠĠĠ Ġh istor ikk Ġ= ĠIn n te kt sh istor ikk () ĊĠĠĠĠĠĠĠ Ġaktiv it ets log g Ġ= ĠA ktiv it ets log g () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġlik het () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( inn tek ts op pl ys ning ( null ). hashCode (), Ġinn tek ts op pl ys ning ( null ). hashCode ()) ĊĠĠĠĠĠĠĠ ĠassertEquals ( inn tek ts op pl ys ning ( 1 . jan uar ). hashCode (), Ġinn tek ts op pl ys ning ( 1 . jan uar ). hashCode ()) ĊĠĠĠĠĠĠĠ Ġassert Not Equals ( inn tek ts op pl ys ning (). hashCode (), Ġinn tek ts op pl ys ning ( 1 . jan uar ). hashCode ()) ĊĠĠĠĠĠĠĠ Ġassert Not Equals ( inn tek ts op pl ys ning ( 1 . jan uar ). hashCode (), Ġinn tek ts op pl ys ning ( 2 . jan uar ). hashCode ()) ĊĠĠĠĠĠĠĠ Ġassert Not Equals ( In n tek ts op pl ys ning ( OR GN R , ĠDAT O , Ġ 1 0 0 0 . m Ã¥ ned lig , Ġtrue , Ġnull ). hashCode (), ĠIn n tek ts op pl ys ning ( OR GN R , ĠDAT O , Ġ 1 0 0 0 . m Ã¥ ned lig , Ġfalse , Ġnull ). hashCode ()) ĊĠĠĠĠĠĠĠ Ġassert Not Equals ( In n tek ts op pl ys ning ( OR GN R , ĠDAT O , Ġ 1 0 0 0 . m Ã¥ ned lig , Ġtrue , Ġnull ). hashCode (), ĠIn n tek ts op pl ys ning ( OR GN R , ĠDAT O , Ġ 2 0 0 0 . m Ã¥ ned lig , Ġtrue , Ġnull ). hashCode ()) ĊĠĠĠĠĠĠĠ Ġassert Not Equals ( In n tek ts op pl ys ning ( OR GN R , Ġ 1 . jan uar , Ġ 1 0 0 0 . m Ã¥ ned lig , Ġtrue , Ġnull ). hashCode (), ĠIn n tek ts op pl ys ning ( OR GN R , Ġ 2 . jan uar , Ġ 2 1 0 0 . m Ã¥ ned lig , Ġtrue , Ġnull ). hashCode ()) ĊĠĠĠĠĠĠĠ Ġassert Not Equals ( In n tek ts op pl ys ning (" ag 1 ", ĠDAT O , Ġ 1 0 0 0 . m Ã¥ ned lig , Ġtrue , Ġnull ). hashCode (), ĠIn n tek ts op pl ys ning (" ag 2 ", ĠDAT O , Ġ 2 1 0 0 . m Ã¥ ned lig , Ġtrue , Ġnull ). hashCode ()) ĊĠĠĠĠĠĠĠ ĠassertEquals ( In n tek ts op pl ys ning (" ag 1 ", ĠDAT O , Ġ 1 2 3 . 6 6 6 7 . m Ã¥ ned lig , Ġtrue , Ġnull ). hashCode (), ĠIn n tek ts op pl ys ning (" ag 1 ", ĠDAT O , Ġ 1 2 3 . 6 6 6 7 . m Ã¥ ned lig , Ġtrue , Ġnull ). hashCode ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` ref us jon Ġopp h Ã¸ rer Ġf Ã¸ r Ġperiod en `() Ġ{ ĊĠĠĠĠĠĠĠ Ġinn tek ts op pl ys ning ( 1 . jan uar ). valid er ( aktiv it ets log g , ĠPER IO DE , ĠDAT O ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( aktiv it ets log g . has Errors Or W orse ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` ref us jon Ġopp h Ã¸ rer Ġi Ġperiod en `() Ġ{ ĊĠĠĠĠĠĠĠ Ġinn tek ts op pl ys ning ( 1 5 . fe bru ar ). valid er ( aktiv it ets log g , ĠPER IO DE , ĠDAT O ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( aktiv it ets log g . has Errors Or W orse ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` ref us jon Ġopp h Ã¸ rer Ġet ter Ġperiod en `() Ġ{ ĊĠĠĠĠĠĠĠ Ġinn tek ts op pl ys ning ( 1 . mars ). valid er ( aktiv it ets log g , ĠPER IO DE , ĠDAT O ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( aktiv it ets log g . has Errors Or W orse ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` In n te kt Ġf ra Ġinfo try gd Ġbru kes Ġtil ĠÃ¥ Ġbere g ne Ġsy ke pen ge gr un n la get `() Ġ{ ĊĠĠĠĠĠĠĠ ĠIn n tek ts op pl ys ning . lag re In n tek ter ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( In n tek ts op pl ys ning ( OR GN R , Ġ 1 . jan uar , ĠIN N TE KT , Ġtrue )), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġh istor ikk , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUUID . randomUUID () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġins pe kt Ã¸ r . inn te kt T eller . size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġins pe kt Ã¸ r . inn te kt T eller . first ()) ĊĠĠĠĠĠĠĠ ĠassertEquals ( IN N TE KT , Ġh istor ikk . gr un nl ag For Sy ke pen ge gr un nl ag G am mel ( 1 . jan uar ( 2 0 1 8 ))) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` B ru ker Ġinn te kt Ġf ra Ġinfo try gd Ġf rem for Ġinn te kt Ġf ra Ġinn tek ts meld ing Ġfor ĠÃ¥ Ġbere g ne Ġsy ke pen ge gr un n la get `() Ġ{ ĊĠĠĠĠĠĠĠ Ġinn tek ts meld ing ( ber eg net In n te kt Ġ= Ġ 2 0 0 0 0 . m Ã¥ ned lig ). add In n te kt ( h istor ikk , Ġ 1 . jan uar ) ĊĠĠĠĠĠĠĠ ĠIn n tek ts op pl ys ning . lag re In n tek ter ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( In n tek ts op pl ys ning ( OR GN R , Ġ 1 . jan uar , Ġ 2 5 0 0 0 . m Ã¥ ned lig , Ġtrue )), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġh istor ikk , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUUID . randomUUID () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġins pe kt Ã¸ r . inn te kt T eller . size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġins pe kt Ã¸ r . inn te kt T eller . first ()) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġins pe kt Ã¸ r . inn te kt T eller . last ()) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 5 0 0 0 . m Ã¥ ned lig , Ġh istor ikk . gr un nl ag For Sy ke pen ge gr un nl ag G am mel ( 1 . jan uar ( 2 0 1 8 ))) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` B ru ker Ġinn te kt Ġf ra Ġinfo try gd Ġf rem for Ġinn te kt Ġf ra Ġsk att Ġfor ĠÃ¥ Ġbere g ne Ġsy ke pen ge gr un n la get Ġ- Ġsk att Ġkom mer Ġf Ã¸ rst `() Ġ{ ĊĠĠĠĠĠĠĠ Ġinn te kt period er For Sy ke pen ge gr un nl ag Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 . de sem ber ( 2 0 1 6 ) Ġtil Ġ 1 . de sem ber ( 2 0 1 7 ) Ġinn tek ter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOR GN R Ġinn te kt ĠIN N TE KT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 . de sem ber ( 2 0 1 6 ) Ġtil Ġ 1 . se ptember ( 2 0 1 7 ) Ġinn tek ter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOR GN R Ġinn te kt ĠIN N TE KT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. forEach Ġ{ Ġit . lag re In n tek ter ( h istor ikk , Ġ 1 . jan uar , ĠUUID . randomUUID ()) Ġ} ĊĠĠĠĠĠĠĠ ĠIn n tek ts op pl ys ning . lag re In n tek ter ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( In n tek ts op pl ys ning ( OR GN R , Ġ 1 . jan uar , Ġ 2 5 0 0 0 . m Ã¥ ned lig , Ġtrue )), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġh istor ikk , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUUID . randomUUID () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġins pe kt Ã¸ r . inn te kt T eller . size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 4 , Ġins pe kt Ã¸ r . inn te kt T eller . first ()) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 3 , Ġins pe kt Ã¸ r . inn te kt T eller . last ()) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 5 0 0 0 . m Ã¥ ned lig , Ġh istor ikk . gr un nl ag For Sy ke pen ge gr un nl ag G am mel ( 1 . jan uar ( 2 0 1 8 ))) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` B ru ker Ġinn te kt Ġf ra Ġinfo try gd Ġf rem for Ġinn te kt Ġf ra Ġsk att Ġfor ĠÃ¥ Ġbere g ne Ġsy ke pen ge gr un n la get Ġ- Ġsk att Ġkom mer Ġsist `() Ġ{ ĊĠĠĠĠĠĠĠ ĠIn n tek ts op pl ys ning . lag re In n tek ter ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( In n tek ts op pl ys ning ( OR GN R , Ġ 1 . jan uar , Ġ 2 5 0 0 0 . m Ã¥ ned lig , Ġtrue )), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġh istor ikk , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUUID . randomUUID () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġinn te kt period er For Sy ke pen ge gr un nl ag Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 . de sem ber ( 2 0 1 6 ) Ġtil Ġ 1 . de sem ber ( 2 0 1 7 ) Ġinn tek ter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOR GN R Ġinn te kt ĠIN N TE KT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 . de sem ber ( 2 0 1 6 ) Ġtil Ġ 1 . se ptember ( 2 0 1 7 ) Ġinn tek ter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOR GN R Ġinn te kt ĠIN N TE KT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. forEach Ġ{ Ġit . lag re In n tek ter ( h istor ikk , Ġ 1 . jan uar , ĠUUID . randomUUID ()) Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġins pe kt Ã¸ r . inn te kt T eller . size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 4 , Ġins pe kt Ã¸ r . inn te kt T eller . first ()) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġins pe kt Ã¸ r . inn te kt T eller . last ()) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 5 0 0 0 . m Ã¥ ned lig , Ġh istor ikk . gr un nl ag For Sy ke pen ge gr un nl ag G am mel ( 1 . jan uar ( 2 0 1 8 ))) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` In n te kt Ġfor Ġsam me Ġdat o Ġog Ġan nen Ġk ilde Ġer stat ter Ġik ke Ġe ks ist eren de `() Ġ{ ĊĠĠĠĠĠĠĠ Ġinn tek ts meld ing (). add In n te kt ( h istor ikk , Ġ 1 . jan uar ) ĊĠĠĠĠĠĠĠ ĠIn n tek ts op pl ys ning . lag re In n tek ter ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( In n tek ts op pl ys ning ( OR GN R , Ġ 1 . jan uar , ĠIN N TE KT , Ġtrue )), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġh istor ikk , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUUID . randomUUID () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġins pe kt Ã¸ r . inn te kt T eller . size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġins pe kt Ã¸ r . inn te kt T eller . first ()) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġins pe kt Ã¸ r . inn te kt T eller . last ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` F inner Ġn Ã¦ r me ste Ġinn te kt Ġf ra ĠInfo try gd , Ġh vis Ġdet Ġik ke Ġfin nes Ġinn te kt Ġfor Ġsk j Ã¦ ring st id sp unkt `() Ġ{ ĊĠĠĠĠĠĠĠ ĠIn n tek ts op pl ys ning . lag re In n tek ter ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIn n tek ts op pl ys ning ( OR GN R , Ġ 1 0 . jan uar , Ġ 3 0 0 0 0 . m Ã¥ ned lig , Ġtrue ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIn n tek ts op pl ys ning ( OR GN R , Ġ 5 . jan uar , Ġ 2 5 0 0 0 . m Ã¥ ned lig , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġh istor ikk , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUUID . randomUUID () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 3 0 0 0 0 . m Ã¥ ned lig , Ġh istor ikk . gr un nl ag For Sy ke pen ge gr un nl ag G am mel ( 1 . jan uar , Ġ 1 1 . jan uar )) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 5 0 0 0 . m Ã¥ ned lig , Ġh istor ikk . gr un nl ag For Sy ke pen ge gr un nl ag G am mel ( 1 . jan uar , Ġ 9 . jan uar )) ĊĠĠĠĠĠĠĠ ĠassertNull ( h istor ikk . gr un nl ag For Sy ke pen ge gr un nl ag G am mel ( 1 . jan uar , Ġ 4 . jan uar )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinn tek ts op pl ys ning ( ref us jon Tom : ĠLocalDate ? Ġ= Ġnull ) Ġ= ĊĠĠĠĠĠĠĠ ĠIn n tek ts op pl ys ning ( OR GN R , ĠDAT O , Ġ 1 0 0 0 . m Ã¥ ned lig , Ġtrue , Ġref us jon Tom ) ĊĊĠĠĠ Ġprivate Ġfun Ġinn tek ts meld ing ( ĊĠĠĠĠĠĠĠ Ġbere g net In n te kt : ĠIn n te kt Ġ= ĠIN N TE KT , ĊĠĠĠĠĠĠĠ Ġf Ã¸ r ste Fr av Ã¦ r sd ag : ĠLocalDate Ġ= Ġ 1 . jan uar , ĊĠĠĠĠĠĠĠ Ġar be id sg iver period er : ĠList < Per i ode > Ġ= ĠlistOf ( 1 . jan uar Ġtil Ġ 1 6 . jan uar ) ĊĠĠĠ Ġ) Ġ= ĠIn n tek ts meld ing ( ĊĠĠĠĠĠĠĠ Ġme ld ings refer an se Id Ġ= ĠUUID . randomUUID (), ĊĠĠĠĠĠĠĠ Ġref us jon Ġ= ĠIn n tek ts meld ing . Ref us jon ( IN N TE KT , Ġnull , Ġempty List ()), ĊĠĠĠĠĠĠĠ Ġorg nummer Ġ= ĠOR GN R , ĊĠĠĠĠĠĠĠ Ġf Ã¸ d se ls nummer Ġ= Ġ" fn r ", ĊĠĠĠĠĠĠĠ Ġakt Ã¸ r Id Ġ= Ġ" akt Ã¸ r ", ĊĠĠĠĠĠĠĠ Ġf Ã¸ r ste Fr av Ã¦ r sd ag Ġ= Ġf Ã¸ r ste Fr av Ã¦ r sd ag , ĊĠĠĠĠĠĠĠ Ġbere g net In n te kt Ġ= Ġbere g net In n te kt , ĊĠĠĠĠĠĠĠ Ġar be id sg iver period er Ġ= Ġar be id sg iver period er , ĊĠĠĠĠĠĠĠ Ġar be ids for hold Id Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġbe gr un n else For Red uk s jon E ller Ik ke U tb et alt Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġmot t att Ġ= ĠLocalDateTime . now () ĊĠĠĠ Ġ) Ċ } Ċ