/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 8 ĠY ar os lav ĠMy tk aly k Ċ Ġ* Ċ Ġ* Ġ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 Ġcom . doctor or . particle sw all paper . engine Ċ Ċ import Ġandroid . graphics . Bitmap Ċ import Ġcom . bump tech . glide . RequestBuilder Ċ import Ġcom . bump tech . glide . Request Manager Ċ import Ġcom . bump tech . glide . request . Future Target Ċ import Ġcom . doctor or . particle sw all paper . framework . execution . Tr amp oline Schedulers Ċ import Ġcom . doctor or . particle sw all paper . framework . util . Optional Ċ import Ġcom . doctor or . particle sw all paper . user prefs . data . NO _ URI Ċ import Ġcom . doctor or . particle sw all paper . user prefs . data . Scene Settings Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . any Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . mock Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . wh enever Ċ import Ġio . reactivex . Observable Ċ import Ġio . reactivex . subjects . Behavior Subject Ċ import Ġorg . junit . After Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . runner . RunWith Ċ import Ġorg . k oin . standalone . Stand Al one Context Ċ import Ġorg . ro bo lectric . Ro bo lectric TestRunner Ċ Ċ @ RunWith ( Ro bo lectric TestRunner :: class ) Ċ class ĠEngine Background Loader Test Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġrequest Manager : ĠRequest Manager Ġ= Ġmock () ĊĊĠĠĠ Ġprivate Ġval Ġsettings : ĠScene Settings Ġ= Ġmock Ġ{ ĊĠĠĠĠĠĠĠ Ġon Ġ{ Ġit . observe Background Uri () Ġ}. thenReturn ( Observable . just ( NO _ URI )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġs chedulers Ġ= ĠTr amp oline Schedulers () ĊĊĠĠĠ Ġprivate Ġval Ġunder Test Ġ= ĠEngine Background Loader ( ĊĠĠĠĠĠĠĠ Ġrequest Manager , Ġsettings , Ġs chedulers ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ After ĊĠĠĠ Ġfun ĠtearDown () Ġ{ ĊĠĠĠĠĠĠĠ Ġunder Test . on Destroy () ĊĠĠĠĠĠĠĠ ĠStand Al one Context . stop K oin () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġreturns Null Background When No Uri () Ġ{ ĊĠĠĠĠĠĠĠ Ġunder Test . onCreate () ĊĊĠĠĠĠĠĠĠ Ġval Ġo Ġ= Ġunder Test . observe Background (). test () ĊĠĠĠĠĠĠĠ Ġunder Test . set Dimensions ( 1 , Ġ 1 ) ĊĊĠĠĠĠĠĠĠ Ġo . assert Value ( Optional < Bitmap >( null )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġloads Background Image () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġval Ġuri Ġ= Ġ" uri :// scheme " ĊĊĠĠĠĠĠĠĠ Ġval Ġwidth Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġval Ġheight Ġ= Ġ 2 ĊĊĠĠĠĠĠĠĠ Ġval Ġbitmap : ĠBitmap Ġ= Ġmock () ĊĊĠĠĠĠĠĠĠ Ġwhenever ( settings . observe Background Uri ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. thenReturn ( Observable . just ( uri )) ĊĊĠĠĠĠĠĠĠ Ġgiven Mock RequestBuilder That Load s Bitmap For Parameters ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuri , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbitmap , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwidth , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheight ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġunder Test . onCreate () ĊĊĠĠĠĠĠĠĠ Ġval Ġo Ġ= Ġunder Test . observe Background (). test () ĊĊĠĠĠĠĠĠĠ Ġunder Test . set Dimensions ( width , Ġheight ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ Ġo . assert Value ( Optional ( bitmap )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġre loads Background Image On Dimensions Change () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġval Ġuri Ġ= Ġ" uri " ĊĠĠĠĠĠĠĠ Ġval Ġbitmap : ĠBitmap Ġ= Ġmock () ĊĠĠĠĠĠĠĠ Ġwhenever ( settings . observe Background Uri ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. thenReturn ( Observable . just ( uri )) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġunder Test . onCreate () ĊĊĠĠĠĠĠĠĠ Ġval Ġo Ġ= Ġunder Test . observe Background (). test () ĊĊĠĠĠĠĠĠĠ Ġgiven Mock RequestBuilder That Load s Bitmap For Parameters ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuri , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbitmap , ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġunder Test . set Dimensions ( 1 , Ġ 1 ) ĊĊĠĠĠĠĠĠĠ Ġgiven Mock RequestBuilder That Load s Bitmap For Parameters ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuri , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbitmap , ĊĠĠĠĠĠĠĠĠĠĠĠĠ 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠ 2 ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġunder Test . set Dimensions ( 2 , Ġ 2 ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ Ġo . assert Values ( Optional ( bitmap ), ĠOptional ( bitmap )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġre loads Background Image On Uri Change () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġval Ġuri 1 Ġ= Ġ" uri 1 " ĊĠĠĠĠĠĠĠ Ġval Ġuri 2 Ġ= Ġ" uri 2 " ĊĊĠĠĠĠĠĠĠ Ġval Ġbitmap 1 : ĠBitmap Ġ= Ġmock () ĊĠĠĠĠĠĠĠ Ġval Ġbitmap 2 : ĠBitmap Ġ= Ġmock () ĊĊĠĠĠĠĠĠĠ Ġval Ġwidth Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġval Ġheight Ġ= Ġ 2 ĊĊĠĠĠĠĠĠĠ Ġval Ġuri Subject Ġ= ĠBehavior Subject . create < String >() ĊĠĠĠĠĠĠĠ Ġuri Subject . onNext ( uri 1 ) ĊĊĠĠĠĠĠĠĠ Ġwhenever ( settings . observe Background Uri ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. thenReturn ( uri Subject ) ĊĊĠĠĠĠĠĠĠ Ġgiven Mock RequestBuilder That Load s Bitmap For Parameters ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuri 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbitmap 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwidth , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheight ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġunder Test . onCreate () ĊĊĠĠĠĠĠĠĠ Ġval Ġo Ġ= Ġunder Test . observe Background (). test () ĊĊĠĠĠĠĠĠĠ Ġunder Test . set Dimensions ( width , Ġheight ) ĊĊĠĠĠĠĠĠĠ Ġgiven Mock RequestBuilder That Load s Bitmap For Parameters ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuri 2 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbitmap 2 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwidth , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheight ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġuri Subject . onNext ( uri 2 ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ Ġo . assert Values ( Optional ( bitmap 1 ), ĠOptional ( bitmap 2 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġgiven Mock RequestBuilder That Load s Bitmap For Parameters ( ĊĠĠĠĠĠĠĠ Ġuri : ĠString , ĊĠĠĠĠĠĠĠ Ġbitmap : ĠBitmap , ĊĠĠĠĠĠĠĠ Ġwidth : ĠInt , ĊĠĠĠĠĠĠĠ Ġheight : ĠInt ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrequest Builder : ĠRequest Builder < Bitmap > Ġ= Ġmock () ĊĠĠĠĠĠĠĠ Ġwhenever ( request Builder . apply ( any ())). thenReturn ( request Builder ) ĊĠĠĠĠĠĠĠ Ġwhenever ( request Builder . load ( uri )). thenReturn ( request Builder ) ĊĊĠĠĠĠĠĠĠ Ġval Ġfuture Target : ĠFuture Target < Bitmap > Ġ= Ġmock Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Ġ{ Ġit . get () Ġ}. thenReturn ( bitmap ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġwhenever ( request Builder . submit ( width , Ġheight )). thenReturn ( future Target ) ĊĊĠĠĠĠĠĠĠ Ġwhenever ( request Manager . as Bitmap ()). thenReturn ( request Builder ) ĊĠĠĠ Ġ} Ċ } Ċ