package Ġcom . sp ir acle software . android sample . common . formatter Ċ Ċ import Ġcom . google . common . truth . Truth . assertThat Ċ import Ġcom . sp ir acle software . android sample . domain . entity . Money Ċ import Ġcom . sp ir acle software . android sample . domain . entity . Transaction Ċ import Ġcom . sp ir acle software . android sample . framework . utils . Language Manager . App Language Ċ import Ġio . mock k . every Ċ import Ġio . mock k . mock k Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Test Ċ import Ġjava . text . NumberFormat Ċ import Ġjava . util .* Ċ Ċ class ĠMoney Formatter Test Ġ{ ĊĊĠĠĠ Ġ@ Opt In ( Experimental Std lib Api :: class ) ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠNON _ BREAK ING _ SPACE Ġ= ĠChar ( 1 6 0 ) ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠSPACE Ġ= ĠChar ( 3 2 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠWhen Ġcompiling Ġoutside ĠAndroid ĠStudio Ġ( e . g . Ġon Ġa Ġbuild Ġserver ), ĊĠĠĠĠ Ġ* Ġthe Ġ[ NumberFormat ] Ġuses Ġa Ġdifferent Ġcharacter Ġfor Ġspaces Ġfor Ġsome ĊĠĠĠĠ Ġ* Ġreason . ĠThis Ġbreaks Ġunit Ġtests , Ġso Ġwe 're Ġgonna Ġreplace Ġit Ġwith ĊĠĠĠĠ Ġ* Ġregular Ġspaces Ġeach Ġtime . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠA Ġnon - breaking Ġspace Ġis Ġa Ġspace Ġcharacter Ġthat Ġprevents Ġan Ġautomatic ĊĠĠĠĠ Ġ* Ġline Ġbreak Ġat Ġits Ġposition . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun ĠString . un ify Encoding (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġreplace ( NON _ BREAK ING _ SPACE , ĠSPACE ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠ ĠLocale . setDefault ( App Language . EN GL ISH . toLocale ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġlocalization _ english () Ġ{ ĊĠĠĠĠĠĠĠ ĠLocale . setDefault ( App Language . EN GL ISH . toLocale ()) ĊĊĠĠĠĠĠĠĠ Ġval Ġmoney Ġ= ĠMoney (" 1 0 0 ", Ġ" CZ K ") ĊĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= ĠMoney Formatter (). format Unsigned ( money ) ĊĠĠĠĠĠĠĠ ĠassertThat ( actual ). isEqualTo (" CZ K 1 0 0 ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġlocalization _ c zech () Ġ{ ĊĠĠĠĠĠĠĠ ĠLocale . setDefault ( App Language . C ZE CH . toLocale ()) ĊĊĠĠĠĠĠĠĠ Ġval Ġmoney Ġ= ĠMoney (" 1 0 0 ", Ġ" CZ K ") ĊĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= ĠMoney Formatter (). format Unsigned ( money ). un ify Encoding () ĊĠĠĠĠĠĠĠ ĠassertThat ( actual ). isEqualTo (" 1 0 0 ĠK Äį ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġformat _ incoming _ transaction _ contribut es _ to _ balance () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtransaction Ġ= Ġmock k < Transaction > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġcontribut es To Account Balance () Ġ} Ġreturns Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġsigned Money Ġ} Ġreturns ĠMoney (" 1 0 0 ", Ġ" USD ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= ĠMoney Formatter (). format ( transaction ) ĊĠĠĠĠĠĠĠ ĠassertThat ( actual ). isEqualTo ("+ Ġ$ 1 0 0 ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġformat _ outgoing _ transaction _ contribut es _ to _ balance () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtransaction Ġ= Ġmock k < Transaction > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġcontribut es To Account Balance () Ġ} Ġreturns Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġsigned Money Ġ} Ġreturns ĠMoney ("- 1 0 0 ", Ġ" USD ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= ĠMoney Formatter (). format ( transaction ) ĊĠĠĠĠĠĠĠ ĠassertThat ( actual ). isEqualTo ("- Ġ$ 1 0 0 ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġformat _ transaction _ does _ not _ contribute _ to _ balance () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtransaction Ġ= Ġmock k < Transaction > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġcontribut es To Account Balance () Ġ} Ġreturns Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġmoney Ġ} Ġreturns ĠMoney (" 1 0 0 ", Ġ" USD ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= ĠMoney Formatter (). format ( transaction ) ĊĠĠĠĠĠĠĠ ĠassertThat ( actual ). isEqualTo ("$ 1 0 0 ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġsigned () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmoney Ġ= ĠMoney (" 1 0 0 ", Ġ" USD ") ĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= ĠMoney Formatter (). format Signed ( money ) ĊĠĠĠĠĠĠĠ ĠassertThat ( actual ). isEqualTo ("+ Ġ$ 1 0 0 ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġsigned _ decimal () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmoney Ġ= ĠMoney (" 1 2 3 4 5 . 6 7 ", Ġ" USD ") ĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= ĠMoney Formatter (). format Signed ( money ) ĊĠĠĠĠĠĠĠ ĠassertThat ( actual ). isEqualTo ("+ Ġ$ 1 2 , 3 4 5 . 6 7 ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġsigned _ decimal _ with _ zeros () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmoney Ġ= ĠMoney (" 1 0 0 . 0 0 ", Ġ" USD ") ĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= ĠMoney Formatter (). format Signed ( money ) ĊĠĠĠĠĠĠĠ ĠassertThat ( actual ). isEqualTo ("+ Ġ$ 1 0 0 ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġsigned _ without _ positive _ sign () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmoney Ġ= ĠMoney (" 1 0 0 ", Ġ" USD ") ĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= ĠMoney Formatter (). format Signed ( money , Ġshow Sign When Positive Ġ= Ġfalse ) ĊĠĠĠĠĠĠĠ ĠassertThat ( actual ). isEqualTo ("$ 1 0 0 ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġunsigned () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmoney Ġ= ĠMoney (" 1 0 0 ", Ġ" USD ") ĊĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= ĠMoney Formatter (). format Unsigned ( money ) ĊĠĠĠĠĠĠĠ ĠassertThat ( actual ). isEqualTo ("$ 1 0 0 ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġunsigned _ negative () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmoney Ġ= ĠMoney ("- 1 0 0 ", Ġ" USD ") ĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= ĠMoney Formatter (). format Unsigned ( money ) ĊĠĠĠĠĠĠĠ ĠassertThat ( actual ). isEqualTo ("$ 1 0 0 ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġsigned _ negative () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmoney Ġ= ĠMoney ("- 1 0 0 ", Ġ" USD ") ĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= ĠMoney Formatter (). format Signed ( money ) ĊĠĠĠĠĠĠĠ ĠassertThat ( actual ). isEqualTo ("- Ġ$ 1 0 0 ") ĊĠĠĠ Ġ} Ċ Ċ } Ċ