/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 0 ĠR az ew are ĠLLC Ċ Ġ* Ċ Ġ* ĠPermission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy Ċ Ġ* Ġof Ġthis Ġsoftware Ġand Ġassociated Ġdocumentation Ġfiles Ġ( the Ġ" Software "), Ġto Ġdeal Ċ Ġ* Ġin Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ġwithout Ġlimitation Ġthe Ġrights Ċ Ġ* Ġto Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġand / or Ġsell Ċ Ġ* Ġcopies Ġof Ġthe ĠSoftware , Ġand Ġto Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis Ċ Ġ* Ġfurnished Ġto Ġdo Ġso , Ġsubject Ġto Ġthe Ġfollowing Ġconditions : Ċ Ġ* Ċ Ġ* ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ċ Ġ* Ġall Ġcopies Ġor Ġsubstantial Ġportions Ġof Ġthe ĠSoftware . Ċ Ġ* Ċ Ġ* ĠNot with standing Ġthe Ġfore going , Ġyou Ġmay Ġnot Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ċ Ġ* Ġdistribute , Ġsublicense , Ġcreate Ġa Ġderivative Ġwork , Ġand / or Ġsell Ġcopies Ġof Ġthe Ċ Ġ* ĠSoftware Ġin Ġany Ġwork Ġthat Ġis Ġdesigned , Ġintended , Ġor Ġmarket ed Ġfor Ġped ag og ical Ġor Ċ Ġ* Ġinstruction al Ġpurposes Ġrelated Ġto Ġprogramming , Ġcoding , Ġapplication Ġdevelopment , Ċ Ġ* Ġor Ġinformation Ġtechnology . Ġ ĠPermission Ġfor Ġsuch Ġuse , Ġcopying , Ġmodification , Ċ Ġ* Ġmer ger , Ġpublication , Ġdistribution , Ġsublic ensing , Ġcreation Ġof Ġderivative Ġworks , Ċ Ġ* Ġor Ġsale Ġis Ġexpress ly Ġwith held . Ċ Ġ* Ċ Ġ* ĠThis Ġproject Ġand Ġsource Ġcode Ġmay Ġuse Ġlibraries Ġor Ġframeworks Ġthat Ġare Ċ Ġ* Ġreleased Ġunder Ġvarious ĠOpen - Source Ġlicenses . ĠUse Ġof Ġthose Ġlibraries Ġand Ċ Ġ* Ġframeworks Ġare Ġgoverned Ġby Ġtheir Ġown Ġindividual Ġlicenses . Ċ Ġ* Ċ Ġ* ĠTHE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR Ċ Ġ* ĠIMPLIED , ĠINCLUDING ĠBUT ĠNOT ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , Ċ Ġ* ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE Ċ Ġ* ĠAUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER Ċ Ġ* ĠLIABILITY , ĠWHETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , ĠARISING ĠFROM , Ċ Ġ* ĠOUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER ĠDEALINGS ĠIN Ċ Ġ* ĠTHE ĠSOFTWARE . Ċ Ġ*/ Ċ Ċ package Ġcom . ray w ender lich . android . pe ts ave . common Ċ Ċ import Ġandroidx . annotation . NonNull Ċ import Ġio . reactivex . Scheduler Ċ import Ġio . reactivex . android . plugins . Rx Android Plugins Ċ import Ġio . reactivex . dis pos ables . Disposable Ċ import Ġio . reactivex . internal . schedul ers . Executor Scheduler Ċ import Ġio . reactivex . plugins . Rx Java Plugins Ċ import Ġorg . junit . rules . Test Rule Ċ import Ġorg . junit . runner . Description Ċ import Ġorg . junit . runners . model . Statement Ċ import Ġjava . util . concurrent . Executor Ċ import Ġjava . util . concurrent . TimeUnit Ċ Ċ class ĠRx Immediate Scheduler Rule Ġ: ĠTest Rule Ġ{ ĊĠ Ġprivate Ġval Ġimmediate Scheduler Ġ= Ġobject Ġ: ĠScheduler () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġschedule Direct ( run : ĠRunnable , Ġdelay : ĠLong , Ġunit : ĠTimeUnit ): ĠDis posable Ġ{ ĊĠĠĠĠĠ Ġ// ĠHack Ġto Ġprevent Ġstack Ġoverflow s Ġin Ġunit Ġtests Ġwhen Ġscheduling Ġwith Ġa Ġdelay ; ĊĠĠĠĠĠ Ġreturn Ġsuper . schedule Direct ( run , Ġ 0 , Ġunit ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcreate Worker (): ĠWorker Ġ{ ĊĠĠĠĠĠ Ġreturn ĠExecutor Scheduler . Executor Worker ({ Ġit . run () Ġ}, Ġtrue ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġapply (@ NonNull Ġbase : ĠStatement , Ġ@ NonNull Ġdescription : ĠDescription ): ĠStatement Ġ{ ĊĠĠĠ Ġreturn Ġobject Ġ: ĠStatement () Ġ{ ĊĠĠĠĠĠ Ġ@ Throws ( Throwable :: class ) ĊĠĠĠĠĠ Ġoverride Ġfun Ġevaluate () Ġ{ ĊĠĠĠĠĠĠĠ ĠRx Java Plugins . set Init Io Scheduler Handler Ġ{ Ġimmediate Scheduler Ġ} ĊĠĠĠĠĠĠĠ ĠRx Java Plugins . set Init Computation Scheduler Handler Ġ{ Ġimmediate Scheduler Ġ} ĊĠĠĠĠĠĠĠ ĠRx Java Plugins . set Init New Thread Scheduler Handler Ġ{ Ġimmediate Scheduler Ġ} ĊĠĠĠĠĠĠĠ ĠRx Java Plugins . set Init Single Scheduler Handler Ġ{ Ġimmediate Scheduler Ġ} ĊĠĠĠĠĠĠĠ ĠRx Android Plugins . set Init MainThread Scheduler Handler Ġ{ Ġimmediate Scheduler Ġ} ĊĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġbase . evaluate () ĊĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠ ĠRx Java Plugins . reset () ĊĠĠĠĠĠĠĠĠĠ ĠRx Android Plugins . reset () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ }