package Ġcom . dag on co . lit ter ae Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . res . Configuration Ċ import Ġandroid . os . Build Ċ import Ġandroidx . test . platform . app . Instrumentation Registry Ċ import Ġorg . junit . rules . Test Rule Ċ import Ġorg . junit . runner . Description Ċ import Ġorg . junit . runners . model . Statement Ċ import Ġjava . util . Locale Ċ Ċ @ Suppress (" DE PREC ATION ") Ċ class ĠSwitch Locale ( private Ġval Ġlocales : ĠList < String >? Ġ= Ġnull ) Ġ: ĠTest Rule Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġcontext : ĠContext Ġ= ĠInstrument ation Registry . get Instrumentation (). target Context ĊĊĠĠĠ Ġoverride Ġfun Ġapply ( statement : ĠStatement , Ġdescription : ĠDescription ) Ġ= Ġobject Ġ: ĠStatement () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġevaluate () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlocales Ġ= Ġlocales ?. take If Ġ{ Ġit . isNotEmpty () Ġ} Ġ?: Ġcontext . resources . configuration . getDevice Locales () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlocales . forEach Ġ{ Ġlanguage Tag Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlanguage Tag . getLocale (). addTo Test () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatement . evaluate () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠConfiguration . getDevice Locales (): ĠList < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBuild . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . N Ġ-> Ġ( 0 Ġuntil Ġlocales . size ()). map Ġ{ Ġlocales [ it ]. language Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠlistOf ( locale . language ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠString . getLocale (): ĠLocale Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . isEmpty () Ġ-> ĠLocale . getDefault () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBuild . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . LO L LI POP Ġ-> ĠLocale . for Language Tag ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠLocale ( this ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠLocale . addTo Test () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġconfiguration Ġ= ĠInstrument ation Registry . get Instrumentation (). target Context . resources . configuration ĊĠĠĠĠĠĠĠ ĠLocale . setDefault ( this ) ĊĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBuild . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . J EL LY _ BE AN _ MR 1 Ġ-> Ġconfiguration . set Locale ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġconfiguration . locale Ġ= Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠContext . init For Locale Rule (): ĠContext Ġ{ ĊĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠ ĠBuild . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . J EL LY _ BE AN _ MR 1 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconfiguration Ġ= Ġresources . configuration ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfiguration . set Locale ( Locale . getDefault ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Configuration Context ( configuration ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthis ĊĠĠĠ Ġ} Ċ } Ċ