@ file : Suppress (" DE PREC ATION ") Ċ Ċ package Ġcom . c ark z is . android . pl ut us . util Ċ Ċ import Ġcom . c ark z is . android . pl ut us . C pi Percentage Ċ import Ġcom . c ark z is . android . pl ut us . R pi Percentage Ċ import Ġcom . c ark z is . android . pl ut us . util .* Ċ import Ġorg . hamcrest . Core Matchers .` is ` Ċ import Ġorg . hamcrest . number . Ordering Comparison . less Than Ċ import Ġorg . junit . Test Ċ Ċ import Ġorg . junit . Assert .* Ċ Ċ class ĠCalc UtilsTest Ġ{ ĊĊĠĠĠ Ġ// ĠTODO : ĠTest Ġdifferent Ġstandard ĠL ta Ġentries . ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġdb P cls Calculation _ input P ension No Dc Fund _ returns Expected P cls Res idual L ta () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠCreate Ġvariables Ġto Ġenter Ġinto Ġcalculation ĊĠĠĠĠĠĠĠ Ġval Ġp ension Ġ= Ġ 1 0 0 0 . 0 0 ĊĠĠĠĠĠĠĠ Ġval Ġcf Ġ= Ġ 2 0 . 0 0 ĊĠĠĠĠĠĠĠ Ġval Ġs L ta Ġ= Ġ 1 0 7 3 1 0 0 . 0 0 ĊĊĠĠĠĠĠĠĠ Ġ// ĠCall Ġthe Ġfunction ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġdb P cls Calculation ( pension , Ġcf , Ġs L ta ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠCheck Ġthe Ġresult ĊĠĠĠĠĠĠĠ ĠassertThat ( result . p cls , Ġ` is ` (" Â £ 5 , 0 0 0 . 0 0 ")) ĊĠĠĠĠĠĠĠ ĠassertThat ( result . residual P ension , ` is ` (" Â £ 7 5 0 . 0 0 ")) ĊĠĠĠĠĠĠĠ ĠassertThat ( result . dc Fund , Ġ` is ` (" Â £ 0 . 0 0 ")) ĊĠĠĠĠĠĠĠ ĠassertThat ( result . l ta , Ġ` is ` (" 1 . 8 5 % ")) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġdb P cls Calculation _ input P ension With Dc Fund _ returns Expected P cls Res idual Dc Fund L ta () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠCreate Ġvariables Ġto Ġenter Ġinto Ġcalculation ĊĠĠĠĠĠĠĠ Ġval Ġp ension Ġ= Ġ 1 5 6 1 4 . 2 3 ĊĠĠĠĠĠĠĠ Ġval Ġcf Ġ= Ġ 1 2 . 3 2 ĊĠĠĠĠĠĠĠ Ġval Ġdc Fund Ġ= Ġ 3 2 4 4 . 9 2 ĊĠĠĠĠĠĠĠ Ġval Ġs L ta Ġ= Ġ 1 0 7 3 1 0 0 . 0 0 ĊĊĠĠĠĠĠĠĠ Ġ// ĠCall Ġthe Ġfunction ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġdb P cls Calculation ( pension , Ġcf , Ġs L ta , Ġdc Fund ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠCheck Ġthe Ġresults ĊĠĠĠĠĠĠĠ ĠassertThat ( result . p cls , Ġ` is ` (" Â £ 6 7 , 5 4 4 . 7 0 ")) ĊĠĠĠĠĠĠĠ ĠassertThat ( result . residual P ension , Ġ` is ` (" Â £ 1 0 , 1 3 1 . 7 1 ")) ĊĠĠĠĠĠĠĠ ĠassertThat ( result . dc Fund , Ġ` is ` (" Â £ 3 , 2 4 4 . 9 2 ")) ĊĠĠĠĠĠĠĠ ĠassertThat ( result . l ta , Ġ` is ` (" 2 5 . 4 7 % ")) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġcmb P cls Calculation _ input P ension With Dc Fund _ returns Expected Combined P cls Res idual L ta () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠCreate Ġvariables Ġto Ġenter Ġinto Ġcalculation ĊĠĠĠĠĠĠĠ Ġval Ġp ension Ġ= Ġ 2 8 4 2 0 . 7 1 ĊĠĠĠĠĠĠĠ Ġval Ġcf Ġ= Ġ 2 7 . 8 3 ĊĠĠĠĠĠĠĠ Ġval Ġdc Fund Ġ= Ġ 5 2 9 1 7 . 3 4 ĊĠĠĠĠĠĠĠ Ġval Ġs L ta Ġ= Ġ 1 0 7 3 1 0 0 . 0 0 ĊĊĠĠĠĠĠĠĠ Ġ// ĠCall Ġthe Ġfunction ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġsmall C mb P cls Calculation ( pension , Ġcf , Ġs L ta , Ġdc Fund ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠCheck Ġthe Ġresults ĊĠĠĠĠĠĠĠ ĠassertThat ( result . p cls , Ġ` is ` (" Â £ 1 6 3 , 0 8 1 . 5 9 ")) ĊĠĠĠĠĠĠĠ ĠassertThat ( result . residual P ension , Ġ` is ` (" Â £ 2 4 , 4 6 2 . 2 4 ")) ĊĠĠĠĠĠĠĠ ĠassertThat ( result . dc Fund , Ġ` is ` (" Â £ 0 . 0 0 ")) ĊĠĠĠĠĠĠĠ ĠassertThat ( result . l ta , Ġ` is ` (" 6 0 . 7 8 % ")) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġlarge P cls Calculation _ input With Dc EqualTo Max And Dc For An nu ity _ returns Zero For Dc () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠCreate Ġvariables Ġto Ġenter Ġinto Ġcalculation ĊĠĠĠĠĠĠĠ Ġval Ġp ension Ġ= Ġ 3 0 0 0 0 . 0 0 ĊĠĠĠĠĠĠĠ Ġval Ġcf Ġ= Ġ 1 5 . 0 0 ĊĠĠĠĠĠĠĠ Ġval Ġdc Fund Ġ= Ġ 2 0 0 0 0 0 . 0 0 ĊĠĠĠĠĠĠĠ Ġval Ġresidual Dc For An nu ity Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġval Ġs L ta Ġ= Ġ 1 0 7 3 1 0 0 . 0 0 ĊĊĠĠĠĠĠĠĠ Ġ// ĠCall Ġthe Ġfunction ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġlarge C mb P cls Calculation ( pension , Ġcf , Ġresidual Dc For An nu ity , Ġs L ta , Ġdc Fund ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠCheck Ġthe Ġresults ĊĠĠĠĠĠĠĠ ĠassertThat ( result . p cls , Ġ` is ` (" Â £ 2 0 0 , 0 0 0 . 0 0 ")) ĊĠĠĠĠĠĠĠ ĠassertThat ( result . residual P ension , Ġ` is ` (" Â £ 3 0 , 0 0 0 . 0 0 ")) ĊĠĠĠĠĠĠĠ ĠassertThat ( result . dc Fund , Ġ` is ` (" Â £ 0 . 0 0 ")) ĊĠĠĠĠĠĠĠ ĠassertThat ( result . l ta , Ġ` is ` (" 7 4 . 5 4 % ")) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġlarge C mb P cls Calculation _ input With Dc EqualTo Max And Dc For Uf pl s _ returns Zero For Dc () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠCreate Ġvariables Ġto Ġenter Ġinto Ġcalculation ĊĠĠĠĠĠĠĠ Ġval Ġp ension Ġ= Ġ 3 0 0 0 0 . 0 0 ĊĠĠĠĠĠĠĠ Ġval Ġcf Ġ= Ġ 1 5 . 0 0 ĊĠĠĠĠĠĠĠ Ġval Ġdc Fund Ġ= Ġ 2 0 0 0 0 0 . 0 0 ĊĠĠĠĠĠĠĠ Ġval Ġresidual Dc For An nu ity Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġval Ġs L ta Ġ= Ġ 1 0 7 3 1 0 0 . 0 0 ĊĊĠĠĠĠĠĠĠ Ġ// ĠCall Ġthe Ġfunction ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġlarge C mb P cls Calculation ( pension , Ġcf , Ġresidual Dc For An nu ity , Ġs L ta , Ġdc Fund ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠCheck Ġthe Ġresults ĊĠĠĠĠĠĠĠ ĠassertThat ( result . p cls , Ġ` is ` (" Â £ 2 0 0 , 0 0 0 . 0 0 ")) ĊĠĠĠĠĠĠĠ ĠassertThat ( result . residual P ension , Ġ` is ` (" Â £ 3 0 , 0 0 0 . 0 0 ")) ĊĠĠĠĠĠĠĠ ĠassertThat ( result . dc Fund , Ġ` is ` (" Â £ 0 . 0 0 ")) ĊĠĠĠĠĠĠĠ ĠassertThat ( result . l ta , Ġ` is ` (" 7 4 . 5 4 % ")) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġlarge C mb P cls Calculation _ input Large Dc Fund For An nu ity _ returns Expected C mb P cls Res idual Dc L ta () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ// ĠCreate Ġvariables Ġto Ġenter Ġinto Ġcalculation ĊĠĠĠĠĠĠĠ Ġval Ġp ension Ġ= Ġ 1 4 2 3 4 . 0 1 ĊĠĠĠĠĠĠĠ Ġval Ġcf Ġ= Ġ 2 1 . 3 2 ĊĠĠĠĠĠĠĠ Ġval Ġdc Fund Ġ= Ġ 4 2 5 2 3 2 . 4 6 ĊĠĠĠĠĠĠĠ Ġval Ġresidual Dc For An nu ity Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġval Ġs L ta Ġ= Ġ 1 0 7 3 1 0 0 . 0 0 ĊĊĠĠĠĠĠĠĠ Ġ// ĠCall Ġthe Ġfunction ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġlarge C mb P cls Calculation ( pension , Ġcf , Ġresidual Dc For An nu ity , Ġs L ta , Ġdc Fund ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠCheck Ġthe Ġresults ĊĠĠĠĠĠĠĠ ĠassertThat ( result . p cls , Ġ` is ` (" Â £ 1 7 7 , 4 7 8 . 1 7 ")) ĊĠĠĠĠĠĠĠ ĠassertThat ( result . residual P ension , Ġ` is ` (" Â £ 1 4 , 2 3 4 . 0 1 ")) ĊĠĠĠĠĠĠĠ ĠassertThat ( result . dc Fund , Ġ` is ` (" Â £ 2 4 7 , 7 5 4 . 2 9 ")) ĊĠĠĠĠĠĠĠ ĠassertThat ( result . l ta , Ġ` is ` (" 6 6 . 1 3 % ")) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġlarge C mb P cls Calculation _ input Large Dc Fund For Uf pl s _ returns Expected C mb P cls Res idual Dc L ta () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ// ĠCreate Ġvariables Ġto Ġenter Ġinto Ġcalculation ĊĠĠĠĠĠĠĠ Ġval Ġp ension Ġ= Ġ 1 4 2 3 4 . 0 1 ĊĠĠĠĠĠĠĠ Ġval Ġcf Ġ= Ġ 2 1 . 3 2 ĊĠĠĠĠĠĠĠ Ġval Ġdc Fund Ġ= Ġ 4 2 5 2 3 2 . 4 6 ĊĠĠĠĠĠĠĠ Ġval Ġresidual Dc For An nu ity Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġval Ġs L ta Ġ= Ġ 1 0 7 3 1 0 0 . 0 0 ĊĊĠĠĠĠĠĠĠ Ġ// ĠCall Ġthe Ġfunction ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġlarge C mb P cls Calculation ( pension , Ġcf , Ġresidual Dc For An nu ity , Ġs L ta , Ġdc Fund ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠCheck Ġthe Ġresults ĊĠĠĠĠĠĠĠ ĠassertThat ( result . p cls , Ġ` is ` (" Â £ 9 4 , 8 9 3 . 4 0 ")) ĊĠĠĠĠĠĠĠ ĠassertThat ( result . residual P ension , Ġ` is ` (" Â £ 1 4 , 2 3 4 . 0 1 ")) ĊĠĠĠĠĠĠĠ ĠassertThat ( result . dc Fund , Ġ` is ` (" Â £ 3 3 0 , 3 3 9 . 0 6 ")) ĊĠĠĠĠĠĠĠ ĠassertThat ( result . l ta , Ġ` is ` (" 6 6 . 1 4 % ")) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġl ta Calculation _ p cls Res idual No Dc Fund _ returns Expected L ta () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠCreate Ġvariables Ġto Ġenter Ġinto Ġcalculation ĊĠĠĠĠĠĠĠ Ġval Ġp cls Ġ= Ġ 5 0 0 0 . 0 0 ĊĠĠĠĠĠĠĠ Ġval Ġresidual Ġ= Ġ 7 5 0 . 0 0 ĊĠĠĠĠĠĠĠ Ġval Ġs L ta Ġ= Ġ 1 0 7 3 1 0 0 . 0 0 ĊĊĠĠĠĠĠĠĠ Ġ// ĠCall Ġthe Ġfunction ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġl ta Calculation ( p cls , Ġresidual , Ġ 0 . 0 0 , Ġs L ta ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( result , Ġ` is ` (" 1 . 8 5 % ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġl ta Calculation _ no P cls _ returns Expected L ta () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠCreate Ġvariables Ġto Ġenter Ġinto Ġcalculation ĊĠĠĠĠĠĠĠ Ġval Ġfull P ension Ġ= Ġ 1 0 0 0 . 0 0 ĊĠĠĠĠĠĠĠ Ġval Ġs L ta Ġ= Ġ 1 0 7 3 1 0 0 . 0 0 ĊĊĠĠĠĠĠĠĠ Ġ// ĠCall Ġthe Ġfunction ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġl ta Calculation ( 0 . 0 , Ġfull P ension , Ġ 0 . 0 0 , Ġs L ta ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( result , Ġ` is ` (" 1 . 8 6 % ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġdays Calculation _ same Date Used _ returns One () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠCreate Ġvariables Ġto Ġenter Ġinto Ġcalculation ĊĠĠĠĠĠĠĠ Ġval ĠstartDate Ġ= Ġ" 3 1 / 0 5 / 2 0 2 1 " ĊĠĠĠĠĠĠĠ Ġval ĠendDate Ġ= Ġ" 3 1 / 0 5 / 2 0 2 1 " ĊĊĠĠĠĠĠĠĠ Ġ// ĠCall Ġthe Ġfunction ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġdays Calculation ( startDate , ĠendDate ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( result , Ġ` is `( 1 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġdays Calculation _ endDate Before StartDate _ returns Negative Number () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠCreate Ġvariables Ġto Ġenter Ġinto Ġcalculation ĊĠĠĠĠĠĠĠ Ġval ĠstartDate Ġ= Ġ" 3 1 / 0 5 / 2 0 2 1 " ĊĠĠĠĠĠĠĠ Ġval ĠendDate Ġ= Ġ" 3 1 / 0 5 / 2 0 2 0 " ĊĊĠĠĠĠĠĠĠ Ġ// ĠCall Ġthe Ġfunction ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġdays Calculation ( startDate , ĠendDate ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( result , Ġ` is `( less Than ( 0 ))) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġdays Calculation _ startDate After EndDate _ returns Positive Number () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠCreate Ġvariables Ġto Ġenter Ġinto Ġcalculation ĊĠĠĠĠĠĠĠ Ġval ĠstartDate Ġ= Ġ" 3 1 / 0 5 / 2 0 2 1 " ĊĠĠĠĠĠĠĠ Ġval ĠendDate Ġ= Ġ" 3 0 / 0 5 / 2 0 2 2 " ĊĊĠĠĠĠĠĠĠ Ġ// ĠCall Ġthe Ġfunction ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġdays Calculation ( startDate , ĠendDate ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( result , Ġ` is `( 3 6 5 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġdays Calculation _ period Of One Month _ returns All Days In Month () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠCreate Ġvariables Ġto Ġenter Ġinto Ġcalculation ĊĠĠĠĠĠĠĠ Ġval ĠstartDate Ġ= Ġ" 0 1 / 0 5 / 2 0 2 1 " ĊĠĠĠĠĠĠĠ Ġval ĠendDate Ġ= Ġ" 3 1 / 0 5 / 2 0 2 1 " ĊĊĠĠĠĠĠĠĠ Ġ// ĠCall Ġthe Ġfunction ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġdays Calculation ( startDate , ĠendDate ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( result , Ġ` is `( 3 1 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġyears Calculation _ period Of One Year _ returns One Year () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠCreate Ġvariables Ġto Ġenter Ġinto Ġcalculation ĊĠĠĠĠĠĠĠ Ġval ĠstartDate Ġ= Ġ" 0 1 / 0 5 / 2 0 2 1 " ĊĠĠĠĠĠĠĠ Ġval ĠendDate Ġ= Ġ" 3 0 / 0 4 / 2 0 2 2 " ĊĊĠĠĠĠĠĠĠ Ġ// ĠCall Ġthe Ġfunction ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġyears Calculation ( startDate , ĠendDate ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( result , Ġ` is `( 1 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġyears Calculation _ period Of Multiple Years _ returns Se ven () Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠstartDate Ġ= Ġ" 1 5 / 0 9 / 1 9 9 3 " ĊĠĠĠĠĠĠĠ Ġval ĠendDate Ġ= Ġ" 0 4 / 0 5 / 2 0 0 1 " ĊĊĠĠĠĠĠĠĠ Ġ// ĠCall Ġthe Ġfunction ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġyears Calculation ( startDate , ĠendDate ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( result , Ġ` is `( 7 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġyears Calculation _ period LessThan One Year _ returns Zero () Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠstartDate Ġ= Ġ" 1 5 / 0 3 / 2 0 1 1 " ĊĠĠĠĠĠĠĠ Ġval ĠendDate Ġ= Ġ" 1 3 / 0 3 / 2 0 1 2 " ĊĊĠĠĠĠĠĠĠ Ġ// ĠCall Ġthe Ġfunction ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġyears Calculation ( startDate , ĠendDate ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( result , Ġ` is `( 0 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġyears Calculation _ period LessThan One Year Le ap Year _ returns Zero () Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠstartDate Ġ= Ġ" 0 1 / 0 3 / 2 0 1 9 " ĊĠĠĠĠĠĠĠ Ġval ĠendDate Ġ= Ġ" 2 8 / 0 2 / 2 0 2 0 " Ġ// ĠLast Ġday Ġis Ġ 2 9 / 0 2 / 2 0 2 0 . ĊĊĠĠĠĠĠĠĠ Ġ// ĠCall Ġthe Ġfunction ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġyears Calculation ( startDate , ĠendDate ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( result , Ġ` is `( 0 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġmonths Calculation _ period Of One Month _ returns One () Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠstartDate Ġ= Ġ" 0 1 / 0 4 / 2 0 1 4 " ĊĠĠĠĠĠĠĠ Ġval ĠendDate Ġ= Ġ" 3 0 / 0 4 / 2 0 1 4 " ĊĊĠĠĠĠĠĠĠ Ġ// ĠCall Ġthe Ġfunction ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġmonths Calculation ( startDate , ĠendDate ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( result , Ġ` is `( 1 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġmonths Calculation _ period Of Many Months _ returns Se ven () Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠstartDate Ġ= Ġ" 1 3 / 0 7 / 2 0 1 6 " ĊĠĠĠĠĠĠĠ Ġval ĠendDate Ġ= Ġ" 0 2 / 0 3 / 2 0 1 7 " ĊĊĠĠĠĠĠĠĠ Ġ// ĠCall Ġthe Ġfunction ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġmonths Calculation ( startDate , ĠendDate ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( result , Ġ` is `( 7 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġmonths Calculation _ period LessThan One Month _ returns Zero () Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠstartDate Ġ= Ġ" 2 5 / 1 2 / 2 0 1 2 " ĊĠĠĠĠĠĠĠ Ġval ĠendDate Ġ= Ġ" 2 3 / 0 1 / 2 0 1 3 " ĊĊĠĠĠĠĠĠĠ Ġ// ĠCall Ġthe Ġfunction ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġmonths Calculation ( startDate , ĠendDate ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( result , Ġ` is `( 0 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġweeks Calculation _ period OfWeek Month _ returns One () Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠstartDate Ġ= Ġ" 1 7 / 1 1 / 2 0 1 4 " ĊĠĠĠĠĠĠĠ Ġval ĠendDate Ġ= Ġ" 2 5 / 1 1 / 2 0 1 4 " ĊĊĠĠĠĠĠĠĠ Ġ// ĠCall Ġthe Ġfunction ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġweeks Calculation ( startDate , ĠendDate ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( result , Ġ` is `( 1 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġweeks Calculation _ period Of Many Week s _ returns Se ven () Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠstartDate Ġ= Ġ" 1 8 / 0 8 / 1 9 9 3 " ĊĠĠĠĠĠĠĠ Ġval ĠendDate Ġ= Ġ" 0 9 / 1 0 / 1 9 9 3 " ĊĊĠĠĠĠĠĠĠ Ġ// ĠCall Ġthe Ġfunction ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġweeks Calculation ( startDate , ĠendDate ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( result , Ġ` is `( 7 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġweeks Calculation _ period LessThan One Week _ returns Zero () Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠstartDate Ġ= Ġ" 1 8 / 0 3 / 2 0 0 0 " ĊĠĠĠĠĠĠĠ Ġval ĠendDate Ġ= Ġ" 2 2 / 0 3 / 2 0 0 0 " ĊĊĠĠĠĠĠĠĠ Ġ// ĠCall Ġthe Ġfunction ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġweeks Calculation ( startDate , ĠendDate ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( result , Ġ` is `( 0 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġyears And Months Calculation _ period LessThan One Year _ returns Zero Years Se ven Months () Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠstartDate Ġ= Ġ" 1 3 / 0 7 / 2 0 1 6 " ĊĠĠĠĠĠĠĠ Ġval ĠendDate Ġ= Ġ" 0 2 / 0 3 / 2 0 1 7 " ĊĊĠĠĠĠĠĠĠ Ġ// ĠCall Ġthe Ġfunction ĊĠĠĠĠĠĠĠ Ġval Ġ( years , Ġmonths ) Ġ= Ġyears And Months Calculation ( startDate , ĠendDate ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( years , Ġ` is `( 0 )) ĊĠĠĠĠĠĠĠ ĠassertThat ( months , Ġ` is `( 7 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġyears And Months Calculation _ period Exactly One Year No Months _ returns One Year Zero Months () Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠstartDate Ġ= Ġ" 1 2 / 1 2 / 2 0 1 2 " ĊĠĠĠĠĠĠĠ Ġval ĠendDate Ġ= Ġ" 1 1 / 1 2 / 2 0 1 3 " ĊĊĠĠĠĠĠĠĠ Ġ// ĠCall Ġthe Ġfunction ĊĠĠĠĠĠĠĠ Ġval Ġ( years , Ġmonths ) Ġ= Ġyears And Months Calculation ( startDate , ĠendDate ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( years , Ġ` is `( 1 )) ĊĠĠĠĠĠĠĠ ĠassertThat ( months , Ġ` is `( 0 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġyears And Months Calculation _ period One Year Exactly One Month _ returns One Year One Months () Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠstartDate Ġ= Ġ" 1 2 / 1 2 / 2 0 1 2 " ĊĠĠĠĠĠĠĠ Ġval ĠendDate Ġ= Ġ" 1 1 / 0 1 / 2 0 1 4 " ĊĊĠĠĠĠĠĠĠ Ġ// ĠCall Ġthe Ġfunction ĊĠĠĠĠĠĠĠ Ġval Ġ( years , Ġmonths ) Ġ= Ġyears And Months Calculation ( startDate , ĠendDate ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( years , Ġ` is `( 1 )) ĊĠĠĠĠĠĠĠ ĠassertThat ( months , Ġ` is `( 1 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġyears And Months Calculation _ period Man ys Years Many Months _ returns Fort y Two Years Se ven Months () Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠstartDate Ġ= Ġ" 0 4 / 0 2 / 1 9 4 2 " ĊĠĠĠĠĠĠĠ Ġval ĠendDate Ġ= Ġ" 1 7 / 0 9 / 1 9 8 4 " ĊĊĠĠĠĠĠĠĠ Ġ// ĠCall Ġthe Ġfunction ĊĠĠĠĠĠĠĠ Ġval Ġ( years , Ġmonths ) Ġ= Ġyears And Months Calculation ( startDate , ĠendDate ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( years , Ġ` is `( 4 2 )) ĊĠĠĠĠĠĠĠ ĠassertThat ( months , Ġ` is `( 7 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġyears And Days Calculation _ period LessThan One Years _ returns Zero Years Many Days () Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠstartDate Ġ= Ġ" 2 0 / 0 6 / 1 9 8 3 " ĊĠĠĠĠĠĠĠ Ġval ĠendDate Ġ= Ġ" 0 4 / 1 2 / 1 9 8 3 " ĊĊĠĠĠĠĠĠĠ Ġ// ĠCall Ġthe Ġfunction ĊĠĠĠĠĠĠĠ Ġval Ġ( years , Ġdays ) Ġ= Ġyears And Days Calculation ( startDate , ĠendDate ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( years , Ġ` is `( 0 )) ĊĠĠĠĠĠĠĠ ĠassertThat ( days , Ġ` is `( 1 6 8 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġyears And Days Calculation _ period Exactly One Year _ returns One Year Zero Days () Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠstartDate Ġ= Ġ" 1 5 / 0 8 / 2 0 0 7 " ĊĠĠĠĠĠĠĠ Ġval ĠendDate Ġ= Ġ" 1 4 / 0 8 / 2 0 0 8 " ĊĊĠĠĠĠĠĠĠ Ġ// ĠCall Ġthe Ġfunction ĊĠĠĠĠĠĠĠ Ġval Ġ( years , Ġdays ) Ġ= Ġyears And Days Calculation ( startDate , ĠendDate ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( years , Ġ` is `( 1 )) ĊĠĠĠĠĠĠĠ ĠassertThat ( days , Ġ` is `( 0 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġyears And Days Calculation _ period Exactly One Year One Day _ returns One Year One Day () Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠstartDate Ġ= Ġ" 1 5 / 0 8 / 2 0 0 7 " ĊĠĠĠĠĠĠĠ Ġval ĠendDate Ġ= Ġ" 1 5 / 0 8 / 2 0 0 8 " ĊĊĠĠĠĠĠĠĠ Ġ// ĠCall Ġthe Ġfunction ĊĠĠĠĠĠĠĠ Ġval Ġ( years , Ġdays ) Ġ= Ġyears And Days Calculation ( startDate , ĠendDate ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( years , Ġ` is `( 1 )) ĊĠĠĠĠĠĠĠ ĠassertThat ( days , Ġ` is `( 1 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġyears And Days Calculation _ period Many Years Many Days _ returns Se ven Years Se vent y Se ven Days () Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠstartDate Ġ= Ġ" 1 9 / 0 4 / 2 0 1 4 " ĊĠĠĠĠĠĠĠ Ġval ĠendDate Ġ= Ġ" 0 4 / 0 7 / 2 0 2 1 " ĊĊĠĠĠĠĠĠĠ Ġ// ĠCall Ġthe Ġfunction ĊĠĠĠĠĠĠĠ Ġval Ġ( years , Ġdays ) Ġ= Ġyears And Days Calculation ( startDate , ĠendDate ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( years , Ġ` is `( 7 )) ĊĠĠĠĠĠĠĠ ĠassertThat ( days , Ġ` is `( 7 7 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtax Years Calculation _ period Exactly One Tax Year _ returns One Tax Year () Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠstartDate Ġ= Ġ" 0 6 / 0 4 / 2 0 2 1 " ĊĠĠĠĠĠĠĠ Ġval ĠendDate Ġ= Ġ" 0 5 / 0 4 / 2 0 2 2 " ĊĊĠĠĠĠĠĠĠ Ġ// ĠCall Ġthe Ġfunction ĊĠĠĠĠĠĠĠ Ġval Ġtax Years Ġ= Ġtax Years Calculation ( startDate , ĠendDate ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( tax Years , Ġ` is `( 1 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtax Years Calculation _ period LessThan One Tax Year _ returns Zero Tax Years () Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠstartDate Ġ= Ġ" 0 6 / 0 6 / 2 0 2 1 " ĊĠĠĠĠĠĠĠ Ġval ĠendDate Ġ= Ġ" 0 3 / 0 3 / 2 0 2 2 " ĊĊĠĠĠĠĠĠĠ Ġ// ĠCall Ġthe Ġfunction ĊĠĠĠĠĠĠĠ Ġval Ġtax Years Ġ= Ġtax Years Calculation ( startDate , ĠendDate ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( tax Years , Ġ` is `( 0 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtax Years Calculation _ period Many Years _ returns Se ven Tax Years () Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠstartDate Ġ= Ġ" 2 7 / 0 1 / 2 0 1 3 " ĊĠĠĠĠĠĠĠ Ġval ĠendDate Ġ= Ġ" 1 9 / 0 9 / 2 0 2 0 " ĊĊĠĠĠĠĠĠĠ Ġ// ĠCall Ġthe Ġfunction ĊĠĠĠĠĠĠĠ Ġval Ġtax Years Ġ= Ġtax Years Calculation ( startDate , ĠendDate ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( tax Years , Ġ` is `( 7 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtax Years Calculation _ one Year After One Year Before Tax Year End _ returns Ten () Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠstartDate Ġ= Ġ" 0 3 / 1 1 / 1 9 9 4 " ĊĠĠĠĠĠĠĠ Ġval ĠendDate Ġ= Ġ" 1 1 / 0 3 / 2 0 0 6 " ĊĊĠĠĠĠĠĠĠ Ġ// ĠCall Ġthe Ġfunction ĊĠĠĠĠĠĠĠ Ġval Ġtax Years Ġ= Ġtax Years Calculation ( startDate , ĠendDate ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( tax Years , Ġ` is `( 1 0 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġsix th Apr ils Pass Calculation _ less Than One Tax Year Pass Six th April _ returns One () Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠstartDate Ġ= Ġ" 0 3 / 1 1 / 1 9 9 4 " ĊĠĠĠĠĠĠĠ Ġval ĠendDate Ġ= Ġ" 1 1 / 0 4 / 1 9 9 5 " ĊĊĠĠĠĠĠĠĠ Ġ// ĠCall Ġthe Ġfunction ĊĠĠĠĠĠĠĠ Ġval Ġapr ils Passed Ġ= Ġsix th Apr ils Pass Calculation ( startDate , ĠendDate ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( apr ils Passed , Ġ` is `( 1 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġsix th Apr ils Pass Calculation _ period Exactly One Day Six th April _ returns One () Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠstartDate Ġ= Ġ" 0 6 / 0 4 / 1 9 9 4 " ĊĠĠĠĠĠĠĠ Ġval ĠendDate Ġ= Ġ" 0 6 / 0 4 / 1 9 9 4 " ĊĊĠĠĠĠĠĠĠ Ġ// ĠCall Ġthe Ġfunction ĊĠĠĠĠĠĠĠ Ġval Ġapr ils Passed Ġ= Ġsix th Apr ils Pass Calculation ( startDate , ĠendDate ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( apr ils Passed , Ġ` is `( 1 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġsix th Apr ils Pass Calculation _ period Exactly One Tax Year _ returns One () Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠstartDate Ġ= Ġ" 0 6 / 0 4 / 1 9 9 4 " ĊĠĠĠĠĠĠĠ Ġval ĠendDate Ġ= Ġ" 0 5 / 0 4 / 1 9 9 5 " ĊĊĠĠĠĠĠĠĠ Ġ// ĠCall Ġthe Ġfunction ĊĠĠĠĠĠĠĠ Ġval Ġapr ils Passed Ġ= Ġsix th Apr ils Pass Calculation ( startDate , ĠendDate ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( apr ils Passed , Ġ` is `( 1 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġsix th Apr ils Pass Calculation _ period One Tax Year One Day _ returns Two () Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠstartDate Ġ= Ġ" 0 6 / 0 4 / 1 9 9 4 " ĊĠĠĠĠĠĠĠ Ġval ĠendDate Ġ= Ġ" 0 6 / 0 4 / 1 9 9 5 " ĊĊĠĠĠĠĠĠĠ Ġ// ĠCall Ġthe Ġfunction ĊĠĠĠĠĠĠĠ Ġval Ġapr ils Passed Ġ= Ġsix th Apr ils Pass Calculation ( startDate , ĠendDate ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( apr ils Passed , Ġ` is `( 2 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġsix th Apr ils Pass Calculation _ period Many Years _ returns Se ven () Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠstartDate Ġ= Ġ" 0 5 / 0 4 / 1 9 9 4 " ĊĠĠĠĠĠĠĠ Ġval ĠendDate Ġ= Ġ" 0 9 / 0 9 / 2 0 0 0 " ĊĊĠĠĠĠĠĠĠ Ġ// ĠCall Ġthe Ġfunction ĊĠĠĠĠĠĠĠ Ġval Ġapr ils Passed Ġ= Ġsix th Apr ils Pass Calculation ( startDate , ĠendDate ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( apr ils Passed , Ġ` is `( 7 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġfixed G mp Calculation _ pass Six th April But Test Full Tax Years _ returns 1 point 0 () Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠstartDate Ġ= Ġ" 0 5 / 0 3 / 2 0 2 1 " ĊĠĠĠĠĠĠĠ Ġval ĠendDate Ġ= Ġ" 0 7 / 0 8 / 2 0 2 1 " ĊĊĠĠĠĠĠĠĠ Ġ// ĠCall Ġthe Ġfunction ĊĠĠĠĠĠĠĠ Ġval Ġg mp Re valu ation Ġ= Ġg mp Re valu ation Calculation ( startDate , ĠendDate , Ġtrue ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( g mp Re valu ation , Ġ` is `( 1 . 0 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġfixed G mp Calculation _ pass Six th April And Test Six th Apr ils _ returns 1 point 0 3 5 () Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠstartDate Ġ= Ġ" 0 5 / 0 3 / 2 0 2 1 " ĊĠĠĠĠĠĠĠ Ġval ĠendDate Ġ= Ġ" 0 7 / 0 8 / 2 0 2 1 " ĊĊĠĠĠĠĠĠĠ Ġ// ĠCall Ġthe Ġfunction ĊĠĠĠĠĠĠĠ Ġval Ġg mp Re valu ation Ġ= Ġg mp Re valu ation Calculation ( startDate , ĠendDate , Ġfalse ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( g mp Re valu ation , Ġ` is `( 1 . 0 3 5 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġfixed G mp Calculation _ 5 April 1 9 8 8 to 7 Aug ust 2 0 2 1 _ returns 1 point 0 3 5 () Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠstartDate Ġ= Ġ" 0 5 / 0 4 / 1 9 8 8 " ĊĠĠĠĠĠĠĠ Ġval ĠendDate Ġ= Ġ" 0 7 / 0 8 / 2 0 2 1 " ĊĊĠĠĠĠĠĠĠ Ġ// ĠCall Ġthe Ġfunction ĊĠĠĠĠĠĠĠ Ġval Ġg mp Re valu ation Ġ= Ġg mp Re valu ation Calculation ( startDate , ĠendDate , Ġtrue ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( g mp Re valu ation , Ġ` is `( 1 4 . 7 6 3 2 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġfixed G mp Calculation _ one Tax Year Between 1 9 8 8 and 1 9 9 3 _ returns 1 point 0 7 5 () Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠstartDate Ġ= Ġ" 0 6 / 0 4 / 1 9 8 8 " ĊĠĠĠĠĠĠĠ Ġval ĠendDate Ġ= Ġ" 0 6 / 0 4 / 1 9 8 9 " ĊĊĠĠĠĠĠĠĠ Ġ// ĠCall Ġthe Ġfunction ĊĠĠĠĠĠĠĠ Ġval Ġg mp Re valu ation Ġ= Ġg mp Re valu ation Calculation ( startDate , ĠendDate , Ġtrue ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( g mp Re valu ation , Ġ` is `( 1 . 0 7 5 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġfixed G mp Calculation _ one Tax Year Between 1 9 9 3 and 1 9 9 7 _ returns 1 point 0 7 () Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠstartDate Ġ= Ġ" 0 6 / 0 4 / 1 9 9 5 " ĊĠĠĠĠĠĠĠ Ġval ĠendDate Ġ= Ġ" 0 6 / 0 4 / 1 9 9 6 " ĊĊĠĠĠĠĠĠĠ Ġ// ĠCall Ġthe Ġfunction ĊĠĠĠĠĠĠĠ Ġval Ġg mp Re valu ation Ġ= Ġg mp Re valu ation Calculation ( startDate , ĠendDate , Ġtrue ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( g mp Re valu ation , Ġ` is `( 1 . 0 7 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġfixed G mp Calculation _ one Tax Year Between 1 9 9 7 and 2 0 0 2 _ returns 1 point 0 6 2 5 () Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠstartDate Ġ= Ġ" 0 6 / 0 4 / 2 0 0 0 " ĊĠĠĠĠĠĠĠ Ġval ĠendDate Ġ= Ġ" 0 6 / 0 4 / 2 0 0 1 " ĊĊĠĠĠĠĠĠĠ Ġ// ĠCall Ġthe Ġfunction ĊĠĠĠĠĠĠĠ Ġval Ġg mp Re valu ation Ġ= Ġg mp Re valu ation Calculation ( startDate , ĠendDate , Ġtrue ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( g mp Re valu ation , Ġ` is `( 1 . 0 6 2 5 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġfixed G mp Calculation _ one Tax Year Between 2 0 0 2 and 2 0 0 7 _ returns 1 point 0 4 5 () Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠstartDate Ġ= Ġ" 0 6 / 0 4 / 2 0 0 4 " ĊĠĠĠĠĠĠĠ Ġval ĠendDate Ġ= Ġ" 0 6 / 0 4 / 2 0 0 5 " ĊĊĠĠĠĠĠĠĠ Ġ// ĠCall Ġthe Ġfunction ĊĠĠĠĠĠĠĠ Ġval Ġg mp Re valu ation Ġ= Ġg mp Re valu ation Calculation ( startDate , ĠendDate , Ġtrue ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( g mp Re valu ation , Ġ` is `( 1 . 0 4 5 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġfixed G mp Calculation _ one Tax Year Between 2 0 0 7 and 2 0 1 2 _ returns 1 point 0 4 () Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠstartDate Ġ= Ġ" 0 6 / 0 4 / 2 0 0 7 " ĊĠĠĠĠĠĠĠ Ġval ĠendDate Ġ= Ġ" 0 6 / 0 4 / 2 0 0 8 " ĊĊĠĠĠĠĠĠĠ Ġ// ĠCall Ġthe Ġfunction ĊĠĠĠĠĠĠĠ Ġval Ġg mp Re valu ation Ġ= Ġg mp Re valu ation Calculation ( startDate , ĠendDate , Ġtrue ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( g mp Re valu ation , Ġ` is `( 1 . 0 4 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġfixed G mp Calculation _ one Tax Year Between 2 0 1 2 and 2 0 1 7 _ returns 1 point 0 4 7 5 () Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠstartDate Ġ= Ġ" 0 6 / 0 4 / 2 0 1 5 " ĊĠĠĠĠĠĠĠ Ġval ĠendDate Ġ= Ġ" 0 6 / 0 4 / 2 0 1 6 " ĊĊĠĠĠĠĠĠĠ Ġ// ĠCall Ġthe Ġfunction ĊĠĠĠĠĠĠĠ Ġval Ġg mp Re valu ation Ġ= Ġg mp Re valu ation Calculation ( startDate , ĠendDate , Ġtrue ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( g mp Re valu ation , Ġ` is `( 1 . 0 4 7 5 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġcheck Re val Dates _ startDate Before No Re val Date _ returns Dummy Date () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠNote : Ġany Ġstart Ġdate Ġprior Ġto Ġ 0 1 / 0 1 / 1 9 8 6 Ġshould Ġmean Ġno Ġre valu ation Ġis Ġapplied ĊĠĠĠĠĠĠĠ Ġval ĠstartDate Ġ= Ġ" 3 1 / 1 2 / 1 9 8 5 " ĊĊĠĠĠĠĠĠĠ Ġval Ġcheck String Ġ= Ġcheck Re val Dates ( startDate , Ġ 2 . 5 ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( check String , Ġ` is ` (" 0 1 / 0 1 / 1 9 0 0 ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġcheck Re val Dates _ startDate Before 2 0 0 9 But Cap 5 _ returns StartDate () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠNote : Ġany Ġstart Ġdate Ġprior Ġto Ġ 0 1 / 0 1 / 1 9 8 6 Ġshould Ġmean Ġno Ġre valu ation Ġis Ġapplied ĊĠĠĠĠĠĠĠ Ġval ĠstartDate Ġ= Ġ" 0 1 / 0 1 / 2 0 0 5 " ĊĠĠĠĠĠĠĠ Ġval Ġcap Ġ= Ġ 5 ĊĊĠĠĠĠĠĠĠ Ġval Ġcheck String Ġ= Ġcheck Re val Dates ( startDate , Ġ 5 . 0 ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( check String , Ġ` is ` (" 0 1 / 0 1 / 2 0 0 5 ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġcheck Re val Dates _ startDate Before 2 0 0 9 But Cap 2 point 5 _ returns 2 0 0 9 Date () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠNote : Ġany Ġstart Ġdate Ġprior Ġto Ġ 0 1 / 0 1 / 1 9 8 6 Ġshould Ġmean Ġno Ġre valu ation Ġis Ġapplied ĊĠĠĠĠĠĠĠ Ġval ĠstartDate Ġ= Ġ" 0 1 / 0 1 / 2 0 0 5 " ĊĠĠĠĠĠĠĠ Ġval Ġcap Ġ= Ġ 5 ĊĊĠĠĠĠĠĠĠ Ġval Ġcheck String Ġ= Ġcheck Re val Dates ( startDate , Ġ 2 . 5 ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( check String , Ġ` is ` (" 0 6 / 0 4 / 2 0 0 9 ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġcheck Re val Dates _ startDate After 2 0 0 9 But Cap 2 point 5 _ returns StartDate () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠNote : Ġany Ġstart Ġdate Ġprior Ġto Ġ 0 1 / 0 1 / 1 9 8 6 Ġshould Ġmean Ġno Ġre valu ation Ġis Ġapplied ĊĠĠĠĠĠĠĠ Ġval ĠstartDate Ġ= Ġ" 0 1 / 0 1 / 2 0 1 5 " ĊĠĠĠĠĠĠĠ Ġval Ġcap Ġ= Ġ 5 ĊĊĠĠĠĠĠĠĠ Ġval Ġcheck String Ġ= Ġcheck Re val Dates ( startDate , Ġ 2 . 5 ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( check String , Ġ` is ` (" 0 1 / 0 1 / 2 0 1 5 ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġr pi Rev List Ġ= Ġmutable ListOf < R pi Percentage > Ġ( ĊĠĠĠĠĠĠĠ ĠR pi Percentage ("", Ġ" 3 . 9 %", Ġ"", Ġ" 2 0 0 7 ", Ġ"", Ġ"", Ġ"", Ġ""), ĊĠĠĠĠĠĠĠ ĠR pi Percentage ("", Ġ" 5 . 0 %", Ġ"", Ġ" 2 0 0 8 ", Ġ"", Ġ"", Ġ"", Ġ""), ĊĠĠĠĠĠĠĠ ĠR pi Percentage ("", Ġ"- 1 . 4 %", Ġ"", Ġ" 2 0 0 9 ", Ġ"", Ġ"", Ġ"", Ġ""), ĊĠĠĠĠĠĠĠ ĠR pi Percentage ("", Ġ" 4 . 6 %", Ġ"", Ġ" 2 0 1 0 ", Ġ"", Ġ"", Ġ"", Ġ""), ĊĠĠĠĠĠĠĠ ĠR pi Percentage ("", Ġ" 5 . 6 %", Ġ"", Ġ" 2 0 1 1 ", Ġ"", Ġ"", Ġ"", Ġ""), ĊĠĠĠĠĠĠĠ ĠR pi Percentage ("", Ġ" 2 . 6 %", Ġ"", Ġ" 2 0 1 2 ", Ġ"", Ġ"", Ġ"", Ġ""), ĊĠĠĠĠĠĠĠ ĠR pi Percentage ("", Ġ" 3 . 2 %", Ġ"", Ġ" 2 0 1 3 ", Ġ"", Ġ"", Ġ"", Ġ""), ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġval Ġc pi Rev List Ġ= Ġmutable ListOf < C pi Percentage > Ġ( ĊĠĠĠĠĠĠĠ ĠC pi Percentage ("", Ġ" 1 . 8 %", Ġ"", Ġ" 2 0 0 7 ", Ġ"", Ġ"", Ġ"", Ġ""), ĊĠĠĠĠĠĠĠ ĠC pi Percentage ("", Ġ" 5 . 2 %", Ġ"", Ġ" 2 0 0 8 ", Ġ"", Ġ"", Ġ"", Ġ""), ĊĠĠĠĠĠĠĠ ĠC pi Percentage ("", Ġ" 1 . 1 %", Ġ"", Ġ" 2 0 0 9 ", Ġ"", Ġ"", Ġ"", Ġ""), ĊĠĠĠĠĠĠĠ ĠC pi Percentage ("", Ġ" 3 . 1 %", Ġ"", Ġ" 2 0 1 0 ", Ġ"", Ġ"", Ġ"", Ġ""), ĊĠĠĠĠĠĠĠ ĠC pi Percentage ("", Ġ" 5 . 2 %", Ġ"", Ġ" 2 0 1 1 ", Ġ"", Ġ"", Ġ"", Ġ""), ĊĠĠĠĠĠĠĠ ĠC pi Percentage ("", Ġ" 2 . 2 %", Ġ"", Ġ" 2 0 1 2 ", Ġ"", Ġ"", Ġ"", Ġ""), ĊĠĠĠĠĠĠĠ ĠC pi Percentage ("", Ġ" 2 . 7 %", Ġ"", Ġ" 2 0 1 3 ", Ġ"", Ġ"", Ġ"", Ġ""), ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġre valu ation Calculation _ no Future Re valu ation _ return Minus One () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠNote : Ġthe Ġlatest Ġyear Ġwe Ġshould Ġhave Ġis Ġfor Ġ 2 0 1 4 . ĊĠĠĠĠĠĠĠ Ġval ĠstartDate Ġ= Ġ" 0 6 / 0 4 / 2 0 1 2 " ĊĠĠĠĠĠĠĠ Ġval ĠendDate Ġ= Ġ" 0 6 / 0 4 / 2 0 1 5 " ĊĠĠĠĠĠĠĠ Ġval Ġcap Ġ= Ġ 5 . 0 ĊĊĠĠĠĠĠĠĠ Ġ// ĠTest Ġthe Ġfunction Ġin Ġquestion ĊĠĠĠĠĠĠĠ Ġval Ġcalc Result Ġ= Ġre valu ation Calculation ( startDate , ĠendDate , Ġc pi Rev List , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġr pi Rev List , Ġcap , Ġtrue ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( calc Result , Ġ` is ` (- 1 . 0 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġre valu ation Calculation _ minus R pi For Year _ return One () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠNote : Ġthe Ġlatest Ġyear Ġwe Ġshould Ġhave Ġis Ġfor Ġ 2 0 1 4 . ĊĠĠĠĠĠĠĠ Ġval ĠstartDate Ġ= Ġ" 0 6 / 0 4 / 2 0 0 9 " ĊĠĠĠĠĠĠĠ Ġval ĠendDate Ġ= Ġ" 0 6 / 0 4 / 2 0 1 0 " ĊĠĠĠĠĠĠĠ Ġval Ġcap Ġ= Ġ 5 . 0 ĊĊĠĠĠĠĠĠĠ Ġ// ĠTest Ġthe Ġfunction Ġin Ġquestion ĊĠĠĠĠĠĠĠ Ġval Ġcalc Result Ġ= Ġre valu ation Calculation ( startDate , ĠendDate , Ġc pi Rev List , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġr pi Rev List , Ġcap , Ġtrue ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( calc Result , Ġ` is `( 1 . 0 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġre valu ation Calculation _ r pi Cap 5 Re valu ation Over Available Period _ return Correct Rate () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠNote : Ġthe Ġlatest Ġyear Ġwe Ġshould Ġhave Ġis Ġfor Ġ 2 0 1 4 . ĊĠĠĠĠĠĠĠ Ġval ĠstartDate Ġ= Ġ" 0 6 / 0 4 / 2 0 0 8 " ĊĠĠĠĠĠĠĠ Ġval ĠendDate Ġ= Ġ" 0 6 / 0 4 / 2 0 1 4 " ĊĠĠĠĠĠĠĠ Ġval Ġcap Ġ= Ġ 5 . 0 ĊĊĠĠĠĠĠĠĠ Ġ// ĠTest Ġthe Ġfunction Ġin Ġquestion ĊĠĠĠĠĠĠĠ Ġval Ġcalc Result Ġ= Ġre valu ation Calculation ( startDate , ĠendDate , Ġc pi Rev List , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġr pi Rev List , Ġcap , Ġtrue ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( calc Result , Ġ` is `( 1 . 2 1 1 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġre valu ation Calculation _ r pi Cap 2 point 5 Re valu ation Over Available Period _ return Correct Rate () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠNote : Ġthe Ġlatest Ġyear Ġwe Ġshould Ġhave Ġis Ġfor Ġ 2 0 1 4 . ĊĠĠĠĠĠĠĠ Ġval ĠstartDate Ġ= Ġ" 0 6 / 0 4 / 2 0 0 8 " ĊĠĠĠĠĠĠĠ Ġval ĠendDate Ġ= Ġ" 0 6 / 0 4 / 2 0 1 4 " ĊĠĠĠĠĠĠĠ Ġval Ġcap Ġ= Ġ 2 . 5 ĊĊĠĠĠĠĠĠĠ Ġ// ĠTest Ġthe Ġfunction Ġin Ġquestion ĊĠĠĠĠĠĠĠ Ġval Ġcalc Result Ġ= Ġre valu ation Calculation ( startDate , ĠendDate , Ġc pi Rev List , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġr pi Rev List , Ġcap , Ġtrue ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( calc Result , Ġ` is `( 1 . 1 3 1 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġre valu ation Calculation _ c pi Cap 5 Re valu ation Over Available Period _ return Correct Rate () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠNote : Ġthe Ġlatest Ġyear Ġwe Ġshould Ġhave Ġis Ġfor Ġ 2 0 1 4 . ĊĠĠĠĠĠĠĠ Ġval ĠstartDate Ġ= Ġ" 0 6 / 0 4 / 2 0 0 8 " ĊĠĠĠĠĠĠĠ Ġval ĠendDate Ġ= Ġ" 0 6 / 0 4 / 2 0 1 4 " ĊĠĠĠĠĠĠĠ Ġval Ġcap Ġ= Ġ 5 . 0 ĊĊĠĠĠĠĠĠĠ Ġ// ĠTest Ġthe Ġfunction Ġin Ġquestion ĊĠĠĠĠĠĠĠ Ġval Ġcalc Result Ġ= Ġre valu ation Calculation ( startDate , ĠendDate , Ġc pi Rev List , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġr pi Rev List , Ġcap , Ġfalse ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( calc Result , Ġ` is `( 1 . 1 7 9 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġre valu ation Calculation _ c pi Cap 2 point 5 Re valu ation Over Available Period _ return Correct Rate () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠNote : Ġthe Ġlatest Ġyear Ġwe Ġshould Ġhave Ġis Ġfor Ġ 2 0 1 4 . ĊĠĠĠĠĠĠĠ Ġval ĠstartDate Ġ= Ġ" 0 6 / 0 4 / 2 0 0 8 " ĊĠĠĠĠĠĠĠ Ġval ĠendDate Ġ= Ġ" 0 6 / 0 4 / 2 0 1 4 " ĊĠĠĠĠĠĠĠ Ġval Ġcap Ġ= Ġ 2 . 5 ĊĊĠĠĠĠĠĠĠ Ġ// ĠTest Ġthe Ġfunction Ġin Ġquestion ĊĠĠĠĠĠĠĠ Ġval Ġcalc Result Ġ= Ġre valu ation Calculation ( startDate , ĠendDate , Ġc pi Rev List , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġr pi Rev List , Ġcap , Ġfalse ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( calc Result , Ġ` is `( 1 . 1 2 2 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġre valu ation Calculation _ pre 1 9 8 6 StartDate _ return One () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ// ĠNeed Ġsmall Ġlists Ġwith Ġpre Ġ 1 9 8 6 Ġdates . ĊĠĠĠĠĠĠĠ Ġval Ġr pi Rev List Ġ= Ġmutable ListOf < R pi Percentage > Ġ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR pi Percentage ("", Ġ"", Ġ"", Ġ" 1 9 8 0 ", Ġ"", Ġ"", Ġ"", Ġ""), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR pi Percentage ("", Ġ"", Ġ"", Ġ" 1 9 8 1 ", Ġ"", Ġ"", Ġ"", Ġ""), ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġc pi Rev List Ġ= Ġmutable ListOf < C pi Percentage > Ġ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠC pi Percentage ("", Ġ"", Ġ"", Ġ" 1 9 8 0 ", Ġ"", Ġ"", Ġ"", Ġ""), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠC pi Percentage ("", Ġ"", Ġ"", Ġ" 1 9 8 1 ", Ġ"", Ġ"", Ġ"", Ġ""), ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval ĠstartDate Ġ= Ġ" 0 6 / 0 4 / 1 9 8 1 " ĊĠĠĠĠĠĠĠ Ġval ĠendDate Ġ= Ġ" 0 6 / 0 4 / 1 9 8 2 " ĊĠĠĠĠĠĠĠ Ġval Ġcap Ġ= Ġ 5 . 0 ĊĊĠĠĠĠĠĠĠ Ġ// ĠTest Ġthe Ġfunction Ġin Ġquestion ĊĠĠĠĠĠĠĠ Ġval Ġcalc Result Ġ= Ġre valu ation Calculation ( startDate , ĠendDate , Ġc pi Rev List , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġr pi Rev List , Ġcap , Ġtrue ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( calc Result , Ġ` is `( 1 . 0 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġre valu ation Calculation _ r pi 1 9 8 6 Year _ return Converted Figure 3 point 1 () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠNeed Ġsmall Ġlists Ġwith Ġpre Ġ 1 9 8 6 Ġdates . ĊĠĠĠĠĠĠĠ Ġval Ġr pi Rev List Ġ= Ġmutable ListOf < R pi Percentage > Ġ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR pi Percentage ("", Ġ" 1 . 0 ", Ġ"", Ġ" 1 9 8 6 ", Ġ"", Ġ"", Ġ"", Ġ""), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR pi Percentage ("", Ġ" 1 . 0 ", Ġ"", Ġ" 1 9 8 7 ", Ġ"", Ġ"", Ġ"", Ġ""), ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġc pi Rev List Ġ= Ġmutable ListOf < C pi Percentage > Ġ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠC pi Percentage ("", Ġ" 1 . 0 ", Ġ"", Ġ" 1 9 8 6 ", Ġ"", Ġ"", Ġ"", Ġ""), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠC pi Percentage ("", Ġ" 1 . 0 ", Ġ"", Ġ" 1 9 8 7 ", Ġ"", Ġ"", Ġ"", Ġ""), ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval ĠstartDate Ġ= Ġ" 0 6 / 0 4 / 1 9 8 6 " ĊĠĠĠĠĠĠĠ Ġval ĠendDate Ġ= Ġ" 0 6 / 0 4 / 1 9 8 7 " ĊĠĠĠĠĠĠĠ Ġval Ġcap Ġ= Ġ 5 . 0 ĊĊĠĠĠĠĠĠĠ Ġ// ĠTest Ġthe Ġfunction Ġin Ġquestion ĊĠĠĠĠĠĠĠ Ġval Ġcalc Result Ġ= Ġre valu ation Calculation ( startDate , ĠendDate , Ġc pi Rev List , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġr pi Rev List , Ġcap , Ġtrue ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( calc Result , Ġ` is `( 1 . 0 3 1 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġre valu ation Calculation _ r pi 1 9 8 8 Year _ return Converted Figure C apped At 5 () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠNeed Ġsmall Ġlists Ġwith Ġpre Ġ 1 9 8 6 Ġdates . ĊĠĠĠĠĠĠĠ Ġval Ġr pi Rev List Ġ= Ġmutable ListOf < R pi Percentage > Ġ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR pi Percentage ("", Ġ" 1 . 0 ", Ġ"", Ġ" 1 9 8 8 ", Ġ"", Ġ"", Ġ"", Ġ""), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR pi Percentage ("", Ġ" 1 . 0 ", Ġ"", Ġ" 1 9 8 9 ", Ġ"", Ġ"", Ġ"", Ġ""), ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġc pi Rev List Ġ= Ġmutable ListOf < C pi Percentage > Ġ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠC pi Percentage ("", Ġ" 1 . 0 ", Ġ"", Ġ" 1 9 8 8 ", Ġ"", Ġ"", Ġ"", Ġ""), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠC pi Percentage ("", Ġ" 1 . 0 ", Ġ"", Ġ" 1 9 8 9 ", Ġ"", Ġ"", Ġ"", Ġ""), ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval ĠstartDate Ġ= Ġ" 0 6 / 0 4 / 1 9 8 8 " ĊĠĠĠĠĠĠĠ Ġval ĠendDate Ġ= Ġ" 0 6 / 0 4 / 1 9 8 9 " ĊĠĠĠĠĠĠĠ Ġval Ġcap Ġ= Ġ 5 . 0 ĊĊĠĠĠĠĠĠĠ Ġ// ĠTest Ġthe Ġfunction Ġin Ġquestion ĊĠĠĠĠĠĠĠ Ġval Ġcalc Result Ġ= Ġre valu ation Calculation ( startDate , ĠendDate , Ġc pi Rev List , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġr pi Rev List , Ġcap , Ġtrue ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( calc Result , Ġ` is `( 1 . 0 5 )) ĊĠĠĠ Ġ} Ċ Ċ }