package Ġco il . request Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Context Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . ImageView . Scale Type . CENTER Ċ import Ġandroid . widget . ImageView . Scale Type . MATRIX Ċ import Ġandroidx . test . core . app . Application Provider Ċ import Ġco il . Image Loader Ċ import Ġco il . lifecycle . Fake Lifecycle Ċ import Ġco il . size . Precision Ċ import Ġco il . size . Scale Ċ import Ġco il . size . Size Ċ import Ġco il . size . View Size Resolver Ċ import Ġco il . transition . Cross fade Transition Ċ import Ġco il . transition . Transition Ċ import Ġco il . util . scale Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . Experimental Cor outines Api Ċ import Ġkotlinx . coroutines . test . run Test Ċ 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 . assertNot Equals Ċ import Ġkotlin . test . assertNot Same Ċ import Ġkotlin . test . assertSame Ċ import Ġkotlin . test . assertTrue Ċ Ċ @ Opt In ( Experimental Cor outines Api :: class ) Ċ @ RunWith ( Ro bo lectric TestRunner :: class ) Ċ class ĠImage Request Test Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġcontext : ĠContext ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun Ġbefore () Ġ{ ĊĠĠĠĠĠĠĠ Ġcontext Ġ= ĠApplication Provider . getApplicationContext () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠRegression Ġtest : Ġhttps :// github . com / co il - kt / co il / issues / 2 2 1 Ġ*/ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` cross fade Ġfalse Ġcreates Ġnone Ġtransition `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġimage Loader Ġ= ĠImage Loader . Builder ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. cross fade ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠImage Request . Builder ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. cross fade ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( Transition . Factory . NONE , Ġrequest . transition Factory ) ĊĊĠĠĠĠĠĠĠ Ġimage Loader . shutdown () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` changing Ġcontext Ġresets Ġresolved Ġvalues `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠImage Request . Builder ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. data (" https :// www . example . com / image . jpg ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ ĠassertSame ( request . size Resolver , Ġrequest . newBuilder (). build (). size Resolver ) ĊĠĠĠĠĠĠĠ Ġassert Not Same ( request . size Resolver , Ġrequest . newBuilder ( Activity ()). build (). size Resolver ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` changing Ġtarget Ġresets Ġresolved Ġvalues `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠimageView Ġ= ĠImageView ( context ) ĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠImage Request . Builder ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. data (" https :// www . example . com / image . jpg ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. target ( imageView ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ Ġval Ġsize Resolver Ġ= Ġrequest . size Resolver ĊĠĠĠĠĠĠĠ ĠassertTrue ( size Resolver Ġis ĠView Size Resolver < *> Ġ&& Ġsize Resolver . view Ġ=== ĠimageView ) ĊĠĠĠĠĠĠĠ ĠassertSame ( size Resolver , Ġrequest . newBuilder (). build (). size Resolver ) ĊĠĠĠĠĠĠĠ Ġassert Not Same ( size Resolver , Ġrequest . newBuilder (). target ( ImageView ( context )). build (). size Resolver ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` changing Ġsize Ġresolver Ġresets Ġresolved Ġvalues `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠimageView Ġ= ĠImageView ( context ) ĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠImage Request . Builder ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. data (" https :// www . example . com / image . jpg ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. size ( 1 0 0 , Ġ 1 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. target ( imageView ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( Scale . FIT , ĠimageView . scale ) ĊĊĠĠĠĠĠĠĠ ĠimageView . scale Type Ġ= ĠImageView . Scale Type . CENTER _ C ROP ĊĊĠĠĠĠĠĠĠ ĠassertSame ( request . scale , Ġrequest . newBuilder (). build (). scale ) ĊĠĠĠĠĠĠĠ Ġassert Not Same ( request . scale , Ġrequest . newBuilder (). size ( 2 0 0 , Ġ 2 0 0 ). build (). scale ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` setting Ġdefaults Ġresets Ġresolved Ġscale Ġonly `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠimageView Ġ= ĠImageView ( context ) ĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠImage Request . Builder ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. data (" https :// www . example . com / image . jpg ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. size ( 1 0 0 , Ġ 1 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. target ( imageView ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( Scale . FIT , ĠimageView . scale ) ĊĊĠĠĠĠĠĠĠ ĠimageView . scale Type Ġ= ĠImageView . Scale Type . CENTER _ C ROP ĊĊĠĠĠĠĠĠĠ Ġval Ġnew Request Ġ= Ġrequest . newBuilder (). defaults ( Default RequestOptions ()). build () ĊĠĠĠĠĠĠĠ ĠassertSame ( request . lifecycle , Ġnew Request . lifecycle ) ĊĠĠĠĠĠĠĠ ĠassertSame ( request . size Resolver , Ġnew Request . size Resolver ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Scale . FILL , Ġnew Request . scale ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` defined Ġvalues Ġare Ġnot Ġreplaced `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlifecycle Ġ= ĠFake Lifecycle () ĊĠĠĠĠĠĠĠ Ġval ĠimageView Ġ= ĠImageView ( context ) ĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠImage Request . Builder ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. data (" https :// www . example . com / image . jpg ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. size ( 1 0 0 , Ġ 1 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. scale ( Scale . FILL ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. lifecycle ( lifecycle ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. target ( imageView ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ Ġval Ġnew Request Ġ= Ġrequest . newBuilder ( Activity ()). build () ĊĠĠĠĠĠĠĠ ĠassertSame ( request . lifecycle , Ġnew Request . lifecycle ) ĊĠĠĠĠĠĠĠ ĠassertSame ( request . size Resolver , Ġnew Request . size Resolver ) ĊĠĠĠĠĠĠĠ ĠassertSame ( request . scale , Ġnew Request . scale ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` defaults Ġfill Ġunset Ġvalues `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdefaults Ġ= ĠDefault RequestOptions ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdecoder Dispatcher Ġ= ĠDispatch ers . Un conf ined , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtransition Factory Ġ= ĠCross fade Transition . Factory (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprecision Ġ= ĠPrecision . EX ACT ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval ĠimageView Ġ= ĠImageView ( context ) ĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠImage Request . Builder ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. data (" https :// www . example . com / image . jpg ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. target ( imageView ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. defaults ( defaults ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ ĠassertSame ( defaults . decoder Dispatcher , Ġrequest . decoder Dispatcher ) ĊĠĠĠĠĠĠĠ ĠassertSame ( defaults . transition Factory , Ġrequest . transition Factory ) ĊĠĠĠĠĠĠĠ ĠassertSame ( defaults . precision , Ġrequest . precision ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` equals Ġand ĠhashCode Ġare Ġimplemented `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠimageView Ġ= ĠImageView ( context ) ĊĠĠĠĠĠĠĠ Ġval Ġrequest 1 Ġ= ĠImage Request . Builder ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. data (" https :// www . example . com / image . jpg ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. target ( imageView ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. allow Hardware ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠ Ġval Ġrequest 2 Ġ= ĠImage Request . Builder ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. data (" https :// www . example . com / image . jpg ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. target ( imageView ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. allow Hardware ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( request 1 , Ġrequest 2 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( request 1 . hashCode (), Ġrequest 2 . hashCode ()) ĊĊĠĠĠĠĠĠĠ Ġval Ġrequest 3 Ġ= Ġrequest 2 . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. allow Hardware ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ Ġassert Not Equals ( request 1 , Ġrequest 3 ) ĊĠĠĠĠĠĠĠ Ġassert Not Equals ( request 1 . hashCode (), Ġrequest 3 . hashCode ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` ImageView Ġwith Ġscale Ġtype ĠMAT RIX Ġor ĠC ENTER Ġshould Ġdefault Ġto Ġoriginal Ġsize `() Ġ= Ġrun Test Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrequest 1 Ġ= ĠImage Request . Builder ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. data (" https :// www . example . com / image . jpg ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. target ( ImageView ( context ). apply Ġ{ Ġscale Type Ġ= ĠMAT RIX Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠ Ġval Ġrequest 2 Ġ= ĠImage Request . Builder ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. data (" https :// www . example . com / image . jpg ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. target ( ImageView ( context ). apply Ġ{ Ġscale Type Ġ= ĠC ENTER Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠ Ġval Ġrequest 3 Ġ= ĠImage Request . Builder ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. data (" https :// www . example . com / image . jpg ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. target ( ImageView ( context ). apply Ġ{ Ġscale Type Ġ= ĠMAT RIX Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. size ( 1 0 0 , Ġ 1 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠ Ġval Ġrequest 4 Ġ= ĠImage Request . Builder ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. data (" https :// www . example . com / image . jpg ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. target ( ImageView ( context ). apply Ġ{ Ġscale Type Ġ= ĠC ENTER Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. size ( 1 0 0 , Ġ 1 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( Size . ORIGIN AL , Ġrequest 1 . size Resolver . size ()) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Size . ORIGIN AL , Ġrequest 2 . size Resolver . size ()) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Size ( 1 0 0 , Ġ 1 0 0 ), Ġrequest 3 . size Resolver . size ()) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Size ( 1 0 0 , Ġ 1 0 0 ), Ġrequest 4 . size Resolver . size ()) ĊĠĠĠ Ġ} Ċ } Ċ