package Ġcom . de po za . util . time period Ċ Ċ import Ġcom . de po za . util . time period . Base Period . CUSTOM _ PERIOD Ċ import Ġcom . de po za . util . time period . Custom Period . UN BOUNDED Ċ import Ġorg . hamcrest . Core Matchers .` is ` Ċ import Ġorg . hamcrest . Matcher Assert . assertThat Ċ import Ġorg . junit . jupiter . api . Assertions . assert Throws Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . junit . jupiter . api . Test Instance Ċ import Ġorg . junit . jupiter . api . Test Instance . Lifecycle . PER _ CLASS Ċ import Ġjava . util .* Ċ import Ġjava . util . Calendar .* Ċ Ċ @ Test Instance ( PER _ CLASS ) Ċ class ĠCustom Period Test Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġcal 5 Apr 2 0 1 8 Ġ= ĠCalendar . getInstance (). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġset ( DAY _ OF _ MONTH , Ġ 5 ) ĊĠĠĠĠĠĠĠ Ġset ( MONTH , Ġ 3 ) ĊĠĠĠĠĠĠĠ Ġset ( YEAR , Ġ 2 0 1 8 ) ĊĠĠĠĠĠĠĠ Ġset ( HOUR _ OF _ DAY , Ġ 1 3 ) ĊĠĠĠĠĠĠĠ Ġset ( MINUTE , Ġ 2 5 ) ĊĠĠĠĠĠĠĠ Ġset ( SECOND , Ġ 5 0 ) ĊĠĠĠĠĠĠĠ Ġset ( MILLI SECOND , Ġ 5 5 ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġval Ġcal 1 1 Apr 2 0 1 8 Ġ= ĠCalendar . getInstance (). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġset ( DAY _ OF _ MONTH , Ġ 1 1 ) ĊĠĠĠĠĠĠĠ Ġset ( MONTH , Ġ 3 ) ĊĠĠĠĠĠĠĠ Ġset ( YEAR , Ġ 2 0 1 8 ) ĊĠĠĠĠĠĠĠ Ġset ( HOUR _ OF _ DAY , Ġ 2 0 ) ĊĠĠĠĠĠĠĠ Ġset ( MINUTE , Ġ 2 0 ) ĊĠĠĠĠĠĠĠ Ġset ( SECOND , Ġ 2 0 ) ĊĠĠĠĠĠĠĠ Ġset ( MILLI SECOND , Ġ 2 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun ĠshouldBe Of Custom Type () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertThat ( UN BOUNDED . type , Ġ` is `( CUSTOM _ PERIOD )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġun bounded Period Bound aries ShouldBe Zero () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertThat ( UN BOUNDED . lower Bound , Ġ` is `( 0 L )) ĊĠĠĠĠĠĠĠ ĠassertThat ( UN BOUNDED . upper Bound , Ġ` is `( 0 L )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġconstructs Un bounded By Lower Boundary () Ġ{ ĊĠĠĠĠĠĠĠ ĠCustom Period ( 0 , Ġcal 1 1 Apr 2 0 1 8 . time In Millis ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġconstructs Un bounded By High er Boundary () Ġ{ ĊĠĠĠĠĠĠĠ ĠCustom Period ( cal 5 Apr 2 0 1 8 . time In Millis , Ġ 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġthrows On Lower Bound GreaterThan High er () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertThrows ( IllegalArgumentException :: class . java ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCustom Period ( cal 1 1 Apr 2 0 1 8 . time In Millis , Ġcal 5 Apr 2 0 1 8 . time In Millis ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġthrows On High er Bound LessThan Lower () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertThrows ( IllegalArgumentException :: class . java ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCustom Period ( cal 1 1 Apr 2 0 1 8 . time In Millis , Ġcal 5 Apr 2 0 1 8 . time In Millis ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġprevious Returns New Instance () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= ĠCustom Period ( cal 5 Apr 2 0 1 8 . time In Millis , Ġcal 1 1 Apr 2 0 1 8 . time In Millis ). previous () ĊĠĠĠĠĠĠĠ Ġval Ġtime Bounds Ġ= Ġlong ArrayOf ( actual . lower Bound , Ġactual . upper Bound ) ĊĠĠĠĠĠĠĠ ĠPeriod Time Bounds Verifier ( time Bounds ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. lower Bound ( 2 9 , Ġ 3 , Ġ 2 0 1 8 , Ġ 1 3 , Ġ 2 5 , Ġ 5 0 , Ġ 5 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. upper Bound ( 4 , Ġ 4 , Ġ 2 0 1 8 , Ġ 2 0 , Ġ 2 0 , Ġ 2 0 , Ġ 2 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. verify () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġnext Returns New Instance () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= ĠCustom Period ( cal 5 Apr 2 0 1 8 . time In Millis , Ġcal 1 1 Apr 2 0 1 8 . time In Millis ). next () ĊĠĠĠĠĠĠĠ Ġval Ġtime Bounds Ġ= Ġlong ArrayOf ( actual . lower Bound , Ġactual . upper Bound ) ĊĠĠĠĠĠĠĠ ĠPeriod Time Bounds Verifier ( time Bounds ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. lower Bound ( 1 2 , Ġ 4 , Ġ 2 0 1 8 , Ġ 1 3 , Ġ 2 5 , Ġ 5 0 , Ġ 5 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. upper Bound ( 1 8 , Ġ 4 , Ġ 2 0 1 8 , Ġ 2 0 , Ġ 2 0 , Ġ 2 0 , Ġ 2 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. verify () ĊĠĠĠ Ġ} Ċ }