package Ġcom . tr inity mirror . network monitor . usage callback Ċ Ċ import Ġandroid . app . usage . Network Stats Manager Ċ import Ġandroid . content . Context Ċ import Ġandroid . net . Connectivity Manager Ċ import Ġandroid . os . Handler Ċ import Ġandroid . os . Looper Ċ import Ġandroid . os . Remote Exception Ċ import Ġcom . n ha ar man . mockito _ kotlin . verify Ċ import Ġcom . n ha ar man . mockito _ kotlin . wh enever Ċ import Ġcom . tr inity mirror . network monitor . Base Test Ċ import Ġcom . tr inity mirror . network monitor . Usage Listener Ċ import Ġcom . tr inity mirror . network monitor . mother . Usage Listener M other Ċ import Ġorg . am sh ove . k lu ent . any Ċ import Ġorg . am sh ove . k lu ent . mock Ċ import Ġorg . am sh ove . k lu ent . shouldBe Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Test Ċ Ċ class ĠUsage Callback Register Test Ġ: ĠBaseTest () Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠSUB SCR IB ER _ ID Ġ= Ġ" subscriber - id " ĊĠĠĠĠĠĠĠ Ġval Ġhandler Ġ= ĠHandler ( Looper . my Looper ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġstats Manager Ġ= Ġmock ( Network Stats Manager :: class ) ĊĠĠĠ Ġprivate Ġval Ġlibrary Callback Ġ= Ġmock ( Usage Listener . Callback :: class ) ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġusage Callback Register : ĠUsage Callback Register Stub ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġoverride Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠ Ġusage Callback Register Ġ= ĠUsage Callback Register Stub ( context , Ġstats Manager ) ĊĠĠĠĠĠĠĠ Ġwhenever ( stats Manager . query Details For Uid ( any (), Ġany (), Ġany (), Ġany (), Ġany ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. then Throw ( Remote Exception (" no Ġwor ries , Ġyou 're Ġunder Ġtest Ġcode .")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` register Ġis Ġcalled Ġwith Ġcorrect Ġparams Ġfor Ġmobile `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġval Ġlistener Ġ= ĠUsage Listener M other . create ( id , ĠUsage Listener . Network Type . MOB ILE , Ġlibrary Callback ) ĊĊĊĠĠĠĠĠĠĠ Ġusage Callback Register . register Usage Callback ( listener ) ĊĊĊĠĠĠĠĠĠĠ Ġusage Callback Register . callbacks List (). size () ĠshouldBe Ġ 1 ĊĠĠĠĠĠĠĠ Ġverify ( stats Manager ). register Usage Callback ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConnect ivity Manager . TYPE _ MOB ILE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSUB SCR IB ER _ ID , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlistener . params . max Bytes Since App Restart , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġusage Callback Register . callbacks List ()[ id ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandler ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` register Ġis Ġcalled Ġwith Ġcorrect Ġparams Ġfor Ġwifi `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġval Ġlistener Ġ= ĠUsage Listener M other . create ( id , ĠUsage Listener . Network Type . WIFI , Ġlibrary Callback ) ĊĊĊĠĠĠĠĠĠĠ Ġusage Callback Register . register Usage Callback ( listener ) ĊĊĊĠĠĠĠĠĠĠ Ġusage Callback Register . callbacks List (). size () ĠshouldBe Ġ 1 ĊĠĠĠĠĠĠĠ Ġverify ( stats Manager ). register Usage Callback ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConnect ivity Manager . TYPE _ WIFI , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlistener . params . max Bytes Since App Restart , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġusage Callback Register . callbacks List ()[ id ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandler ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` when Ġunregister , Ġtrigger ĠNetwork Stats Manager Ġand Ġremove Ġfrom ĠSparse Array `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġval Ġlistener Ġ= ĠUsage Listener M other . create ( id , ĠUsage Listener . Network Type . WIFI , Ġlibrary Callback ) ĊĠĠĠĠĠĠĠ Ġusage Callback Register . register Usage Callback ( listener ) ĊĠĠĠĠĠĠĠ Ġval Ġcallback Ġ= Ġusage Callback Register . callbacks List ()[ id ] ĊĊĊĠĠĠĠĠĠĠ Ġusage Callback Register . unregister Usage Callback ( listener ) ĊĊĊĠĠĠĠĠĠĠ Ġusage Callback Register . callbacks List (). size () ĠshouldBe Ġ 0 ĊĠĠĠĠĠĠĠ Ġverify ( stats Manager ). unregister Usage Callback ( callback ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` when Ġandroid Ġtriggers Ġthe Ġcallback , Ġthen Ġnotify Ġlistener Ġand Ġunregister Ġitself `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġval Ġlistener Ġ= ĠUsage Listener M other . create ( id , ĠUsage Listener . Network Type . MOB ILE , Ġlibrary Callback ) ĊĠĠĠĠĠĠĠ Ġusage Callback Register . register Usage Callback ( listener ) ĊĠĠĠĠĠĠĠ Ġval Ġcallback Ġ= Ġusage Callback Register . callbacks List ()[ id ] ĊĊĠĠĠĠĠĠĠ Ġusage Callback Register . on Threshold Reached ( listener ) ĊĊĠĠĠĠĠĠĠ Ġverify ( library Callback ). on Max Bytes Reached ( any ()) ĊĠĠĠĠĠĠĠ Ġverify ( stats Manager ). unregister Usage Callback ( callback ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ////////////////////////////////////////////////////////////////// //////////////////////// ////// ĊĊĠĠĠ Ġinternal Ġclass ĠUsage Callback Register Stub ( context : ĠContext , Ġstats Manager : ĠNetwork Stats Manager ) ĊĠĠĠĠĠĠĠ Ġ: ĠUsage Callback Register . N ou gat ( context , Ġstats Manager , Ġhandler ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Subscriber Id (): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠSUB SCR IB ER _ ID ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġcallbacks List () Ġ= Ġusage Callbacks List ĊĠĠĠ Ġ} Ċ }