/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 2 1 ĠSquare , ĠInc . Ċ Ġ* Ċ Ġ* Ġ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 Ġapp . cash . zi pline Ċ Ċ import Ġapp . cash . zi pline . Utf 8 Test . Formatter Ċ import Ġorg . junit . After Ċ import Ġorg . junit . Assert . assertEquals Ċ import Ġorg . junit . Test Ċ Ċ /** Ċ Ġ* ĠThis Ġtest Ġattempts Ġto Ġtransmit Ġstrings Ġthrough Ġeach Ġof Ġour Ġsupported Ġmechanisms Ġand Ġconf ir ms Ġthat Ċ Ġ* Ġeach Ġdoesn 't Ġm angle Ġcontent . ĠWe 've Ġhad Ġbugs Ġwhere Ġnon - ASCII Ġcharacters Ġweren 't Ġencoded Ġproperly . Ċ Ġ*/ Ċ class ĠUtf 8 Test Ġ{ ĊĠ Ġprivate Ġval Ġquick js Ġ= ĠQuick Js . create () ĊĊĠ Ġ@ After Ġfun ĠtearDown () Ġ{ ĊĠĠĠ Ġquick js . close () ĊĠ Ġ} ĊĊĠ Ġfun Ġinterface ĠFormatter Ġ{ ĊĠĠĠ Ġfun Ġformat ( message : ĠString ): ĠString ? ĊĠ Ġ} ĊĊĠ Ġ@ Test Ġfun Ġnon Ascii In Input And Output () Ġ{ ĊĠĠĠ ĠassertEquals ("( a \ uD 8 3 D \ u DC 1 Dc def g , Ġa \ uD 8 3 D \ u DC 1 Dc def g )", ĊĠĠĠĠĠĠĠ Ġquick js . evaluate (" var Ġs Ġ= Ġ\" a \ uD 8 3 D \ u DC 1 Dc def g \"; Ġ'(' Ġ+ Ġs Ġ+ Ġ', Ġ' Ġ+ Ġs Ġ+ Ġ') '; ")) ĊĠ Ġ} ĊĊĠ Ġ@ Test Ġfun Ġnon Ascii In FileName () Ġ{ ĊĠĠĠ Ġval Ġt Ġ= ĠassertThrows < Quick Js Exception > Ġ{ ĊĠĠĠĠĠ Ġquick js . evaluate (""" ĊĠĠĠĠĠĠĠ Ġ| f 1 (); ĊĠĠĠĠĠĠĠ Ġ| ĊĠĠĠĠĠĠĠ Ġ| function Ġf 1 () Ġ{ ĊĠĠĠĠĠĠĠ Ġ| Ġ Ġno pe (); ĊĠĠĠĠĠĠĠ Ġ| } ĊĠĠĠĠĠĠĠ Ġ| """. trim Margin (), Ġ" a \ uD 8 3 D \ u DC 1 Dc def g . js ") ĊĠĠĠĠĠ Ġquick js . evaluate (" formatter . format (); ") ĊĠĠĠ Ġ} ĊĠĠĠ ĠassertEquals (" JavaScript . f 1 ( a \ uD 8 3 D \ u DC 1 Dc def g . js : 4 )", Ġt . stack Trace [ 0 ]. toString ()) ĊĠ Ġ} ĊĊĠ Ġ@ Test Ġfun Ġnon Ascii In Proxy Input And Output () Ġ{ ĊĠĠĠ Ġquick js . evaluate (""" ĊĠĠĠĠĠ Ġ| var Ġformatter Ġ= Ġ{ ĊĠĠĠĠĠ Ġ| Ġ Ġformat : Ġfunction ( message ) Ġ{ ĊĠĠĠĠĠ Ġ| ĠĠĠ Ġreturn Ġ'(' Ġ+ Ġmessage Ġ+ Ġ', Ġ' Ġ+ Ġmessage Ġ+ Ġ') '; ĊĠĠĠĠĠ Ġ| Ġ Ġ} ĊĠĠĠĠĠ Ġ| }; ĊĠĠĠĠĠ Ġ| """. trim Margin ()) ĊĠĠĠ Ġval Ġformatter Ġ= Ġquick js . get (" formatter ", ĠFormatter :: class ) ĊĠĠĠ ĠassertEquals ("( a \ uD 8 3 D \ u DC 1 Dc def g , Ġa \ uD 8 3 D \ u DC 1 Dc def g )", Ġformatter . format (" a \ uD 8 3 D \ u DC 1 Dc def g ")) ĊĠ Ġ} ĊĊĠ Ġ@ Test Ġfun Ġnon Ascii In Bound Object Input And Output () Ġ{ ĊĠĠĠ Ġquick js . set (" formatter ", ĠFormatter :: class , ĊĠĠĠĠĠĠĠ ĠFormatter Ġ{ Ġmessage Ġ-> Ġ" ($ message , Ġ$ message )" Ġ}) ĊĠĠĠ ĠassertEquals ("( a \ uD 8 3 D \ u DC 1 Dc def g , Ġa \ uD 8 3 D \ u DC 1 Dc def g )", ĊĠĠĠĠĠĠĠ Ġquick js . evaluate (" formatter . format (' a \ uD 8 3 D \ u DC 1 Dc def g '); ")) ĊĠ Ġ} ĊĊĠ Ġ@ Test Ġfun Ġnon Ascii In Exception Thrown In Js () Ġ{ ĊĠĠĠ Ġquick js . evaluate (""" ĊĠĠĠĠĠ Ġ| var Ġformatter Ġ= Ġ{ ĊĠĠĠĠĠ Ġ| Ġ Ġformat : Ġfunction ( message ) Ġ{ ĊĠĠĠĠĠ Ġ| ĠĠĠ Ġthrow Ġ' a ðŁ Ĳ Ŀ c def g '; ĊĠĠĠĠĠ Ġ| Ġ Ġ} ĊĠĠĠĠĠ Ġ| }; ĊĠĠĠĠĠ Ġ| """. trim Margin ()) ĊĠĠĠ Ġval Ġformatter Ġ= Ġquick js . get (" formatter ", ĠFormatter :: class ) ĊĠĠĠ Ġval Ġt Ġ= ĠassertThrows < Quick Js Exception > Ġ{ ĊĠĠĠĠĠ Ġformatter . format ("") ĊĠĠĠ Ġ} ĊĠĠĠ ĠassertEquals (" a \ uD 8 3 D \ u DC 1 Dc def g ", Ġt . message ) ĊĠ Ġ} ĊĊĠ Ġ@ Test Ġfun Ġnon Ascii In Exception Thrown In Java () Ġ{ ĊĠĠĠ Ġquick js . set (" formatter ", ĠFormatter :: class , ĊĠĠĠĠĠĠĠ ĠFormatter Ġ{ Ġthrow ĠRuntimeException (" a \ uD 8 3 D \ u DC 1 Dc def g ") Ġ}) ĊĠĠĠ Ġval Ġt Ġ= ĠassertThrows < RuntimeException > Ġ{ ĊĠĠĠĠĠ Ġquick js . evaluate (" formatter . format (''); ") ĊĠĠĠ Ġ} ĊĠĠĠ ĠassertEquals (" a \ uD 8 3 D \ u DC 1 Dc def g ", Ġt . message ) ĊĠ Ġ} ĊĊĠ Ġ@ Test Ġfun Ġnon Ascii In Proxy Result () Ġ{ ĊĠĠĠ Ġquick js . evaluate (""" ĊĠĠĠĠĠ Ġ| var Ġformatter Ġ= Ġ{ ĊĠĠĠĠĠ Ġ| Ġ Ġformat : Ġfunction ( message ) Ġ{ ĊĠĠĠĠĠ Ġ| ĠĠĠ Ġreturn Ġ' a ðŁ Ĳ Ŀ c def g '; ĊĠĠĠĠĠ Ġ| Ġ Ġ} ĊĠĠĠĠĠ Ġ| }; ĊĠĠĠĠĠ Ġ| """. trim Margin ()) ĊĠĠĠ Ġval Ġformatter Ġ= Ġquick js . get (" formatter ", ĠFormatter :: class ) ĊĠĠĠ ĠassertEquals (" a \ uD 8 3 D \ u DC 1 Dc def g ", Ġformatter . format ("")) ĊĠ Ġ} Ċ } Ċ