/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 6 . ĠSun gh you k ĠB ae Ġ< sun gh you k . bae @ gmail . com > Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . github . deb op . k od at imes . ranges Ċ Ċ import Ġcom . github . deb op . k od at imes . Abstract K oda Times Test Ċ import Ġcom . github . deb op . k od at imes . day Duration Ċ import Ġcom . github . deb op . k od at imes . day Duration Of Ċ import Ġcom . github . deb op . k od at imes . days Ċ import Ġcom . github . deb op . k od at imes . hour Duration Ċ import Ġcom . github . deb op . k od at imes . hours Ċ import Ġcom . github . deb op . k od at imes . minus Ċ import Ġcom . github . deb op . k od at imes . now Ċ import Ġcom . github . deb op . k od at imes . plus Ċ import Ġcom . github . deb op . k od at imes . standard Days Ċ import Ġcom . github . deb op . k od at imes . standard Hours Ċ import Ġcom . github . deb op . k od at imes . today Ċ import Ġcom . github . deb op . k od at imes . unary Minus Ċ import Ġmu . K Logging Ċ import Ġorg . am sh ove . k lu ent . should Equal Ċ import Ġorg . am sh ove . k lu ent . should EqualTo Ċ import Ġorg . am sh ove . k lu ent . should NotEqual Ċ import Ġorg . joda . time . Duration Ċ import Ġorg . junit . jupiter . api . Assertions . assertEquals Ċ import Ġorg . junit . jupiter . api . Assertions . assert Throws Ċ import Ġorg . junit . jupiter . api . Test Ċ Ċ class ĠInstant Progress ion Test Ġ: ĠAbstract K oda Times Test () Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ: ĠK Logging () ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` create Ġsimple `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstart Ġ= Ġtoday (). to Instant () ĊĠĠĠĠĠĠĠ Ġval Ġend Inclusive Ġ= Ġstart Ġ+ Ġ 1 . days () ĊĊĠĠĠĠĠĠĠ Ġval Ġprogress ion Ġ= ĠInstant Progress ion . from Closed Range ( start , Ġend Inclusive , Ġstandard Hours ( 1 )) ĊĊĠĠĠĠĠĠĠ Ġwith ( progress ion ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfirst Ġshould Equal Ġstart ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlast Ġshould Equal Ġend Inclusive ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstep Ġshould Equal Ġ 1 . hour Duration () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġto List (). size Ġshould EqualTo Ġ 2 5 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` zero Ġstep `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinstant Ġ= Ġnow (). to Instant () ĊĊĠĠĠĠĠĠĠ ĠassertThrows ( IllegalArgumentException :: class . java ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠInstant Progress ion . from Closed Range ( instant , Ġinstant , ĠDuration ( 0 )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` step Ġgreater Ġthan Ġrange `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstart Ġ= Ġtoday (). to Instant () ĊĠĠĠĠĠĠĠ Ġval Ġend Inclusive Ġ= Ġstart Ġ+ Ġ 1 . days () ĊĊĠĠĠĠĠĠĠ Ġval Ġprogress ion Ġ= ĠInstant Progress ion . from Closed Range ( start , Ġend Inclusive , Ġstandard Days ( 7 )) ĊĊĠĠĠĠĠĠĠ Ġwith ( progress ion ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfirst Ġshould Equal Ġstart ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġlast Ġis Ġnot Ġend Inclusive , Ġstep Ġover Ġend Inclusive , Ġso Ġlast Ġis Ġequal Ġto Ġstart ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlast Ġshould Equal Ġstart ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstep Ġshould Equal Ġ 7 . day Duration () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġto List (). size Ġshould EqualTo Ġ 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` ste pping Ġnot Ġexact Ġend Inclusive `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstart Ġ= Ġtoday (). to Instant () ĊĠĠĠĠĠĠĠ Ġval Ġend Inclusive Ġ= Ġstart Ġ+ Ġ 1 . days () ĊĊĠĠĠĠĠĠĠ Ġval Ġprogress ion Ġ= ĠInstant Progress ion . from Closed Range ( start , Ġend Inclusive , Ġ 5 . hour Duration ()) ĊĊĠĠĠĠĠĠĠ Ġwith ( progress ion ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfirst Ġshould Equal Ġstart ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlast Ġshould Equal Ġstart Ġ+ Ġ 2 0 . hours () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlast Ġshould NotEqual Ġend Inclusive ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstep Ġshould Equal Ġ 5 . hour Duration () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( toList ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsize Ġshould EqualTo Ġ 5 ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠInstant ĠëĬ Ķ ĠGMT Ġê¸° ì¤Ģ ìĿ´ ëĿ¼ ĠLocal Ġtime ê³¼ ëĬĶ Ġìĭľê°Ħ ì°¨ ê°Ģ ĠìŀĪìĬµëĭĪëĭ¤ . Ġê·¸ ëŀĺ ìĦľ Ġíķ´ëĭ¹ ĠTime zone Ġìľ ¼ ë¡ľ Ġë³Ģê²½ íķ´ìķ¼ Ġíķ©ëĭĪëĭ¤ . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap Ġ{ Ġit . to DateTime (). hour OfDay Ġ} Ġshould Equal ĠlistOf ( 0 , Ġ 5 , Ġ 1 0 , Ġ 1 5 , Ġ 2 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` down To Ġprogress ion `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstart Ġ= Ġtoday (). to Instant () ĊĠĠĠĠĠĠĠ Ġval Ġend Inclusive Ġ= Ġstart Ġ- Ġ 5 . days () ĊĠĠĠĠĠĠĠ Ġval Ġstep Ġ= Ġday Duration Of (- 1 ) ĊĊĠĠĠĠĠĠĠ Ġval Ġprogress ion Ġ= ĠInstant Progress ion . from Closed Range ( start , Ġend Inclusive , Ġstep ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( start , Ġprogress ion . first ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( end Inclusive , Ġprogress ion . last ) ĊĠĠĠĠĠĠĠ ĠassertEquals ("$ start Ġdown To Ġ$ end Inclusive Ġstep Ġ${ - step }", Ġprogress ion . toString ()) ĊĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġprogress ion . toList () ĊĠĠĠĠĠĠĠ Ġlogger . debug Ġ{ Ġ" list =$ list " Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals ( 6 , Ġlist . count ()) ĊĠĠĠĠĠĠĠ ĠassertEquals ( start , Ġlist . first ()) ĊĠĠĠĠĠĠĠ ĠassertEquals ( end Inclusive , Ġlist . last ()) ĊĊĠĠĠĠĠĠĠ Ġwith ( progress ion ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfirst Ġshould Equal Ġstart ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlast Ġshould Equal Ġend Inclusive ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstep Ġshould Equal Ġ(- 1 ). day Duration () ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠtoString () Ġshould Equal Ġ"$ start Ġdown To Ġ$ end Inclusive Ġstep Ġ${ - step }" ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( toList ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsize Ġshould EqualTo Ġ 6 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfirst () Ġshould Equal Ġstart ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast () Ġshould Equal Ġend Inclusive ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }