package Ġio . arch ime de sf w . data Ċ Ċ import Ġio . arch ime de sf w . commons . time . Interval Ċ import Ġorg . assertj . core . api . Assertions . assertThat Ċ import Ġorg . junit . jupiter . api . Assertions . assertEquals Ċ import Ġorg . junit . jupiter . api . Test Instance Ċ import Ġorg . junit . jupiter . api . Test Instance . Lifecycle . PER _ CLASS Ċ import Ġorg . junit . jupiter . api . assert Throws Ċ import Ġorg . junit . jupiter . params . Parameterized Test Ċ import Ġorg . junit . jupiter . params . provider . Method Source Ċ import Ġjava . time . LocalDateTime Ċ import Ġjava . time . temporal . Ch rono Unit . MIC ROS Ċ Ċ @ Test Instance ( PER _ CLASS ) Ċ internal Ġclass ĠEntity Version ed To Interval Converter Test Ġ{ ĊĊĠĠĠ Ġprivate Ġfun Ġversions Provider () Ġ= ĠarrayOf ( ĊĠĠĠĠĠĠĠ ĠlistOf ( P AST , ĠCURRENT ), Ġ// Ġexact Ġcapac ities ĊĠĠĠĠĠĠĠ ĠlistOf ( VERY _ P AST , ĠP AST , ĠCURRENT ), Ġ// Ġlef to vers Ġat Ġthe Ġbeginning ĊĠĠĠĠĠĠĠ ĠlistOf ( P AST , ĠCURRENT , ĠF UT URE ), Ġ// Ġlef to vers Ġat Ġthe Ġend ĊĠĠĠĠĠĠĠ ĠlistOf ( VERY _ P AST , ĠP AST , ĠCURRENT , ĠF UT URE ), Ġ// Ġlef to vers Ġin Ġboth ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Parameterized Test ĊĠĠĠ Ġ@ Method Source (" versions Provider ") ĊĠĠĠ Ġinternal Ġfun Ġversions _ to _ values _ interval ( versions : ĠList < Foo Entity Version ed >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġvalues Ġ= Ġversions . to Interval ( INTERVAL ) Ġ{ Ġit . id Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( EXPECTED _ VALUES , Ġvalues ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġversions With G aps Provider () Ġ= ĠarrayOf ( ĊĠĠĠĠĠĠĠ Ġempty List (), Ġ// Ġnone Ġvalue Ġis Ġadded , Ġso Ġall Ġperiod Ġis Ġa Ġgap ĊĠĠĠĠĠĠĠ ĠlistOf ( CURRENT ) Ġ// Ġgap Ġat Ġthe Ġbeginning Ġof Ġthe Ġperiod ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Parameterized Test ĊĠĠĠ Ġ@ Method Source (" version sWith G aps Provider ") ĊĠĠĠ Ġfun Ġfail _ if _ g aps ( versions : ĠList < Foo Entity Version ed >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġex Ġ= ĠassertThrows < IllegalArgumentException > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġversions . to Interval ( INTERVAL ) Ġ{ Ġit . id Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠassertThat ( ex . message ). startsWith (" There Ġis Ġnot Ġenough Ġinfo Ġto Ġcomplete Ġthe Ġvalues Ġinterval .") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠTS Ġ= ĠLocalDateTime . of ( 2 0 2 0 , Ġ 2 , Ġ 7 , Ġ 0 , Ġ 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠINTER VAL Ġ= ĠInterval ( TS . minus Hours ( 2 ), ĠTS . plus Hours ( 2 )) ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠV ERY _ P AST Ġ= ĠFoo Entity Version ed ( TS . minus Days ( 1 0 ), Ġ- 1 ) ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠP AST Ġ= ĠFoo Entity Version ed ( TS . minus Days ( 1 ), Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠCURRENT Ġ= ĠFoo Entity Version ed ( TS , Ġ 2 ) ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠF UT URE Ġ= ĠFoo Entity Version ed ( TS . plus Days ( 1 ). plus ( 1 , ĠMIC ROS ), Ġ 1 0 ) ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠEXPECT ED _ VALUES Ġ= ĠlistOf ( 1 , Ġ 1 , Ġ 2 , Ġ 2 , Ġ 2 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġdata Ġclass ĠFoo Entity Version ed ( ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġversion : ĠVersion , ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġid : ĠInt ĊĠĠĠ Ġ) Ġ: ĠEntity Version ed Int Ġ{ ĊĊĠĠĠĠĠĠĠ Ġinternal Ġconstructor ( start : ĠLocalDateTime , Ġid : ĠInt ) Ġ: Ġthis ( Version ( start ), Ġid ) ĊĠĠĠ Ġ} Ċ Ċ } Ċ