package Ġco il . intercept Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Bitmap Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . graphics . drawable . Bitmap Drawable Ċ import Ġandroid . graphics . drawable . Color Drawable Ċ import Ġandroidx . test . core . app . Application Provider Ċ import Ġco il . Component Registry Ċ import Ġco il . EventListener Ċ import Ġco il . Image Loader Ċ import Ġco il . Real Image Loader Ċ import Ġco il . annotation . Experimental Co il Api Ċ import Ġco il . bitmap . Bitmap Pool Ċ import Ġco il . bitmap . Real Bitmap Reference Counter Ċ import Ġco il . decode . DataSource Ċ import Ġco il . decode . Drawable Decoder Service Ċ import Ġco il . decode . Options Ċ import Ġco il . fetch . Drawable Result Ċ import Ġco il . fetch . Fetcher Ċ import Ġco il . memory . Memory Cache . Key Ċ import Ġco il . memory . Memory Cache Service Ċ import Ġco il . memory . Real Memory Cache Ċ import Ġco il . memory . Real Weak Memory Cache Ċ import Ġco il . memory . Request Service Ċ import Ġco il . memory . Strong Memory Cache Ċ import Ġco il . request . Image Request Ċ import Ġco il . request . Parameters Ċ import Ġco il . size . Original Size Ċ import Ġco il . size . Pixel Size Ċ import Ġco il . size . Precision Ċ import Ġco il . size . Scale Ċ import Ġco il . size . Size Ċ import Ġco il . transform . Circle Crop Transformation Ċ import Ġco il . transform . Transformation Ċ import Ġco il . util . System Callbacks Ċ import Ġco il . util . create Bitmap Ċ import Ġco il . util . create Options Ċ import Ġco il . util . create Request Ċ import Ġco il . util . invoke Ċ import Ġco il . util . size Ċ import Ġkotlinx . coroutines . run Blocking Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . runner . RunWith Ċ import Ġorg . ro bo lectric . Ro bo lectric TestRunner Ċ import Ġkotlin . test . assertEquals Ċ import Ġkotlin . test . assertFalse Ċ import Ġkotlin . test . assertNull Ċ import Ġkotlin . test . assertSame Ċ import Ġkotlin . test . assertTrue Ċ import Ġkotlin . test . fail Ċ Ċ @ RunWith ( Ro bo lectric TestRunner :: class ) Ċ @ Opt In ( Experimental Co il Api :: class ) Ċ class ĠEngine Interceptor Test Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġcontext : ĠContext ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġstrong Memory Cache : ĠStr ong Memory Cache ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġinterceptor : ĠEngine Interceptor ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun Ġbefore () Ġ{ ĊĠĠĠĠĠĠĠ Ġcontext Ġ= ĠApplication Provider . getApplicationContext () ĊĠĠĠĠĠĠĠ Ġval Ġbitmap Pool Ġ= ĠBitmap Pool ( Int . MAX _ VALUE ) ĊĠĠĠĠĠĠĠ Ġval Ġweak Memory Cache Ġ= ĠReal Weak Memory Cache ( null ) ĊĠĠĠĠĠĠĠ Ġval Ġreference Counter Ġ= ĠReal Bitmap Reference Counter ( weak Memory Cache , Ġbitmap Pool , Ġnull ) ĊĠĠĠĠĠĠĠ Ġstrong Memory Cache Ġ= ĠStr ong Memory Cache ( weak Memory Cache , Ġreference Counter , ĠInt . MAX _ VALUE , Ġnull ) ĊĠĠĠĠĠĠĠ Ġinterceptor Ġ= ĠEngine Interceptor ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġregistry Ġ= ĠComponent Registry (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbitmap Pool Ġ= Ġbitmap Pool , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreference Counter Ġ= Ġreference Counter , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstrong Memory Cache Ġ= Ġstrong Memory Cache , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmemory Cache Service Ġ= ĠMemory Cache Service ( reference Counter , Ġstrong Memory Cache , Ġweak Memory Cache ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Service Ġ= ĠRequest Service ( null ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsystem Callbacks Ġ= ĠSystem Callbacks ( Image Loader ( context ) Ġas ĠReal Image Loader , Ġcontext ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdrawable Decoder Ġ= ĠDrawable Decoder Service ( bitmap Pool ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` compute Memory CacheKey Ġ- Ġnull Ġkey `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= Ġcreate Request ( context ) ĊĠĠĠĠĠĠĠ Ġval Ġfetch er Ġ= Ġcreate Fake Fetcher ( key Ġ= Ġnull ) ĊĠĠĠĠĠĠĠ Ġval Ġsize Ġ= ĠOriginal Size ĊĠĠĠĠĠĠĠ Ġval Ġkey Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinterceptor . compute Memory CacheKey ( request , ĠUnit , Ġfetch er , Ġsize ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertNull ( key ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` compute Memory CacheKey Ġ- Ġsimple Ġkey `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= Ġcreate Request ( context ) ĊĠĠĠĠĠĠĠ Ġval Ġfetch er Ġ= Ġcreate Fake Fetcher () ĊĠĠĠĠĠĠĠ Ġval Ġsize Ġ= ĠOriginal Size ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinterceptor . compute Memory CacheKey ( request , ĠUnit , Ġfetch er , Ġsize ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( Key (" base _ key ", ĠParameters . EMPTY ), Ġresult ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` compute Memory CacheKey Ġ- Ġparams Ġonly `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparameters Ġ= Ġcreate Fake Parameters () ĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= Ġcreate Request ( context ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparameters ( parameters ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġfetch er Ġ= Ġcreate Fake Fetcher () ĊĠĠĠĠĠĠĠ Ġval Ġsize Ġ= ĠOriginal Size ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinterceptor . compute Memory CacheKey ( request , ĠUnit , Ġfetch er , Ġsize ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( Key (" base _ key ", Ġparameters ), Ġresult ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` compute Memory CacheKey Ġ- Ġtransformations Ġonly `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtransformations Ġ= Ġcreate Fake Transform ations () ĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= Ġcreate Request ( context ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtransformations ( transform ations ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġfetch er Ġ= Ġcreate Fake Fetcher () ĊĠĠĠĠĠĠĠ Ġval Ġsize Ġ= ĠPixel Size ( 1 2 3 , Ġ 3 3 2 ) ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinterceptor . compute Memory CacheKey ( request , ĠUnit , Ġfetch er , Ġsize ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( Key (" base _ key ", Ġtransformations , Ġsize , ĠParameters . EMPTY ), Ġresult ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` compute Memory CacheKey Ġ- Ġcomplex Ġkey `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparameters Ġ= Ġcreate Fake Parameters () ĊĠĠĠĠĠĠĠ Ġval Ġtransformations Ġ= Ġcreate Fake Transform ations () ĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= Ġcreate Request ( context ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparameters ( parameters ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtransformations ( transform ations ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġfetch er Ġ= Ġcreate Fake Fetcher () ĊĠĠĠĠĠĠĠ Ġval Ġsize Ġ= ĠOriginal Size ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinterceptor . compute Memory CacheKey ( request , ĠUnit , Ġfetch er , Ġsize ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( Key (" base _ key ", Ġtransformations , Ġsize , Ġparameters ), Ġresult ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` is Cached Value Valid Ġ- Ġfill `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= Ġcreate Request ( context ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsize ( 1 0 0 , Ġ 1 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprecision ( Precision . IN EX ACT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscale ( Scale . FILL ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġcached Ġ= Ġcreate Bitmap () ĊĠĠĠĠĠĠĠ ĠassertFalse ( interceptor . is Cached Value Valid ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcached Ġ= Ġcached , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Sample d Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Ġ= Ġrequest , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsize Ġ= ĠPixel Size ( 2 0 0 , Ġ 2 0 0 ) ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠ ĠassertFalse ( interceptor . is Cached Value Valid ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcached Ġ= Ġcached , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Sample d Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Ġ= Ġrequest , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsize Ġ= ĠPixel Size ( 1 5 0 , Ġ 5 0 ) ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠ ĠassertTrue ( interceptor . is Cached Value Valid ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcached Ġ= Ġcached , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Sample d Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Ġ= Ġrequest , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsize Ġ= ĠPixel Size ( 1 0 0 , Ġ 1 0 0 ) ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠ ĠassertTrue ( interceptor . is Cached Value Valid ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcached Ġ= Ġcached , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Sample d Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Ġ= Ġrequest , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsize Ġ= ĠPixel Size ( 5 0 , Ġ 1 0 0 ) ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠ ĠassertTrue ( interceptor . is Cached Value Valid ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcached Ġ= Ġcached , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Sample d Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Ġ= Ġrequest , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsize Ġ= ĠPixel Size ( 5 0 , Ġ 5 0 ) ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠ ĠassertTrue ( interceptor . is Cached Value Valid ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcached Ġ= Ġcreate Bitmap ( width Ġ= Ġ 4 0 0 , Ġheight Ġ= Ġ 2 0 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Sample d Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Ġ= Ġrequest , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsize Ġ= ĠPixel Size ( 4 0 0 , Ġ 2 0 0 ) ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` is Cached Value Valid Ġ- Ġfit `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= Ġcreate Request ( context ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsize ( 1 0 0 , Ġ 1 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprecision ( Precision . IN EX ACT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscale ( Scale . FIT ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġcached Ġ= Ġcreate Bitmap () ĊĠĠĠĠĠĠĠ ĠassertFalse ( interceptor . is Cached Value Valid ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcached Ġ= Ġcached , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Sample d Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Ġ= Ġrequest , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsize Ġ= ĠPixel Size ( 2 0 0 , Ġ 2 0 0 ) ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠ ĠassertTrue ( interceptor . is Cached Value Valid ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcached Ġ= Ġcached , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Sample d Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Ġ= Ġrequest , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsize Ġ= ĠPixel Size ( 1 5 0 , Ġ 5 0 ) ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠ ĠassertTrue ( interceptor . is Cached Value Valid ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcached Ġ= Ġcached , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Sample d Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Ġ= Ġrequest , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsize Ġ= ĠPixel Size ( 1 0 0 , Ġ 1 0 0 ) ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠ ĠassertTrue ( interceptor . is Cached Value Valid ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcached Ġ= Ġcached , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Sample d Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Ġ= Ġrequest , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsize Ġ= ĠPixel Size ( 5 0 , Ġ 1 0 0 ) ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠ ĠassertTrue ( interceptor . is Cached Value Valid ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcached Ġ= Ġcached , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Sample d Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Ġ= Ġrequest , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsize Ġ= ĠPixel Size ( 5 0 , Ġ 5 0 ) ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠ ĠassertFalse ( interceptor . is Cached Value Valid ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcached Ġ= Ġcreate Bitmap ( width Ġ= Ġ 2 0 0 , Ġheight Ġ= Ġ 4 0 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Sample d Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Ġ= Ġrequest , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsize Ġ= ĠPixel Size ( 4 0 0 , Ġ 8 0 0 ) ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` is Cached Value Valid Ġ- Ġsmall Ġnot Ġsampled Ġcached Ġdrawable Ġis Ġvalid `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcached Ġ= Ġcreate Bitmap () ĊĠĠĠĠĠĠĠ Ġval ĠisValid Ġ= Ġinterceptor . is Cached Value Valid ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcached Ġ= Ġcached , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Sample d Ġ= Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Ġ= Ġcreate Request ( context ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprecision ( Precision . IN EX ACT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscale ( Scale . FILL ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsize Ġ= ĠPixel Size ( 2 0 0 , Ġ 2 0 0 ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( isValid ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` is Cached Value Valid Ġ- Ġallow Hardware = false Ġprevents Ġusing Ġcached Ġhardware Ġbitmap `() Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġis Bitmap Config Valid ( config : ĠBitmap . Config ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcached Ġ= Ġcreate Bitmap ( config Ġ= Ġconfig ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġinterceptor . is Cached Value Valid ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcached Ġ= Ġcached , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Sample d Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Ġ= Ġcreate Request ( context ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġallow Hardware ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscale ( Scale . FILL ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsize Ġ= ĠPixel Size ( 1 0 0 , Ġ 1 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertFalse ( is Bitmap Config Valid ( Bitmap . Config . HARD WARE )) ĊĠĠĠĠĠĠĠ ĠassertTrue ( is Bitmap Config Valid ( Bitmap . Config . RGBA _ F 1 6 )) ĊĠĠĠĠĠĠĠ ĠassertTrue ( is Bitmap Config Valid ( Bitmap . Config . ARGB _ 8 8 8 8 )) ĊĠĠĠĠĠĠĠ ĠassertTrue ( is Bitmap Config Valid ( Bitmap . Config . RGB _ 5 6 5 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` is Cached Value Valid Ġ- Ġexact Ġprecision `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertFalse ( interceptor . is Cached Value Valid ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcached Ġ= Ġcreate Bitmap ( width Ġ= Ġ 1 0 0 , Ġheight Ġ= Ġ 1 0 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Sample d Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Ġ= Ġcreate Request ( context ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprecision ( Precision . EX ACT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscale ( Scale . FILL ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsize Ġ= ĠPixel Size ( 5 0 , Ġ 5 0 ) ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠ ĠassertFalse ( interceptor . is Cached Value Valid ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcached Ġ= Ġcreate Bitmap ( width Ġ= Ġ 1 0 0 , Ġheight Ġ= Ġ 1 0 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Sample d Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Ġ= Ġcreate Request ( context ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprecision ( Precision . EX ACT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscale ( Scale . FIT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsize Ġ= ĠPixel Size ( 5 0 , Ġ 5 0 ) ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠ ĠassertTrue ( interceptor . is Cached Value Valid ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcached Ġ= Ġcreate Bitmap ( width Ġ= Ġ 1 0 0 , Ġheight Ġ= Ġ 1 0 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Sample d Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Ġ= Ġcreate Request ( context ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprecision ( Precision . EX ACT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscale ( Scale . FILL ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsize Ġ= ĠPixel Size ( 1 0 0 , Ġ 5 0 ) ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠ ĠassertFalse ( interceptor . is Cached Value Valid ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcached Ġ= Ġcreate Bitmap ( width Ġ= Ġ 1 0 0 , Ġheight Ġ= Ġ 1 0 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Sample d Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Ġ= Ġcreate Request ( context ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprecision ( Precision . EX ACT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscale ( Scale . FIT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsize Ġ= ĠPixel Size ( 1 0 0 , Ġ 5 0 ) ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠ ĠassertTrue ( interceptor . is Cached Value Valid ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcached Ġ= Ġcreate Bitmap ( width Ġ= Ġ 1 0 0 , Ġheight Ġ= Ġ 1 0 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Sample d Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Ġ= Ġcreate Request ( context ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprecision ( Precision . EX ACT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscale ( Scale . FILL ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsize Ġ= ĠPixel Size ( 1 0 0 , Ġ 1 0 0 ) ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠ ĠassertTrue ( interceptor . is Cached Value Valid ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcached Ġ= Ġcreate Bitmap ( width Ġ= Ġ 1 0 0 , Ġheight Ġ= Ġ 1 0 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Sample d Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Ġ= Ġcreate Request ( context ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprecision ( Precision . EX ACT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscale ( Scale . FIT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsize Ġ= ĠPixel Size ( 1 0 0 , Ġ 1 0 0 ) ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠ ĠassertTrue ( interceptor . is Cached Value Valid ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcached Ġ= Ġcreate Bitmap ( width Ġ= Ġ 4 0 0 , Ġheight Ġ= Ġ 2 0 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Sample d Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Ġ= Ġcreate Request ( context ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprecision ( Precision . EX ACT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscale ( Scale . FILL ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsize Ġ= ĠPixel Size ( 4 0 0 , Ġ 2 0 0 ) ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠ ĠassertFalse ( interceptor . is Cached Value Valid ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcached Ġ= Ġcreate Bitmap ( width Ġ= Ġ 2 0 0 , Ġheight Ġ= Ġ 4 0 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Sample d Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Ġ= Ġcreate Request ( context ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprecision ( Precision . EX ACT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscale ( Scale . FIT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsize Ġ= ĠPixel Size ( 4 0 0 , Ġ 8 0 0 ) ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` is Cached Value Valid Ġ- Ġone Ġpixel Ġoff `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertTrue ( interceptor . is Cached Value Valid ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcached Ġ= Ġcreate Bitmap ( width Ġ= Ġ 2 4 4 , Ġheight Ġ= Ġ 6 0 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Sample d Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Ġ= Ġcreate Request ( context ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprecision ( Precision . EX ACT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscale ( Scale . FIT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsize Ġ= ĠPixel Size ( 2 4 5 , Ġ 6 0 0 ) ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠ ĠassertTrue ( interceptor . is Cached Value Valid ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcached Ġ= Ġcreate Bitmap ( width Ġ= Ġ 2 4 4 , Ġheight Ġ= Ġ 6 0 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Sample d Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Ġ= Ġcreate Request ( context ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprecision ( Precision . IN EX ACT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscale ( Scale . FIT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsize Ġ= ĠPixel Size ( 2 4 5 , Ġ 6 0 0 ) ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠ ĠassertFalse ( interceptor . is Cached Value Valid ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcached Ġ= Ġcreate Bitmap ( width Ġ= Ġ 2 4 3 , Ġheight Ġ= Ġ 5 9 9 ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Sample d Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Ġ= Ġcreate Request ( context ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprecision ( Precision . EX ACT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscale ( Scale . FIT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsize Ġ= ĠPixel Size ( 2 4 5 , Ġ 6 0 0 ) ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠ ĠassertFalse ( interceptor . is Cached Value Valid ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcached Ġ= Ġcreate Bitmap ( width Ġ= Ġ 2 4 3 , Ġheight Ġ= Ġ 5 9 9 ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Sample d Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Ġ= Ġcreate Request ( context ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprecision ( Precision . IN EX ACT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscale ( Scale . FIT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsize Ġ= ĠPixel Size ( 2 4 5 , Ġ 6 0 0 ) ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` is Cached Value Valid Ġ- Ġtransformation Ġthat Ġreduces Ġsize Ġof Ġoutput Ġbitmap `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtransformations Ġ= ĠlistOf ( Circle Crop Transformation ()) ĊĠĠĠĠĠĠĠ Ġval Ġcached Size Ġ= ĠPixel Size ( 1 0 0 0 , Ġ 5 0 0 ) Ġ// ĠThe Ġsize Ġof Ġthe Ġprevious Ġrequest . ĊĠĠĠĠĠĠĠ Ġval Ġkey Ġ= ĠKey (" key ", Ġtransformations , Ġcached Size , ĠParameters . EMPTY ) ĊĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġobject Ġ: ĠReal Memory Cache . Value Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġval Ġbitmap Ġ= Ġcreate Bitmap ( width Ġ= Ġ 2 0 0 , Ġheight Ġ= Ġ 2 0 0 ) Ġ// ĠThe Ġsmall Ġcached Ġbitmap . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġval Ġis Sample d Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= Ġcreate Request ( context ) ĊĊĠĠĠĠĠĠĠ ĠassertTrue ( interceptor . is Cached Value Valid ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcache Key Ġ= Ġkey , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcache Value Ġ= Ġvalue , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Ġ= Ġrequest . newBuilder (). precision ( Precision . IN EX ACT ). scale ( Scale . FIT ). build (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsize Ġ= ĠPixel Size ( 6 5 0 , Ġ 4 0 0 ) ĊĠĠĠĠĠĠĠ Ġ)) ĊĊĠĠĠĠĠĠĠ ĠassertTrue ( interceptor . is Cached Value Valid ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcache Key Ġ= Ġkey , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcache Value Ġ= Ġvalue , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Ġ= Ġrequest . newBuilder (). precision ( Precision . EX ACT ). scale ( Scale . FIT ). build (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsize Ġ= ĠPixel Size ( 1 0 0 0 , Ġ 5 0 0 ) ĊĠĠĠĠĠĠĠ Ġ)) ĊĊĠĠĠĠĠĠĠ ĠassertFalse ( interceptor . is Cached Value Valid ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcache Key Ġ= Ġkey , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcache Value Ġ= Ġvalue , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Ġ= Ġrequest . newBuilder (). precision ( Precision . IN EX ACT ). scale ( Scale . FIT ). build (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsize Ġ= ĠPixel Size ( 1 5 0 0 , Ġ 1 0 0 0 ) ĊĠĠĠĠĠĠĠ Ġ)) ĊĊĠĠĠĠĠĠĠ ĠassertFalse ( interceptor . is Cached Value Valid ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcache Key Ġ= Ġkey , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcache Value Ġ= Ġvalue , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Ġ= Ġrequest . newBuilder (). precision ( Precision . EX ACT ). scale ( Scale . FIT ). build (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsize Ġ= ĠPixel Size ( 8 0 0 , Ġ 5 0 0 ) ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠEngine Interceptor . is Cached Value Valid ( ĊĠĠĠĠĠĠĠ Ġcached : ĠBitmap , ĊĠĠĠĠĠĠĠ Ġis Sample d : ĠBoolean , ĊĠĠĠĠĠĠĠ Ġrequest : ĠImage Request , ĊĠĠĠĠĠĠĠ Ġsize : ĠSize ĊĠĠĠ Ġ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġkey Ġ= ĠKey (" key ") ĊĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġobject Ġ: ĠReal Memory Cache . Value Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġval Ġbitmap Ġ= Ġcached ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġval Ġis Sample d Ġ= Ġis Sample d ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġis Cached Value Valid ( key , Ġvalue , Ġrequest , Ġsize ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` apply Transform ations Ġ- Ġtransformations Ġconvert Ġdrawable Ġto Ġbitmap `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdrawable Ġ= ĠColor Drawable ( Color . BLACK ) ĊĠĠĠĠĠĠĠ Ġval Ġsize Ġ= ĠPixel Size ( 1 0 0 , Ġ 1 0 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinterceptor . apply Transform ations ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= ĠDrawable Result ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdrawable Ġ= Ġdrawable , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Sample d Ġ= Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠdataSource Ġ= ĠDataSource . MEMORY ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Ġ= Ġcreate Request ( context ) Ġ{ Ġtransformations ( Circle Crop Transformation ()) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsize Ġ= Ġsize , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoptions Ġ= Ġcreate Options (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent Listener Ġ= ĠEvent Listener . NONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Drawable Ġ= Ġresult . drawable ĊĠĠĠĠĠĠĠ ĠassertTrue ( result Drawable Ġis ĠBitmap Drawable ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( result Drawable . bitmap . size , Ġsize ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` apply Transform ations Ġ- Ġempty Ġtransformations Ġdoes Ġnot Ġconvert Ġdrawable Ġto Ġbitmap `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdrawable Ġ= ĠColor Drawable ( Color . BLACK ) ĊĠĠĠĠĠĠĠ Ġval Ġsize Ġ= ĠPixel Size ( 1 0 0 , Ġ 1 0 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinterceptor . apply Transform ations ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= ĠDrawable Result ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdrawable Ġ= Ġdrawable , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Sample d Ġ= Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠdataSource Ġ= ĠDataSource . MEMORY ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Ġ= Ġcreate Request ( context ) Ġ{ Ġtransformations ( emptyList ()) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsize Ġ= Ġsize , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoptions Ġ= Ġcreate Options (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent Listener Ġ= ĠEvent Listener . NONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertSame ( drawable , Ġresult . drawable ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Fake Transform ations (): ĠList < Transformation > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠTransformation Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġkey () Ġ= Ġ" key 1 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġsuspend Ġfun Ġtransform ( pool : ĠBitmap Pool , Ġinput : ĠBitmap , Ġsize : ĠSize ) Ġ= Ġfail () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠTransformation Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġkey () Ġ= Ġ" key 2 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġsuspend Ġfun Ġtransform ( pool : ĠBitmap Pool , Ġinput : ĠBitmap , Ġsize : ĠSize ) Ġ= Ġfail () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Fake Parameters (): ĠParameters Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠParameters . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set (" key 1 ", Ġ" no _ cache ", Ġcache Key Ġ= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set (" key 2 ", Ġ" cached 2 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set (" key 3 ", Ġ" cached 3 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Fake Fetcher ( key : ĠString ? Ġ= Ġ" base _ key "): ĠFetch er < Any > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġobject Ġ: ĠFetch er < Any > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġkey ( data : ĠAny ) Ġ= Ġkey ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġsuspend Ġfun Ġfetch ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpool : ĠBitmap Pool , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata : ĠAny , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsize : ĠSize , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoptions : ĠOptions ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ= Ġfail () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ