// ĠCopyright Ġ( C ) Ġ 2 0 1 9 ĠT ill ĠK ot tm ann Ġ< me @ de let escape . ch > Ċ // Ċ // ĠSPDX - License - Identifier : ĠMIT Ċ Ċ package Ġk ute . date Ċ Ċ import Ġcom . nat pr y ce . ham k rest . assertion . assertThat Ċ import Ġcom . nat pr y ce . ham k rest . equalTo Ċ import Ġorg . junit . jupiter . api . Before All Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġjava . util .* Ċ Ċ // ĠTODO : ĠT ets Ġformatting Ċ class ĠDate Test Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠS aturday , ĠAugust Ġ 7 , Ġ 1 9 9 9 Ġ 9 : 4 5 : 0 0 ĠPM ĠUTC ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTEST _ EPOCH Ġ= Ġ 9 3 4 0 6 2 3 0 0 0 0 0 ĊĊĠĠĠĠĠĠĠ Ġ@ Before All ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġ` Set Ġtimezone Ġto ĠUTC `() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTime Zone . setDefault ( TimeZone . getTime Zone (" UTC ")) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Init Ġdate Ġwith Ġepoch , Ġis Ġexpected Ġdate `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdate Ġ= Ġdate ( TEST _ EPOCH ) ĊĠĠĠĠĠĠĠ ĠassertThat ( date . year , ĠequalTo ( 1 9 9 9 )) ĊĠĠĠĠĠĠĠ ĠassertThat ( date . month , ĠequalTo ( 7 )) ĊĠĠĠĠĠĠĠ ĠassertThat ( date . day , ĠequalTo ( 7 )) ĊĠĠĠĠĠĠĠ ĠassertThat ( date . hour , ĠequalTo ( 2 1 )) ĊĠĠĠĠĠĠĠ ĠassertThat ( date . minute , ĠequalTo ( 4 5 )) ĊĠĠĠĠĠĠĠ ĠassertThat ( date . second , ĠequalTo ( 0 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Add Ġone Ġof Ġeach `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdate Ġ= Ġdate ( TEST _ EPOCH ). add ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġyears Ġ= Ġ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmonths Ġ= Ġ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdays Ġ= Ġ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhours Ġ= Ġ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġminutes Ġ= Ġ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġseconds Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠassertThat ( date . year , ĠequalTo ( 2 0 0 0 )) ĊĠĠĠĠĠĠĠ ĠassertThat ( date . month , ĠequalTo ( 8 )) ĊĠĠĠĠĠĠĠ ĠassertThat ( date . day , ĠequalTo ( 8 )) ĊĠĠĠĠĠĠĠ ĠassertThat ( date . hour , ĠequalTo ( 2 2 )) ĊĠĠĠĠĠĠĠ ĠassertThat ( date . minute , ĠequalTo ( 4 6 )) ĊĠĠĠĠĠĠĠ ĠassertThat ( date . second , ĠequalTo ( 1 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Subtract Ġone Ġof Ġeach `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdate Ġ= Ġdate ( TEST _ EPOCH ). sub ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġyears Ġ= Ġ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmonths Ġ= Ġ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdays Ġ= Ġ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhours Ġ= Ġ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġminutes Ġ= Ġ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġseconds Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠassertThat ( date . year , ĠequalTo ( 1 9 9 8 )) ĊĠĠĠĠĠĠĠ ĠassertThat ( date . month , ĠequalTo ( 6 )) ĊĠĠĠĠĠĠĠ ĠassertThat ( date . day , ĠequalTo ( 6 )) ĊĠĠĠĠĠĠĠ ĠassertThat ( date . hour , ĠequalTo ( 2 0 )) ĊĠĠĠĠĠĠĠ ĠassertThat ( date . minute , ĠequalTo ( 4 3 )) ĊĠĠĠĠĠĠĠ ĠassertThat ( date . second , ĠequalTo ( 5 9 )) ĊĠĠĠ Ġ} Ċ }