/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 4 - 2 0 2 0 ĠAr pit ĠK hur ana Ġ< arp it kh 9 6 @ gmail . com >, ĠV ish al ĠNe h ra Ġ< v ish al me ham 2 @ gmail . com >, Ċ Ġ* ĠEm man uel ĠMess ul am < em man uel b end avid @ gmail . com >, ĠRay mond ĠL ai Ġ< air wave 2 0 9 gt Ġat Ġg mail . com > Ġand ĠContributors . Ċ Ġ* Ċ Ġ* ĠThis Ġfile Ġis Ġpart Ġof ĠA ma ze ĠFile ĠManager . Ċ Ġ* Ċ Ġ* ĠA ma ze ĠFile ĠManager Ġis Ġfree Ġsoftware : Ġyou Ġcan Ġredistribute Ġit Ġand / or Ġmodify Ċ Ġ* Ġit Ġunder Ġthe Ġterms Ġof Ġthe ĠGNU ĠGeneral ĠPublic ĠLicense Ġas Ġpublished Ġby Ċ Ġ* Ġthe ĠFree ĠSoftware ĠFoundation , Ġeither Ġversion Ġ 3 Ġof Ġthe ĠLicense , Ġor Ċ Ġ* Ġ( at Ġyour Ġoption ) Ġany Ġlater Ġversion . Ċ Ġ* Ċ Ġ* ĠThis Ġprogram Ġis Ġdistributed Ġin Ġthe Ġhope Ġthat Ġit Ġwill Ġbe Ġuseful , Ċ Ġ* Ġbut ĠWITHOUT ĠANY ĠWARRANTY ; Ġwithout Ġeven Ġthe Ġimplied Ġwarranty Ġof Ċ Ġ* ĠMERCHANTABILITY Ġor ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE . Ġ ĠSee Ġthe Ċ Ġ* ĠGNU ĠGeneral ĠPublic ĠLicense Ġfor Ġmore Ġdetails . Ċ Ġ* Ċ Ġ* ĠYou Ġshould Ġhave Ġreceived Ġa Ġcopy Ġof Ġthe ĠGNU ĠGeneral ĠPublic ĠLicense Ċ Ġ* Ġalong Ġwith Ġthis Ġprogram . Ġ ĠIf Ġnot , Ġsee Ġ< http :// www . gnu . org / licenses />. Ċ Ġ*/ Ċ Ċ package Ġcom . amaz e . file manager . filesystem Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . Build . VERSION _ CODES .* Ċ import Ġandroid . os . Looper Ċ import Ġandroid . os . storage . Storage Manager Ċ import Ġandroidx . lifecycle . Lifecycle Ċ import Ġandroidx . test . core . app . Activity Scenario Ċ import Ġandroidx . test . core . app . Application Provider Ċ import Ġandroidx . test . ext . junit . runners . Android JUnit 4 Ċ import Ġcom . amaz e . file manager . file _ operations . filesystem . Open Mode Ċ import Ġcom . amaz e . file manager . shadow s . Shadow Multi Dex Ċ import Ġcom . amaz e . file manager . shadow s . Shadow S mb Util Ċ import Ġcom . amaz e . file manager . test . Shadow Tab Handler Ċ import Ġcom . amaz e . file manager . test . TestUtils Ċ import Ġcom . amaz e . file manager . ui . activities . MainActivity Ċ import Ġio . reactivex . android . plugins . Rx Android Plugins Ċ import Ġio . reactivex . plugins . Rx Java Plugins Ċ import Ġio . reactivex . schedul ers . Schedulers Ċ import Ġorg . junit . After Ċ import Ġorg . junit . Assert Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . runner . RunWith Ċ import Ġorg . ro bo lectric . Shadow s Ċ import Ġorg . ro bo lectric . android . util . concurrent . Inline ExecutorService Ċ import Ġorg . ro bo lectric . annotation . Config Ċ import Ġorg . ro bo lectric . annotation . Looper Mode Ċ import Ġorg . ro bo lectric . shadow s . Shadow Paused AsyncTask Ċ import Ġorg . ro bo lectric . shadow s . Shadow SQLite Connection Ċ Ċ @ RunWith ( Android JUnit 4 :: class ) Ċ @ Looper Mode ( Looper Mode . Mode . PA USED ) Ċ @ Config ( ĊĠĠĠ Ġshadow s Ġ= Ġ[ Shadow S mb Util :: class , ĠShadow Multi Dex :: class , ĠShadow Tab Handler :: class ], ĊĠĠĠ Ġsdk Ġ= Ġ[ J EL LY _ BE AN , ĠK IT K AT , ĠP ] Ċ ) Ċ abstract Ġclass ĠAbstract Operations TestBase Ġ{ ĊĊĠĠĠ Ġprotected Ġvar Ġctx : ĠContext ? Ġ= Ġnull ĊĊĠĠĠ Ġprotected Ġval Ġblank Callback Ġ= Ġobject Ġ: ĠOperations . Error CallBack Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġexists ( file : ĠHy brid File ?) Ġ= ĠUnit ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġlaunch SA F ( file : ĠHy brid File ?) Ġ= ĠUnit ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġlaunch SA F ( file : ĠHy brid File ?, Ġfile 1 : ĠHy brid File ?) Ġ= ĠUnit ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdone ( h File : ĠHy brid File ?, Ġb : ĠBoolean ) Ġ= ĠUnit ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġinvalid Name ( file : ĠHy brid File ?) Ġ= ĠUnit ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠTest Ġcase Ġsetup . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠTODO : Ġsome Ġeven Ġmore Ġgeneric Ġtest Ġcase Ġbase Ġto Ġprevent Ġcopy - and - paste ? ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠ Ġctx Ġ= ĠApplication Provider . getApplicationContext () ĊĠĠĠĠĠĠĠ ĠShadow Paused AsyncTask . override Executor ( Inline ExecutorService ()) ĊĠĠĠĠĠĠĠ ĠRx Java Plugins . reset () ĊĠĠĠĠĠĠĠ ĠRx Java Plugins . set Io Scheduler Handler Ġ{ ĠS chedulers . tr amp oline () Ġ} ĊĠĠĠĠĠĠĠ ĠRx Android Plugins . reset () ĊĠĠĠĠĠĠĠ ĠRx Android Plugins . set Init MainThread Scheduler Handler Ġ{ ĠS chedulers . tr amp oline () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠClose Ġdatabase Ġon Ġtest Ġfinished . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ After ĊĠĠĠ Ġfun ĠtearDown () Ġ{ ĊĠĠĠĠĠĠĠ ĠShadow SQLite Connection . reset () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġfun Ġtest Rename File Access Denied ( ĊĠĠĠĠĠĠĠ Ġfile Mode : ĠOpen Mode , ĊĠĠĠĠĠĠĠ Ġold FilePath : ĠString , ĊĠĠĠĠĠĠĠ Ġnew FilePath : ĠString ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . N ) ĠTestUtils . initialize Internal Storage () ĊĊĠĠĠĠĠĠĠ ĠActivity Scenario . launch ( MainActivity :: class . java ). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠShadow s . shadow Of ( Looper . get Main Looper ()). idle () ĊĠĠĠĠĠĠĠ Ġ}. moveTo State ( Lifecycle . State . STARTED ). on Activity Ġ{ Ġactivity Ġ-> ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġold File Ġ= ĠHy brid File ( file Mode , Ġold FilePath ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew File Ġ= ĠHy brid File ( file Mode , Ġnew FilePath ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOperations . rename ( old File , Ġnew File , Ġfalse , Ġactivity , Ġblank Callback ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠShadow s . shadow Of ( Looper . get Main Looper ()). idle () ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠShadow s . shadow Of ( activity ). broadcast Intent s . run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertNotNull ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertTrue ( this . size Ġ> Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis [ 0 ]. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertEquals ( MainActivity . TAG _ INT ENT _ FILTER _ GENERAL , Ġthis . action ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. get Parcelable ArrayList Extra < Hybrid File Parcelable >( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMainActivity . TAG _ INT ENT _ FILTER _ FAILED _ OPS ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertTrue ( this . size Ġ> Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertEquals ( old FilePath , Ġthis [ 0 ]. path ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. moveTo State ( Lifecycle . State . DESTROY ED ). close (). run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . N ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠShadow s . shadow Of ( ctx ?. getSystem Service ( Storage Manager :: class . java )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. reset Storage Volume List () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ