/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 ĠH M ĠRe venue Ġ& ĠCustom s Ċ Ġ* Ċ Ġ* Ġ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 Ġuk . gov . hm rc . calculator . utils . tax code Ċ Ċ import Ġkotlin . test . Test Ċ import Ġkotlin . test . assertEquals Ċ import Ġkotlin . test . assert Fails With Ċ import Ġkotlin . test . assertTrue Ċ import Ġuk . gov . hm rc . calculator . exception . Invalid Tax Code Exception Ċ import Ġuk . gov . hm rc . calculator . model . Country . WAL ES Ċ import Ġuk . gov . hm rc . calculator . model . tax codes . C 0 T Ċ import Ġuk . gov . hm rc . calculator . model . tax codes . C BR Ċ import Ġuk . gov . hm rc . calculator . model . tax codes . CD 0 Ċ import Ġuk . gov . hm rc . calculator . model . tax codes . CD 1 Ċ import Ġuk . gov . hm rc . calculator . model . tax codes . CK Code Ċ import Ġuk . gov . hm rc . calculator . model . tax codes . CL Code Ċ import Ġuk . gov . hm rc . calculator . model . tax codes . CT Code Ċ import Ġuk . gov . hm rc . calculator . model . tax codes . W el sh E mergency Code Ċ import Ġuk . gov . hm rc . calculator . model . tax codes . W el sh M Code Ċ import Ġuk . gov . hm rc . calculator . model . tax codes . W el sh N Code Ċ import Ġuk . gov . hm rc . calculator . model . tax codes . W el sh Tax Code Ċ Ċ class ĠString W el sh Tax Code Tests Ġ{ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` W el sh Ġno Ġallow ance `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertTrue (" C 0 T ". to Tax Code () Ġis ĠC 0 T ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` W el sh Ġbasic Ġrate `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertTrue (" C BR ". to Tax Code () Ġis ĠC BR ) ĊĊĠĠĠĠĠĠĠ Ġval Ġtax Code : ĠC BR Ġ= Ġ" C BR ". to Tax Code () Ġas ĠC BR ĊĠĠĠĠĠĠĠ ĠassertEquals ( WAL ES , Ġtax Code . country ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġtax Code . tax All At Band ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 . 0 , Ġtax Code . tax Free Amount ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` W el sh Ġhigher `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertTrue (" CD 0 ". to Tax Code () Ġis ĠCD 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġtax Code : ĠCD 0 Ġ= Ġ" CD 0 ". to Tax Code () Ġas ĠCD 0 ĊĠĠĠĠĠĠĠ ĠassertEquals ( WAL ES , Ġtax Code . country ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġtax Code . tax All At Band ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 . 0 , Ġtax Code . tax Free Amount ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` W el sh Ġadditional `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertTrue (" CD 1 ". to Tax Code () Ġis ĠCD 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġtax Code : ĠCD 1 Ġ= Ġ" CD 1 ". to Tax Code () Ġas ĠCD 1 ĊĠĠĠĠĠĠĠ ĠassertEquals ( WAL ES , Ġtax Code . country ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 3 , Ġtax Code . tax All At Band ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 . 0 , Ġtax Code . tax Free Amount ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` W el sh ĠCT Code `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertTrue (" C 1 5 0 T ". to Tax Code () Ġis ĠCT Code ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 5 0 9 . 0 , Ġ" C 1 5 0 T ". to Tax Code (). tax Free Amount ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( WAL ES , Ġ" C 1 5 0 T ". to Tax Code (). country ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` W el sh ĠCL Code `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertTrue (" C 1 2 5 0 L ". to Tax Code () Ġis ĠCL Code ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 2 5 0 9 . 0 , Ġ" C 1 2 5 0 L ". to Tax Code (). tax Free Amount ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( WAL ES , Ġ" C 1 2 5 0 L ". to Tax Code (). country ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` W el sh Ġinvalid `() Ġ{ ĊĠĠĠĠĠĠĠ Ġassert Fails With < Invalid Tax Code Exception > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" CD 2 ". to Tax Code () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` W ales ĠE mergency ĠX `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertTrue (" C 1 2 5 0 X ". to Tax Code () Ġis ĠW el sh E mergency Code ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 2 5 0 9 . 0 , Ġ" C 1 2 5 0 X ". to Tax Code (). tax Free Amount ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( WAL ES , Ġ" C 1 2 5 0 X ". to Tax Code (). country ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` WAL ES ĠE mergency ĠM 1 `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertTrue (" C 1 2 5 0 M 1 ". to Tax Code () Ġis ĠW el sh E mergency Code ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 2 5 0 9 . 0 , Ġ" C 1 2 5 0 M 1 ". to Tax Code (). tax Free Amount ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( WAL ES , Ġ" C 1 2 5 0 M 1 ". to Tax Code (). country ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` WAL ES ĠE mergency ĠW 1 `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertTrue (" C 1 2 5 0 W 1 ". to Tax Code () Ġis ĠW el sh E mergency Code ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 2 5 0 9 . 0 , Ġ" C 1 2 5 0 W 1 ". to Tax Code (). tax Free Amount ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( WAL ES , Ġ" C 1 2 5 0 W 1 ". to Tax Code (). country ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` WAL ES ĠE mergency Ġ 1 1 5 0 W 1 `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertTrue (" C 1 1 5 0 W 1 ". to Tax Code () Ġis ĠW el sh E mergency Code ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 1 5 0 9 . 0 , Ġ" C 1 1 5 0 W 1 ". to Tax Code (). tax Free Amount ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( WAL ES , Ġ" C 1 1 5 0 W 1 ". to Tax Code (). country ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` WAL ES ĠE mergency Ġ 1 1 5 0 M 1 `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertTrue (" C 1 1 5 0 M 1 ". to Tax Code () Ġis ĠW el sh E mergency Code ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 1 5 0 9 . 0 , Ġ" C 1 1 5 0 M 1 ". to Tax Code (). tax Free Amount ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( WAL ES , Ġ" C 1 1 5 0 M 1 ". to Tax Code (). country ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` W ales Ġ 1 2 5 0 M `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertTrue (" C 1 2 5 0 M ". to Tax Code () Ġis ĠW el sh M Code ) ĊĠĠĠĠĠĠĠ Ġval Ġtax Code : ĠW el sh M Code Ġ= Ġ" C 1 2 5 0 M ". to Tax Code () Ġas ĠW el sh M Code ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 2 5 0 9 . 0 , Ġtax Code . tax Free Amount ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( WAL ES , Ġtax Code . country ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( true , Ġtax Code . increase d Tax Allow ance ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` W ales Ġ 1 2 5 0 N `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertTrue (" C 1 2 5 0 N ". to Tax Code () Ġis ĠW el sh N Code ) ĊĠĠĠĠĠĠĠ Ġval Ġtax Code : ĠW el sh N Code Ġ= Ġ" C 1 2 5 0 N ". to Tax Code () Ġas ĠW el sh N Code ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 2 5 0 9 . 0 , Ġtax Code . tax Free Amount ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( WAL ES , Ġtax Code . country ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( false , Ġtax Code . increase d Tax Allow ance ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` W ales ĠCK 1 0 0 `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertTrue (" CK 1 0 0 ". to Tax Code () Ġis ĠCK Code ) ĊĠĠĠĠĠĠĠ Ġval Ġtax Code : ĠCK Code Ġ= Ġ" CK 1 0 0 ". to Tax Code () Ġas ĠCK Code ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 . 0 , Ġtax Code . tax Free Amount ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( WAL ES , Ġtax Code . country ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 0 0 9 . 0 , Ġtax Code . amount ToAdd To W ages ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` W ales ĠC 1 2 1 2 LX `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtax Code Ġ= Ġ" C 1 2 1 2 LX ". to Tax Code () ĊĠĠĠĠĠĠĠ ĠassertTrue ( tax Code Ġis ĠW el sh Tax Code ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( tax Code Ġis ĠW el sh E mergency Code ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 2 1 2 9 . 0 , Ġtax Code . tax Free Amount ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( WAL ES , Ġtax Code . country ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` W ales ĠC 1 4 1 TX `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtax Code Ġ= Ġ" C 1 4 1 TX ". to Tax Code () ĊĠĠĠĠĠĠĠ ĠassertTrue ( tax Code Ġis ĠW el sh Tax Code ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( tax Code Ġis ĠW el sh E mergency Code ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 4 1 9 . 0 , Ġtax Code . tax Free Amount ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( WAL ES , Ġtax Code . country ) ĊĠĠĠ Ġ} Ċ } Ċ