package Ġio . is land time Ċ Ċ import Ġio . is land time . meas ures . cent ur ies Ċ import Ġio . is land time . meas ures . days Ċ import Ġio . is land time . meas ures . de ca des Ċ import Ġio . is land time . meas ures . years Ċ import Ġio . is land time . parser . DateTime ParseException Ċ import Ġio . is land time . parser . dateTime Parser Ċ import Ġio . is land time . parser . month Number Ċ import Ġio . is land time . parser . year Ċ import Ġio . is land time . ranges . DateRange Ċ import Ġio . is land time . test . Abstract Is land Time Test Ċ import Ġkotlin . test .* Ċ Ċ class ĠYear Test Ġ: ĠAbstract Is land Time Test () Ġ{ ĊĠĠĠ Ġprivate Ġval Ġinvalid Int Years Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠ ĠYear . MIN _ VALUE Ġ- Ġ 1 , ĊĠĠĠĠĠĠĠ ĠYear . MAX _ VALUE Ġ+ Ġ 1 , ĊĠĠĠĠĠĠĠ ĠInt . MAX _ VALUE , ĊĠĠĠĠĠĠĠ ĠInt . MIN _ VALUE ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġval Ġinvalid Long Years Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠ ĠYear . MIN _ VALUE Ġ- Ġ 1 L , ĊĠĠĠĠĠĠĠ ĠYear . MAX _ VALUE Ġ+ Ġ 1 L , ĊĠĠĠĠĠĠĠ ĠLong . MAX _ VALUE , ĊĠĠĠĠĠĠĠ ĠLong . MIN _ VALUE ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Int Ġconstructor Ġthrows Ġan Ġexception Ġif Ġthe Ġvalue Ġis Ġinvalid `() Ġ{ ĊĠĠĠĠĠĠĠ Ġinvalid Int Years . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Fails With < DateTime Exception > Ġ{ ĠYear ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Long Ġconstructor Ġthrows Ġan Ġexception Ġif Ġthe Ġvalue Ġis Ġinvalid `() Ġ{ ĊĠĠĠĠĠĠĠ Ġinvalid Long Years . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Fails With < DateTime Exception > Ġ{ ĠYear ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Int Ġconstruction Ġsucceeds Ġwith Ġvalid Ġyears `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 0 0 0 , ĠYear ( 2 0 0 0 ). value ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Year . MIN _ VALUE , ĠYear . MIN . value ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Year . MAX _ VALUE , ĠYear . MAX . value ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Long Ġconstruction Ġsucceeds Ġwith Ġvalid Ġyears `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 0 0 0 , ĠYear ( 2 0 0 0 L ). value ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Year . MIN _ VALUE , ĠYear ( Year . MIN _ VALUE . to Long ()). value ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Year . MAX _ VALUE , ĠYear ( Year . MAX _ VALUE . to Long ()). value ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` is Le ap Ġproperty Ġreturns Ġfalse Ġfor Ġcommon Ġyears `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertFalse Ġ{ ĠYear ( 2 0 0 1 ). is Le ap Ġ} ĊĠĠĠĠĠĠĠ ĠassertFalse Ġ{ ĠYear ( 1 9 0 0 ). is Le ap Ġ} ĊĠĠĠĠĠĠĠ ĠassertFalse Ġ{ ĠYear ( 1 9 6 5 ). is Le ap Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` is Le ap Ġproperty Ġreturns Ġtrue Ġfor Ġle ap Ġyears `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertTrue Ġ{ ĠYear ( 2 0 0 0 ). is Le ap Ġ} ĊĠĠĠĠĠĠĠ ĠassertTrue Ġ{ ĠYear ( 1 9 6 4 ). is Le ap Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` length Ġproperty Ġreturns Ġdays Ġin Ġyear `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( 3 6 6 . days , ĠYear ( 2 0 0 0 ). length ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 3 6 5 . days , ĠYear ( 2 0 0 1 ). length ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` last Day Ġproperty Ġreturns Ġthe Ġlast Ġday Ġof Ġthe Ġyear `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( 3 6 6 , ĠYear ( 2 0 0 0 ). last Day ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 3 6 5 , ĠYear ( 2 0 0 1 ). last Day ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` day Range Ġproperty Ġreturns Ġthe Ġrange Ġof Ġdays Ġin Ġthe Ġyear `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( Int Range ( 1 , Ġ 3 6 6 ), ĠYear ( 2 0 0 0 ). day Range ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Int Range ( 1 , Ġ 3 6 5 ), ĠYear ( 2 0 0 1 ). day Range ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` date Range Ġproperty Ġreturns Ġthe Ġrange Ġof Ġdates Ġin Ġthe Ġyear `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDate Range ( Date ( 2 0 0 0 , ĠMonth . J AN U ARY , Ġ 1 ), ĠDate ( 2 0 0 0 , ĠMonth . DE CE MBER , Ġ 3 1 )), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠYear ( 2 0 0 0 ). date Range ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` startDate Ġproperty Ġreturns Ġthe Ġfirst Ġdate Ġof Ġthe Ġyear `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( Date ( 2 0 0 0 , ĠMonth . J AN U ARY , Ġ 1 ), ĠYear ( 2 0 0 0 ). startDate ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` endDate Ġproperty Ġreturns Ġthe Ġlast Ġdate Ġof Ġthe Ġyear `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( Date ( 2 0 0 0 , ĠMonth . DE CE MBER , Ġ 3 1 ), ĠYear ( 2 0 0 0 ). endDate ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` adding Ġor Ġsubtract ing Ġzero Ġyears Ġhas Ġno Ġeffect `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( Year ( 2 0 0 9 ), ĠYear ( 2 0 0 9 ) Ġ+ Ġ 0 . years ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Year ( 2 0 0 9 ), ĠYear ( 2 0 0 9 ) Ġ- Ġ 0 . years ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` add Ġpositive Ġyears `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( Year ( 1 9 7 0 ), ĠYear ( 1 9 6 9 ) Ġ+ Ġ 1 . years ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Year ( 2 0 0 9 ), ĠYear ( 2 0 0 0 ) Ġ+ Ġ 9 . years ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Year ( 2 0 0 9 ), ĠYear ( 2 0 0 0 ) Ġ+ Ġ 9 L . years ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Year ( 9 9 9 9 ), ĠYear ( 1 ) Ġ+ Ġ 9 9 9 8 . years ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` add Ġnegative Ġyears `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( Year ( 2 0 0 0 ), ĠYear ( 2 0 1 0 ) Ġ+ Ġ(- 1 0 ). years ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Year ( 1 ), ĠYear ( 2 ) Ġ+ Ġ(- 1 L ). years ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Year ( 1 0 0 0 ), ĠYear ( 9 9 9 9 ) Ġ+ Ġ(- 8 9 9 9 ). years ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` throws Ġan Ġexception Ġwhen Ġadding Ġyears Ġputs Ġthe Ġyear Ġoutside Ġthe Ġsupported Ġrange `() Ġ{ ĊĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĠYear . MAX Ġ+ Ġ 1 . years Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĠYear . MAX Ġ+ ĠInt . MAX _ VALUE . years Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĠYear . MAX Ġ+ ĠLong . MAX _ VALUE . years Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĠYear . MIN Ġ+ Ġ(- 1 ). years Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĠYear . MIN Ġ+ ĠInt . MIN _ VALUE . years Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĠYear . MIN Ġ+ ĠLong . MIN _ VALUE . years Ġ} ĊĠĠĠĠĠĠĠ Ġ). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Fails With < DateTime Exception > Ġ{ Ġit () Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` subtract Ġpositive Ġyears `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( Year ( 2 0 0 0 ), ĠYear ( 2 0 1 0 ) Ġ- Ġ 1 0 . years ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Year ( 1 ), ĠYear ( 2 ) Ġ- Ġ 1 L . years ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Year ( 1 0 0 0 ), ĠYear ( 9 9 9 9 ) Ġ- Ġ 8 9 9 9 . years ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` subtract Ġnegative Ġyears `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( Year ( 1 9 7 0 ), ĠYear ( 1 9 6 9 ) Ġ- Ġ(- 1 ). years ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Year ( 2 0 0 9 ), ĠYear ( 2 0 0 0 ) Ġ- Ġ(- 9 ). years ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Year ( 2 0 0 9 ), ĠYear ( 2 0 0 0 ) Ġ- Ġ(- 9 L ). years ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Year ( 9 9 9 9 ), ĠYear ( 1 ) Ġ- Ġ(- 9 9 9 8 ). years ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` throws Ġan Ġexception Ġwhen Ġsubtract ing Ġyears Ġputs Ġthe Ġyear Ġoutside Ġthe Ġsupported Ġrange `() Ġ{ ĊĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĠYear . MAX Ġ- Ġ(- 1 ). years Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĠYear . MAX Ġ- ĠInt . MIN _ VALUE . years Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĠYear . MAX Ġ- ĠLong . MIN _ VALUE . years Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĠYear . MIN Ġ- Ġ 1 . years Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĠYear . MIN Ġ- ĠInt . MAX _ VALUE . years Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĠYear . MIN Ġ- ĠLong . MAX _ VALUE . years Ġ} ĊĠĠĠĠĠĠĠ Ġ). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Fails With < DateTime Exception > Ġ{ Ġit () Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` adding Ġor Ġsubtract ing Ġzero Ġde ca des Ġhas Ġno Ġeffect `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( Year ( 2 0 0 9 ), ĠYear ( 2 0 0 9 ) Ġ+ Ġ 0 . de ca des ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Year ( 2 0 0 9 ), ĠYear ( 2 0 0 9 ) Ġ- Ġ 0 . de ca des ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` add Ġpositive Ġde ca des `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( Year ( 1 9 7 9 ), ĠYear ( 1 9 6 9 ) Ġ+ Ġ 1 . de ca des ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` add Ġnegative Ġde ca des `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( Year (- 8 ), ĠYear ( 2 ) Ġ+ Ġ(- 1 ). de ca des ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` throws Ġan Ġexception Ġwhen Ġadding Ġde ca des Ġputs Ġthe Ġyear Ġoutside Ġthe Ġsupported Ġrange `() Ġ{ ĊĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĠYear . MAX Ġ+ Ġ 1 . de ca des Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĠYear . MIN Ġ+ Ġ(- 1 ). de ca des Ġ}, ĊĠĠĠĠĠĠĠ Ġ). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Fails With < DateTime Exception > Ġ{ Ġit () Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` throws Ġan Ġexception Ġwhen Ġadding Ġde ca des Ġcauses Ġoverflow `() Ġ{ ĊĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĠYear . MAX Ġ+ ĠLong . MAX _ VALUE . de ca des Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĠYear . MIN Ġ+ ĠLong . MIN _ VALUE . de ca des Ġ} ĊĠĠĠĠĠĠĠ Ġ). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Fails With < Arithmetic Exception > Ġ{ Ġit () Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` subtract Ġpositive Ġde ca des `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( Year ( 2 0 0 0 ), ĠYear ( 2 0 1 0 ) Ġ- Ġ 1 . de ca des ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` subtract Ġnegative Ġde ca des `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( Year ( 1 9 7 9 ), ĠYear ( 1 9 6 9 ) Ġ- Ġ(- 1 ). de ca des ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` throws Ġan Ġexception Ġwhen Ġsubtract ing Ġde ca des Ġputs Ġthe Ġyear Ġoutside Ġthe Ġsupported Ġrange `() Ġ{ ĊĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĠYear . MAX Ġ- Ġ(- 1 ). de ca des Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĠYear . MIN Ġ- Ġ 1 . de ca des Ġ}, ĊĠĠĠĠĠĠĠ Ġ). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Fails With < DateTime Exception > Ġ{ Ġit () Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` throws Ġan Ġexception Ġwhen Ġsubtract ing Ġde ca des Ġcauses Ġoverflow `() Ġ{ ĊĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĠYear . MAX Ġ- ĠLong . MIN _ VALUE . de ca des Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĠYear . MIN Ġ- ĠLong . MAX _ VALUE . de ca des Ġ} ĊĠĠĠĠĠĠĠ Ġ). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Fails With < Arithmetic Exception > Ġ{ Ġit () Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` adding Ġor Ġsubtract ing Ġzero Ġcent ur ies Ġhas Ġno Ġeffect `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( Year ( 2 0 0 9 ), ĠYear ( 2 0 0 9 ) Ġ+ Ġ 0 . cent ur ies ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Year ( 2 0 0 9 ), ĠYear ( 2 0 0 9 ) Ġ- Ġ 0 . cent ur ies ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` add Ġpositive Ġcent ur ies `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( Year ( 2 0 6 9 ), ĠYear ( 1 9 6 9 ) Ġ+ Ġ 1 . cent ur ies ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` add Ġnegative Ġcent ur ies `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( Year (- 9 8 ), ĠYear ( 2 ) Ġ+ Ġ(- 1 ). cent ur ies ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` throws Ġan Ġexception Ġwhen Ġadding Ġcent ur ies Ġputs Ġthe Ġyear Ġoutside Ġthe Ġsupported Ġrange `() Ġ{ ĊĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĠYear . MAX Ġ+ Ġ 1 . cent ur ies Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĠYear . MIN Ġ+ Ġ(- 1 ). cent ur ies Ġ}, ĊĠĠĠĠĠĠĠ Ġ). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Fails With < DateTime Exception > Ġ{ Ġit () Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` throws Ġan Ġexception Ġwhen Ġadding Ġcent ur ies Ġcauses Ġoverflow `() Ġ{ ĊĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĠYear . MAX Ġ+ ĠLong . MAX _ VALUE . cent ur ies Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĠYear . MIN Ġ+ ĠLong . MIN _ VALUE . cent ur ies Ġ} ĊĠĠĠĠĠĠĠ Ġ). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Fails With < Arithmetic Exception > Ġ{ Ġit () Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` subtract Ġpositive Ġcent ur ies `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( Year ( 1 9 1 0 ), ĠYear ( 2 0 1 0 ) Ġ- Ġ 1 . cent ur ies ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` subtract Ġnegative Ġcent ur ies `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( Year ( 2 0 6 9 ), ĠYear ( 1 9 6 9 ) Ġ- Ġ(- 1 ). cent ur ies ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` throws Ġan Ġexception Ġwhen Ġsubtract ing Ġcent ur ies Ġputs Ġthe Ġyear Ġoutside Ġthe Ġsupported Ġrange `() Ġ{ ĊĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĠYear . MAX Ġ- Ġ(- 1 ). cent ur ies Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĠYear . MIN Ġ- Ġ 1 . cent ur ies Ġ}, ĊĠĠĠĠĠĠĠ Ġ). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Fails With < DateTime Exception > Ġ{ Ġit () Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` throws Ġan Ġexception Ġwhen Ġsubtract ing Ġcent ur ies Ġcauses Ġoverflow `() Ġ{ ĊĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĠYear . MAX Ġ- ĠLong . MIN _ VALUE . cent ur ies Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĠYear . MIN Ġ- ĠLong . MAX _ VALUE . cent ur ies Ġ} ĊĠĠĠĠĠĠĠ Ġ). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Fails With < Arithmetic Exception > Ġ{ Ġit () Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` contains ĠYear Month `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertTrue Ġ{ ĠYear Month ( 2 0 1 9 , ĠMonth . J AN U ARY ) Ġin ĠYear ( 2 0 1 9 ) Ġ} ĊĠĠĠĠĠĠĠ ĠassertTrue Ġ{ ĠYear Month ( 2 0 1 9 , ĠMonth . DE CE MBER ) Ġin ĠYear ( 2 0 1 9 ) Ġ} ĊĠĠĠĠĠĠĠ ĠassertFalse Ġ{ ĠYear Month ( 2 0 2 0 , ĠMonth . J AN U ARY ) Ġin ĠYear ( 2 0 1 9 ) Ġ} ĊĠĠĠĠĠĠĠ ĠassertFalse Ġ{ ĠYear Month ( 2 0 1 8 , ĠMonth . DE CE MBER ) Ġin ĠYear ( 2 0 1 9 ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` contains ĠDate `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertTrue Ġ{ ĠDate ( 2 0 1 9 , ĠMonth . J AN U ARY , Ġ 1 ) Ġin ĠYear ( 2 0 1 9 ) Ġ} ĊĠĠĠĠĠĠĠ ĠassertTrue Ġ{ ĠDate ( 2 0 1 9 , ĠMonth . DE CE MBER , Ġ 3 1 ) Ġin ĠYear ( 2 0 1 9 ) Ġ} ĊĠĠĠĠĠĠĠ ĠassertFalse Ġ{ ĠDate ( 2 0 2 0 , ĠMonth . J AN U ARY , Ġ 1 ) Ġin ĠYear ( 2 0 1 9 ) Ġ} ĊĠĠĠĠĠĠĠ ĠassertFalse Ġ{ ĠDate ( 2 0 1 8 , ĠMonth . DE CE MBER , Ġ 3 1 ) Ġin ĠYear ( 2 0 1 9 ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` toString () Ġreturns Ġthe Ġyear Ġwith Ġa Ġminimum Ġof Ġ 4 Ġdigits Ġas Ġrequired Ġby ĠISO - 8 6 0 1 `() Ġ{ ĊĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠ 2 0 0 8 Ġto Ġ" 2 0 0 8 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġto Ġ" 0 0 0 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġto Ġ" 0 0 0 0 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ- 1 Ġto Ġ"- 0 0 0 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠ 9 9 9 9 Ġto Ġ" 9 9 9 9 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ- 9 9 9 9 Ġto Ġ"- 9 9 9 9 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 0 _ 0 0 0 Ġto Ġ"+ 1 0 0 0 0 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ- 1 0 _ 0 0 0 Ġto Ġ"- 1 0 0 0 0 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠ 9 9 9 _ 9 9 9 _ 9 9 9 Ġto Ġ"+ 9 9 9 9 9 9 9 9 9 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ- 9 9 9 _ 9 9 9 _ 9 9 9 Ġto Ġ"- 9 9 9 9 9 9 9 9 9 " ĊĠĠĠĠĠĠĠ Ġ). forEach Ġ{ Ġ( year , Ġstring ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( string , ĠYear ( year ). toString ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` String _ to Year () Ġthrows Ġan Ġexception Ġwhen Ġthe Ġstring Ġis Ġempty `() Ġ{ ĊĠĠĠĠĠĠĠ Ġassert Fails With < DateTime ParseException > Ġ{ Ġ"". to Year () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` String _ to Year () Ġthrows Ġan Ġexception Ġwhen Ġparsing Ġan Ġimpro per ly Ġformatted Ġstring `() Ġ{ ĊĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" 0 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" 0 0 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġ 2 0 0 8 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" 2 0 0 8 -", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Y 2 0 0 8 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"+ 0 1 2 3 4 5 6 7 8 9 0 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"+ 1 2 3 4 5 6 7 8 9 0 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"- 0 1 2 3 4 5 6 7 8 9 0 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"- 1 2 3 4 5 6 7 8 9 0 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Y 0 1 2 3 4 5 6 7 8 9 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Y 1 2 3 4 5 6 7 8 9 0 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Y - 0 1 2 3 4 5 6 7 8 9 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Y - 1 2 3 4 5 6 7 8 9 0 " ĊĠĠĠĠĠĠĠ Ġ). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Fails With < DateTime ParseException > Ġ{ Ġit . to Year () Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` String _ to Year () Ġthrows Ġan Ġexception Ġwhen Ġthe Ġyear Ġis Ġoutside Ġthe Ġsupported Ġrange `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcustom Parser Ġ= ĠdateTime Parser Ġ{ Ġyear () Ġ} ĊĊĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ Year . MAX _ VALUE Ġ+ Ġ 1 }", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ Year . MIN _ VALUE Ġ- Ġ 1 }", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ Long . MAX _ VALUE }", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ Long . MIN _ VALUE }" ĊĠĠĠĠĠĠĠ Ġ). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Fails With < DateTime Exception > Ġ{ Ġit . to Year ( custom Parser ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` String _ to Year () Ġconverts Ġan ĠISO - 8 6 0 1 Ġyear Ġstring Ġto Ġa ĠYear `() Ġ{ ĊĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" 2 0 1 0 " Ġto Ġ 2 0 1 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" 0 0 0 1 " Ġto Ġ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" 0 0 0 0 " Ġto Ġ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"+ 0 0 0 0 " Ġto Ġ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"- 0 0 0 0 " Ġto Ġ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"- 0 0 0 1 " Ġto Ġ- 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"- 9 9 9 9 " Ġto Ġ- 9 9 9 9 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"+ 1 0 0 0 0 " Ġto Ġ 1 0 0 0 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Y 1 0 0 0 0 " Ġto Ġ 1 0 0 0 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Y - 1 0 0 0 0 " Ġto Ġ- 1 0 0 0 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"+ 9 9 9 9 9 9 9 9 9 " Ġto Ġ 9 9 9 _ 9 9 9 _ 9 9 9 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"- 9 9 9 9 9 9 9 9 9 " Ġto Ġ- 9 9 9 _ 9 9 9 _ 9 9 9 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Y 9 9 9 9 9 9 9 9 9 " Ġto Ġ 9 9 9 _ 9 9 9 _ 9 9 9 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Y - 9 9 9 9 9 9 9 9 9 " Ġto Ġ- 9 9 9 _ 9 9 9 _ 9 9 9 ĊĠĠĠĠĠĠĠ Ġ). forEach Ġ{ Ġ( parsed , Ġexpected ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( Year ( expected ), Ġparsed . to Year ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` String _ to Year () Ġthrows Ġan Ġexception Ġwhen Ġthe Ġparser Ġfails Ġto Ġsupply Ġthe ĠYEAR Ġfield `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcustom Parser Ġ= ĠdateTime Parser Ġ{ Ġmonth Number ( 2 ) Ġ} ĊĠĠĠĠĠĠĠ Ġassert Fails With < DateTime ParseException > Ġ{ Ġ" 1 2 ". to Year ( custom Parser ) Ġ} ĊĠĠĠ Ġ} Ċ } Ċ