package Ġio . is land time . meas ures Ċ Ċ import Ġio . is land time . parser . DateTime ParseException Ċ import Ġkotlin . test .* Ċ Ċ class ĠPeriod Test Ġ{ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` ZERO Ġreturns Ġa Ġzero ed - out ĠPeriod `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġperiod Ġ= ĠPeriod . ZERO ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 . years , Ġperiod . years ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 . months , Ġperiod . months ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 . days , Ġperiod . days ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` period Of () Ġconstructs Ġperiods Ġof Ġyears `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġperiod Ġ= Ġperiod Of ( 1 0 . years ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 0 . years , Ġperiod . years ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 . months , Ġperiod . months ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 . days , Ġperiod . days ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` period Of () Ġconstructs Ġperiods Ġof Ġmonths `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġperiod Ġ= Ġperiod Of ( 1 5 . months ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 . years , Ġperiod . years ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 5 . months , Ġperiod . months ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 . days , Ġperiod . days ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` period Of () Ġconstructs Ġperiods Ġof Ġweeks Ġwith Ġequivalent Ġdays `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġperiod Ġ= Ġperiod Of ((- 1 ). week s ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 . years , Ġperiod . years ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 . months , Ġperiod . months ) ĊĠĠĠĠĠĠĠ ĠassertEquals ((- 7 ). days , Ġperiod . days ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` period Of () Ġconstructs Ġperiods Ġof Ġdays `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġperiod Ġ= Ġperiod Of ( 1 0 0 . days ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 . years , Ġperiod . years ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 . months , Ġperiod . months ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 0 0 . days , Ġperiod . days ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` as Period () Ġconverts Ġyears Ġto Ġa Ġperiod Ġwith Ġsimilar Ġyears `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġperiod Ġ= Ġ 3 . years . as Period () ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 3 . years , Ġperiod . years ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 . months , Ġperiod . months ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 . days , Ġperiod . days ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` as Period () Ġconverts Ġmonths Ġto Ġa Ġperiod Ġwith Ġsimilar Ġmonths `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġperiod Ġ= Ġ( 1 . years Ġ+ Ġ 3 . months ). as Period () ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 . years , Ġperiod . years ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 5 . months , Ġperiod . months ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 . days , Ġperiod . days ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` as Period () Ġconverts Ġweeks Ġto Ġa Ġperiod Ġwith Ġsimilar Ġdays `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġperiod 1 Ġ= Ġ 1 . week s . as Period () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 . years , Ġperiod 1 . years ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 . months , Ġperiod 1 . months ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 7 . days , Ġperiod 1 . days ) ĊĊĠĠĠĠĠĠĠ Ġval Ġperiod 2 Ġ= Ġ 1 L . week s . as Period () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 . years , Ġperiod 2 . years ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 . months , Ġperiod 2 . months ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 7 . days , Ġperiod 2 . days ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` as Period () Ġconverts Ġdays Ġto Ġa Ġperiod Ġwith Ġsimilar Ġdays `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġperiod Ġ= Ġ 1 0 . days . as Period () ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 . years , Ġperiod . years ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 . months , Ġperiod . months ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 0 . days , Ġperiod . days ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` equality Ġis Ġbased Ġon Ġe quivalence Ġof Ġindividual Ġcomponents `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperiod Of ( 1 . years , Ġ 2 . months , Ġ 0 . days ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperiod Of ( 1 . years , Ġ 2 . months , Ġ 0 . days ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġassert Not Equals ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperiod Of ( 1 . years , Ġ 2 . months , Ġ 0 . days ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperiod Of ( 0 . years , Ġ 1 4 . months , Ġ 0 . days ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġassert Not Equals ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperiod Of ( 1 . years , Ġ 2 . months , Ġ 0 . days ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperiod Of ( 2 . years , Ġ(- 1 0 ). months , Ġ 0 . days ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` can Ġbe Ġbroken Ġdown Ġinto Ġcomponents `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġ( years , Ġmonths , Ġdays ) Ġ= Ġperiod Of ( 1 . years , Ġ 2 . months , Ġ 3 . days ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 . years , Ġyears ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 . months , Ġmonths ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 3 . days , Ġdays ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` toString () Ġreturns Ġ' P 0 D ' Ġwhen Ġthe Ġperiod Ġis Ġzero `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals (" P 0 D ", ĠPeriod . ZERO . toString ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` toString () Ġreturns Ġa Ġvalid ĠISO 8 6 0 1 Ġperiod Ġrepresentation Ġof Ġnon - zero Ġperiods `() Ġ{ ĊĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperiod Of ( 1 . years ) Ġto Ġ" P 1 Y ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperiod Of ((- 1 ). years ) Ġto Ġ" P - 1 Y ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperiod Of ( 1 . months ) Ġto Ġ" P 1 M ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperiod Of ((- 1 ). months ) Ġto Ġ" P - 1 M ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperiod Of ( 1 . days ) Ġto Ġ" P 1 D ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperiod Of ((- 1 ). days ) Ġto Ġ" P - 1 D ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperiod Of ( 1 . week s ) Ġto Ġ" P 7 D ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperiod Of ( 1 0 . years ) Ġto Ġ" P 1 0 Y ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperiod Of ( 1 0 . years , Ġ(- 1 2 ). months , Ġ 4 . days ) Ġto Ġ" P 1 0 Y - 1 2 M 4 D ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperiod Of ((- 1 0 0 ). days ) Ġto Ġ" P - 1 0 0 D ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperiod Of ( Int . MAX _ VALUE . years , ĠInt . MAX _ VALUE . months , ĠInt . MAX _ VALUE . days ) Ġto ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" P ${ Int . MAX _ VALUE } Y ${ Int . MAX _ VALUE } M ${ Int . MAX _ VALUE } D ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperiod Of ( Int . MIN _ VALUE . years , ĠInt . MIN _ VALUE . months , ĠInt . MIN _ VALUE . days ) Ġto ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" P ${ Int . MIN _ VALUE } Y ${ Int . MIN _ VALUE } M ${ Int . MIN _ VALUE } D " ĊĠĠĠĠĠĠĠ Ġ). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( it . second , Ġit . first . toString ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` String _ to Period () Ġthrows Ġan Ġexception Ġwhen Ġstring Ġis Ġempty `() Ġ{ ĊĠĠĠĠĠĠĠ Ġassert Fails With < DateTime ParseException > Ġ{ Ġ"". to Period () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` String _ to Period () Ġparses Ġzero ĠISO - 8 6 0 1 Ġperiod Ġstrings `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( Period . ZERO , Ġ" P 0 D ". to Period ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` String _ to Period () Ġparses Ġvalid ĠISO - 8 6 0 1 Ġperiod Ġstrings `() Ġ{ ĊĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" P 1 Y 1 3 M 6 D " Ġto Ġperiod Of ( 1 . years , Ġ 1 3 . months , Ġ 6 . days ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" P - 1 M 1 0 D " Ġto Ġperiod Of ((- 1 ). months , Ġ 1 0 . days ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" P 1 D " Ġto Ġperiod Of ( 1 . days ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" P 1 W " Ġto Ġperiod Of ( 1 . week s ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"- P 1 W " Ġto Ġperiod Of ((- 1 ). week s ) ĊĠĠĠĠĠĠĠ Ġ). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( it . second , Ġit . first . to Period ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` String _ to Period () Ġthrows Ġan Ġexception Ġwhen Ġthe Ġstring Ġcontains Ġduration Ġcomponents `() Ġ{ ĊĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" PT 0 S ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" P 1 DT 1 H ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"- P 1 DT 1 H ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" PT 1 H ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"- PT 1 H ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" PT 4 S " ĊĠĠĠĠĠĠĠ Ġ). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Fails With < DateTime ParseException > Ġ{ Ġit . to Period () Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` total Months Ġproperty Ġcombin es Ġyears Ġand Ġmonths Ġcomponents `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 5 L . months , Ġperiod Of ( 1 . years , Ġ 3 . months , Ġ 1 5 . days ). total Months ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 5 L . months , Ġperiod Of ((- 1 ). years , Ġ 2 7 . months , Ġ(- 1 ). days ). total Months ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 7 9 1 7 2 8 7 4 1 1 L . months , Ġperiod Of ( Int . MAX _ VALUE . years , ĠInt . MAX _ VALUE . months ). total Months ) ĊĠĠĠĠĠĠĠ ĠassertEquals ((- 2 7 9 1 7 2 8 7 4 2 4 L ). months , Ġperiod Of ( Int . MIN _ VALUE . years , ĠInt . MIN _ VALUE . months ). total Months ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` is Zero () Ġreturns Ġtrue Ġfor Ġzero ed - out Ġperiods `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertTrue Ġ{ ĠPeriod . ZERO . is Zero () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` is Zero () Ġreturns Ġfalse Ġfor Ġnon - zero Ġperiods `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertFalse Ġ{ Ġperiod Of ( 1 . days ). is Zero () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` is Negative () Ġreturns Ġtrue Ġif Ġany Ġcomponent Ġis Ġless Ġthan Ġzero `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertTrue Ġ{ Ġperiod Of ((- 1 ). years , Ġ 1 . months , Ġ 1 . days ). is Negative () Ġ} ĊĠĠĠĠĠĠĠ ĠassertTrue Ġ{ Ġperiod Of ( 1 . years , Ġ(- 1 ). months , Ġ 1 . days ). is Negative () Ġ} ĊĠĠĠĠĠĠĠ ĠassertTrue Ġ{ Ġperiod Of ( 1 . years , Ġ 1 . months , Ġ(- 1 ). days ). is Negative () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` is Negative () Ġreturns Ġfalse Ġif Ġall Ġcomponents Ġare Ġzero Ġor Ġmore `() Ġ{ ĊĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperiod Of ( 1 . years , Ġ 0 . months , Ġ 0 . days ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperiod Of ( 0 . years , Ġ 1 . months , Ġ 0 . days ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperiod Of ( 0 . years , Ġ 0 . months , Ġ 1 . days ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPeriod . ZERO ĊĠĠĠĠĠĠĠ Ġ). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertFalse Ġ{ Ġit . is Negative () Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` copy () Ġreplaces Ġyears Ġvalue `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( period Of ((- 1 ). years , Ġ 1 2 . months ), Ġperiod Of ( 1 . years , Ġ 1 2 . months ). copy ( years Ġ= Ġ(- 1 ). years )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` copy () Ġreplaces Ġmonths Ġvalue `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( period Of ( 1 . years , Ġ 1 2 . months ), Ġperiod Of ( 1 . years , Ġ 3 . months ). copy ( months Ġ= Ġ 1 2 . months )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` copy () Ġreplaces Ġdays Ġvalue `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( Period . ZERO , Ġperiod Of ( 1 0 . days ). copy ( days Ġ= Ġ 0 . days )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` normalized () Ġconverts Ġmonths Ġinto Ġwhole Ġyears Ġwhere Ġpossible `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperiod Of ( 1 . years , Ġ 1 1 . months , Ġ 2 0 . days ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperiod Of ( 1 . years , Ġ 1 1 . months , Ġ 2 0 . days ). normalized () ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperiod Of ( 3 . years , Ġ 3 . months , Ġ 2 0 . days ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperiod Of ( 2 . years , Ġ 1 5 . months , Ġ 2 0 . days ). normalized () ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperiod Of ( 0 . years , Ġ 1 . months , Ġ 2 0 . days ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperiod Of ( 1 . years , Ġ(- 1 1 ). months , Ġ 2 0 . days ). normalized () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` normalized () Ġthrows Ġan Ġexception Ġwhen Ġoverflow Ġoccurs `() Ġ{ ĊĠĠĠĠĠĠĠ Ġassert Fails With < Arithmetic Exception > Ġ{ Ġperiod Of ( Long . MAX _ VALUE . years , ĠLong . MAX _ VALUE . months ). normalized () Ġ} ĊĠĠĠĠĠĠĠ Ġassert Fails With < Arithmetic Exception > Ġ{ Ġperiod Of ( Long . MIN _ VALUE . years , ĠLong . MIN _ VALUE . months ). normalized () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` unary Ġminus Ġchanges Ġthe Ġsign Ġon Ġall Ġcomponents `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( period Of ((- 1 ). years , Ġ 1 . months , Ġ 1 . days ), Ġ- period Of ( 1 . years , Ġ(- 1 ). months , Ġ(- 1 ). days )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` unary Ġminus Ġthrows Ġan Ġexception Ġwhen Ġoverflow Ġoccurs `() Ġ{ ĊĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperiod Of ( Long . MIN _ VALUE . years ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperiod Of ( Long . MIN _ VALUE . months ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperiod Of ( Long . MIN _ VALUE . days ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperiod Of ( Long . MIN _ VALUE . years , ĠLong . MIN _ VALUE . months ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperiod Of ( Long . MIN _ VALUE . years , ĠLong . MIN _ VALUE . days ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperiod Of ( Long . MIN _ VALUE . years , ĠLong . MIN _ VALUE . months , ĠLong . MIN _ VALUE . days ) ĊĠĠĠĠĠĠĠ Ġ). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Fails With < Arithmetic Exception > Ġ{ Ġ- it Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` adding Ġa Ġperiod Ġcombin es Ġeach Ġcomponent Ġindividually `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperiod Of ( 2 . years , Ġ 1 8 . months , Ġ 3 5 . days ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperiod Of ((- 1 ). years , Ġ 2 . months , Ġ(- 1 ). days ) Ġ+ Ġperiod Of ( 3 . years , Ġ 1 6 . months , Ġ 3 6 . days ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` subtract ing Ġa Ġperiod Ġcombin es Ġeach Ġcomponent Ġindividually `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperiod Of ((- 4 ). years , Ġ(- 1 4 ). months , Ġ(- 3 7 ). days ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperiod Of ((- 1 ). years , Ġ 2 . months , Ġ(- 1 ). days ) Ġ- Ġperiod Of ( 3 . years , Ġ 1 6 . months , Ġ 3 6 . days ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` adding Ġyears Ġaffects Ġonly Ġyears Ġcomponent `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperiod Of ( 1 . years , Ġ 9 . months ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperiod Of ( 9 . months ) Ġ+ Ġ 1 . years ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` subtract ing Ġyears Ġaffects Ġonly Ġyears Ġcomponent `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperiod Of ((- 1 ). years , Ġ 9 . months ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperiod Of ( 9 . months ) Ġ- Ġ 1 . years ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` adding Ġmonths Ġaffects Ġonly Ġmonths Ġcomponent `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperiod Of ( 1 . years , Ġ 1 3 . months ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperiod Of ( 1 . years , Ġ(- 1 ). months ) Ġ+ Ġ 1 4 . months ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` subtract ing Ġmonths Ġaffects Ġonly Ġmonths Ġcomponent `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperiod Of ( 1 . years , Ġ(- 1 2 ). months ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperiod Of ( 1 . years ) Ġ- Ġ 1 2 . months ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` adding Ġweeks Ġaffects Ġonly Ġdays Ġcomponent `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperiod Of ( 1 . years , Ġ 1 . months , Ġ 6 . days ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperiod Of ( 1 . years , Ġ 1 . months , Ġ(- 1 ). days ) Ġ+ Ġ 1 . week s ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` subtract ing Ġweeks Ġaffects Ġonly Ġdays Ġcomponent `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperiod Of ( 1 . years , Ġ 1 . months , Ġ(- 6 ). days ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperiod Of ( 1 . years , Ġ 1 . months , Ġ 1 . days ) Ġ- Ġ 1 . week s ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` adding Ġdays Ġaffects Ġonly Ġdays Ġcomponent `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperiod Of ( 1 . years , Ġ 1 . months , Ġ 1 . days ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperiod Of ( 1 . years , Ġ 1 . months , Ġ(- 1 ). days ) Ġ+ Ġ 2 . days ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` subtract ing Ġdays Ġaffects Ġonly Ġdays Ġcomponent `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperiod Of ( 1 . years , Ġ 1 . months ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperiod Of ( 1 . years , Ġ 1 . months , Ġ 1 . days ) Ġ- Ġ 1 . days ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĠĠĠĠĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` adding Ġor Ġsubtract ing Ġyears Ġcauses Ġan Ġexception Ġon Ġoverflow `() Ġ{ ĊĠĠĠĠĠĠĠ Ġassert Fails With < Arithmetic Exception > Ġ{ Ġperiod Of ( Long . MAX _ VALUE . years ) Ġ+ Ġ 1 . years Ġ} ĊĠĠĠĠĠĠĠ Ġassert Fails With < Arithmetic Exception > Ġ{ Ġperiod Of ( Long . MIN _ VALUE . years ) Ġ- Ġ 1 . years Ġ} ĊĠĠĠĠĠĠĠ Ġassert Fails With < Arithmetic Exception > Ġ{ Ġperiod Of ( 1 . years ) Ġ+ ĠLong . MAX _ VALUE . years Ġ} ĊĠĠĠĠĠĠĠ Ġassert Fails With < Arithmetic Exception > Ġ{ Ġperiod Of ((- 1 ). years ) Ġ+ ĠLong . MIN _ VALUE . years Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` adding Ġor Ġsubtract ing Ġmonths Ġcauses Ġan Ġexception Ġon Ġoverflow `() Ġ{ ĊĠĠĠĠĠĠĠ Ġassert Fails With < Arithmetic Exception > Ġ{ Ġperiod Of ( Long . MAX _ VALUE . months ) Ġ+ Ġ 1 . months Ġ} ĊĠĠĠĠĠĠĠ Ġassert Fails With < Arithmetic Exception > Ġ{ Ġperiod Of ( Long . MIN _ VALUE . months ) Ġ- Ġ 1 . months Ġ} ĊĠĠĠĠĠĠĠ Ġassert Fails With < Arithmetic Exception > Ġ{ Ġperiod Of ( 1 . months ) Ġ+ ĠLong . MAX _ VALUE . months Ġ} ĊĠĠĠĠĠĠĠ Ġassert Fails With < Arithmetic Exception > Ġ{ Ġperiod Of ((- 1 ). months ) Ġ+ ĠLong . MIN _ VALUE . months Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` adding Ġor Ġsubtract ing Ġweeks Ġcauses Ġan Ġexception Ġon Ġoverflow `() Ġ{ ĊĠĠĠĠĠĠĠ Ġassert Fails With < Arithmetic Exception > Ġ{ Ġperiod Of ( Long . MAX _ VALUE . days ) Ġ+ Ġ 1 . week s Ġ} ĊĠĠĠĠĠĠĠ Ġassert Fails With < Arithmetic Exception > Ġ{ Ġperiod Of ( Long . MIN _ VALUE . days ) Ġ- Ġ 1 . week s Ġ} ĊĠĠĠĠĠĠĠ Ġassert Fails With < Arithmetic Exception > Ġ{ Ġperiod Of ( 1 . days ) Ġ+ ĠLong . MAX _ VALUE . week s Ġ} ĊĠĠĠĠĠĠĠ Ġassert Fails With < Arithmetic Exception > Ġ{ Ġperiod Of ((- 1 ). days ) Ġ+ ĠLong . MIN _ VALUE . week s Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` adding Ġor Ġsubtract ing Ġdays Ġcauses Ġan Ġexception Ġon Ġoverflow `() Ġ{ ĊĠĠĠĠĠĠĠ Ġassert Fails With < Arithmetic Exception > Ġ{ Ġperiod Of ( Long . MAX _ VALUE . days ) Ġ+ Ġ 1 . days Ġ} ĊĠĠĠĠĠĠĠ Ġassert Fails With < Arithmetic Exception > Ġ{ Ġperiod Of ( Long . MIN _ VALUE . days ) Ġ- Ġ 1 . days Ġ} ĊĠĠĠĠĠĠĠ Ġassert Fails With < Arithmetic Exception > Ġ{ Ġperiod Of ( 1 . days ) Ġ+ ĠLong . MAX _ VALUE . days Ġ} ĊĠĠĠĠĠĠĠ Ġassert Fails With < Arithmetic Exception > Ġ{ Ġperiod Of ((- 1 ). days ) Ġ+ ĠLong . MIN _ VALUE . days Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` multiply ing Ġby Ġ 1 Ġhas Ġno Ġeffect `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( period Of ( 1 . days ), Ġperiod Of ( 1 . days ) Ġ* Ġ 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` multiply ing Ġa Ġzero Ġperiod Ġby Ġa Ġscalar Ġhas Ġno Ġeffect `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( Period . ZERO , ĠPeriod . ZERO Ġ* Ġ 1 5 0 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` multiply ing Ġa Ġnon - zero Ġperiod Ġby Ġa Ġscalar Ġmultip lies Ġeach Ġcomponent Ġindividually `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperiod Of ( 2 . years , Ġ(- 2 ). months , Ġ 4 . days ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperiod Of ( 1 . years , Ġ(- 1 ). months , Ġ 2 . days ) Ġ* Ġ 2 ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` multip lication Ġcauses Ġan Ġexception Ġwhen Ġoverflow Ġoccurs `() Ġ{ ĊĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperiod Of ( Long . MIN _ VALUE . years ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperiod Of ( Long . MIN _ VALUE . months ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperiod Of ( Long . MIN _ VALUE . days ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperiod Of ( Long . MIN _ VALUE . years , ĠLong . MIN _ VALUE . months ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperiod Of ( Long . MIN _ VALUE . years , ĠLong . MIN _ VALUE . days ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperiod Of ( Long . MIN _ VALUE . years , ĠLong . MIN _ VALUE . months , ĠLong . MIN _ VALUE . days ) ĊĠĠĠĠĠĠĠ Ġ). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Fails With < Arithmetic Exception > Ġ{ Ġit Ġ* Ġ- 1 Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġassert Fails With < Arithmetic Exception > Ġ{ Ġperiod Of ( 1 . week s ) Ġ* ĠLong . MAX _ VALUE Ġ} ĊĠĠĠĠĠĠĠ Ġassert Fails With < Arithmetic Exception > Ġ{ ĠLong . MAX _ VALUE Ġ* Ġperiod Of ( 2 . days ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` adding Ġa Ġperiod Ġto Ġyears Ġreturns Ġa Ġnew Ġperiod Ġwith Ġadjusted Ġyears `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperiod Of ( 2 . years , Ġ 1 . months ), ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 . years Ġ+ Ġperiod Of ( 1 . years , Ġ 1 . months ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperiod Of ( Int . MAX _ VALUE . years , Ġ 1 . months ), ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 . years Ġ+ Ġperiod Of (( Int . MAX _ VALUE Ġ- Ġ 1 ). years , Ġ 1 . months ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` adding Ġa Ġperiod Ġto Ġmonths Ġreturns Ġa Ġnew Ġperiod Ġwith Ġadjusted Ġmonths `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperiod Of ( 3 . months , Ġ 4 . days ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ(- 2 ). months Ġ+ Ġperiod Of ( 5 . months , Ġ 4 . days ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperiod Of ( Int . MAX _ VALUE . months , Ġ 1 . days ), ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 . months Ġ+ Ġperiod Of (( Int . MAX _ VALUE Ġ- Ġ 1 ). months , Ġ 1 . days ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` adding Ġa Ġperiod Ġto Ġweeks Ġreturns Ġa Ġnew Ġperiod Ġwith Ġadjusted Ġdays `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperiod Of ( 1 . years , Ġ 3 3 . days ), ĊĠĠĠĠĠĠĠĠĠĠĠĠ 5 . week s Ġ+ Ġperiod Of ( 1 . years , Ġ(- 2 ). days ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperiod Of ( 1 . years , Ġ(- 3 7 ). days ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ(- 5 L ). week s Ġ+ Ġperiod Of ( 1 . years , Ġ(- 2 ). days ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` adding Ġa Ġperiod Ġto Ġdays Ġreturns Ġa Ġnew Ġperiod Ġwith Ġadjusted Ġdays `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperiod Of ( 1 . years , Ġ 3 . days ), ĊĠĠĠĠĠĠĠĠĠĠĠĠ 5 . days Ġ+ Ġperiod Of ( 1 . years , Ġ(- 2 ). days ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperiod Of ( 1 . years , Ġ 3 . days ), ĊĠĠĠĠĠĠĠĠĠĠĠĠ 5 L . days Ġ+ Ġperiod Of ( 1 . years , Ġ(- 2 ). days ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperiod Of ( 1 . months , ĠInt . MAX _ VALUE . days ), ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 . days Ġ+ Ġperiod Of ( 1 . months , Ġ( Int . MAX _ VALUE Ġ- Ġ 1 ). days ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` subtract ing Ġa Ġperiod Ġfrom Ġyears Ġreturns Ġa Ġnew Ġperiod Ġwith Ġadjusted Ġyears `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperiod Of ((- 1 ). months ), ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 . years Ġ- Ġperiod Of ( 1 . years , Ġ 1 . months ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperiod Of ((- 1 ). months ), ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 L . years Ġ- Ġperiod Of ( 1 . years , Ġ 1 . months ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` subtract ing Ġa Ġperiod Ġfrom Ġmonths Ġreturns Ġa Ġnew Ġperiod Ġwith Ġadjusted Ġmonths `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperiod Of ((- 4 ). days ), ĊĠĠĠĠĠĠĠĠĠĠĠĠ 2 . months Ġ- Ġperiod Of ( 2 . months , Ġ 4 . days ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperiod Of ((- 4 ). days ), ĊĠĠĠĠĠĠĠĠĠĠĠĠ 2 L . months Ġ- Ġperiod Of ( 2 . months , Ġ 4 . days ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` subtract ing Ġa Ġperiod Ġfrom Ġweeks Ġreturns Ġa Ġnew Ġperiod Ġwith Ġadjusted Ġdays `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperiod Of ((- 1 ). years , Ġ 3 7 . days ), ĊĠĠĠĠĠĠĠĠĠĠĠĠ 5 . week s Ġ- Ġperiod Of ( 1 . years , Ġ(- 2 ). days ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperiod Of ((- 1 ). years , Ġ(- 3 3 ). days ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ(- 5 L ). week s Ġ- Ġperiod Of ( 1 . years , Ġ(- 2 ). days ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` subtract ing Ġa Ġperiod Ġfrom Ġdays Ġreturns Ġa Ġnew Ġperiod Ġwith Ġadjusted Ġdays `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperiod Of ((- 1 ). years , Ġ 7 . days ), ĊĠĠĠĠĠĠĠĠĠĠĠĠ 5 . days Ġ- Ġperiod Of ( 1 . years , Ġ(- 2 ). days ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperiod Of ((- 1 ). years , Ġ 7 . days ), ĊĠĠĠĠĠĠĠĠĠĠĠĠ 5 L . days Ġ- Ġperiod Of ( 1 . years , Ġ(- 2 ). days ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ