package Ġcom . jack po cket . scratch off Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Bitmap Ċ import Ġandroid . graphics . Canvas Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . graphics . Paint Ċ import Ġandroid . view . Motion Event Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . test . ext . junit . runners . Android JUnit 4 Ċ import Ġandroidx . test . platform . app . Instrumentation Registry Ċ import Ġcom . jack po cket . scratch off . paths . Scratch Path Manager Ċ import Ġcom . jack po cket . scratch off . paths . Scratch Path Point Ċ import Ġcom . jack po cket . scratch off . tools . Threshold Calculator Ċ import Ġcom . jack po cket . scratch off . views . Scratch able LinearLayout Ċ import Ġorg . junit . Assert . assertEquals Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . runner . RunWith Ċ Ċ @ RunWith ( Android JUnit 4 :: class ) Ċ class ĠScr atch able Layout Drawer Tests Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġcontext : ĠContext Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠInstrument ation Registry . get Instrumentation (). context ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Sets Up And Draw s Correct ly Then Stops Drawing After Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠBitmap . create Bitmap ( 1 0 , Ġ 1 0 , ĠBitmap . Config . ARGB _ 8 8 8 8 ) ĊĠĠĠĠĠĠĠ Ġval Ġresult Canvas Ġ= ĠCanvas ( result ) ĊĠĠĠĠĠĠĠ Ġval Ġfull Size Region Ġ= ĠThreshold Calculator . create Full Size Threshold Region ( result ) ĊĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= ĠView ( context ) ĊĠĠĠĠĠĠĠ Ġview . layout ( 0 , Ġ 0 , Ġ 1 0 , Ġ 1 0 ) ĊĠĠĠĠĠĠĠ Ġview . set BackgroundColor ( Color . WHITE ) ĊĊĠĠĠĠĠĠĠ Ġval Ġdrawer Ġ= Ġobject : ĠScr atch able Layout Drawer ( null ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcreate Clear Paint ( touch Radius Px : ĠInt ): ĠPaint Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠScr atch Path Manager . create Base Scratch off Paint ( touch Radius Px ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply ({ Ġthis . color Ġ= ĠColor . BLACK Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġenqueue View Initialization On Global Layout ( scratch View : ĠView ?, Ġbehind View : ĠView ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠP ret end Ġwe Ġdid Ġthis ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġdrawer . attach ( 1 , Ġview , Ġnull ) ĊĠĠĠĠĠĠĠ Ġdrawer . initialize La id Out Scratch ableView ( view ) ĊĠĠĠĠĠĠĠ Ġdrawer . add Scratch Path Points ( listOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠScr atch Path Point ( 0 , Ġ 0 f , Ġ 0 f , ĠMotion Event . ACTION _ DOWN ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠScr atch Path Point ( 0 , Ġ 0 f , Ġ 1 0 f , ĠMotion Event . ACTION _ MOVE ) ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠ Ġdrawer . draw ( result Canvas ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 . 1 f , ĠThreshold Calculator ( Color . WHITE ). calculate ( result , Ġfull Size Region )) ĊĊĠĠĠĠĠĠĠ Ġdrawer . destroy () ĊĊĠĠĠĠĠĠĠ Ġdrawer . add Scratch Path Points ( listOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠScr atch Path Point ( 0 , Ġ 1 0 f , Ġ 0 f , ĠMotion Event . ACTION _ DOWN ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠScr atch Path Point ( 0 , Ġ 1 0 f , Ġ 1 0 f , ĠMotion Event . ACTION _ MOVE ) ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠ Ġdrawer . draw ( result Canvas ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 . 1 f , ĠThreshold Calculator ( Color . WHITE ). calculate ( result , Ġfull Size Region )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Clear With Animation Disabled Calls Hide And Mark Cle ared () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġhide And Mark Cle ared Count : ĠInt Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġval Ġdrawer Ġ= Ġobject : ĠScr atch able Layout Drawer ( null ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġhide And Mark Scratch able Surface View Cle ared () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhide And Mark Cle ared Count Ġ+= Ġ 1 ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . hide And Mark Scratch able Surface View Cle ared () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġdrawer . clear ( false ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġhide And Mark Cle ared Count ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Clear With Animation Enabled Calls Fade Out Flow () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġfade Out Count : ĠInt Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġval Ġdrawer Ġ= Ġobject : ĠScr atch able Layout Drawer ( null ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġperform Fade Out Clear () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfade Out Count Ġ+= Ġ 1 ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . perform Fade Out Clear () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġdrawer . clear ( true ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġfade Out Count ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Clear Animation Completed Calls Hide And Mark Cle ared When Tag Matches () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= ĠScr atch able LinearLayout ( context ) ĊĠĠĠĠĠĠĠ Ġvar Ġhide And Mark Cle ared Count : ĠInt Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġval Ġdrawer Ġ= Ġobject : ĠScr atch able Layout Drawer ( null ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġenqueue View Initialization On Global Layout ( scratch View : ĠView ?, Ġbehind View : ĠView ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠP ret end Ġthis Ġhappened ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġhide And Mark Scratch able Surface View Cle ared () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhide And Mark Cle ared Count Ġ+= Ġ 1 ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . hide And Mark Scratch able Surface View Cle ared () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġdrawer . attach ( 1 , Ġview , Ġnull ) ĊĠĠĠĠĠĠĠ Ġdrawer . clear ( true ) ĊĊĠĠĠĠĠĠĠ Ġdrawer . claim Clear Animation ( view , Ġ 1 ) ĊĊĠĠĠĠĠĠĠ Ġview . setTag ( R . id . scratch __ clear _ animation _ tag , Ġ 0 ) ĊĊĠĠĠĠĠĠĠ Ġdrawer . on Animation End ( null ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġhide And Mark Cle ared Count ) ĊĊĠĠĠĠĠĠĠ Ġdrawer . claim Clear Animation ( view , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġdrawer . on Animation End ( null ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġhide And Mark Cle ared Count ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Layout Param Matches Width And Height On Global Layout () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbehind View Ġ= ĠView ( context ) ĊĠĠĠĠĠĠĠ Ġbehind View . layout ( 0 , Ġ 0 , Ġ 1 0 , Ġ 2 0 ) ĊĊĠĠĠĠĠĠĠ Ġval Ġscratch View Ġ= ĠScr atch able LinearLayout ( context ) ĊĠĠĠĠĠĠĠ Ġscratch View . layout Params Ġ= ĠViewGroup . LayoutParams ( 1 , Ġ 1 ) ĊĊĠĠĠĠĠĠĠ Ġval Ġdrawer Ġ= ĠScr atch able Layout Drawer ( null ) ĊĠĠĠĠĠĠĠ Ġdrawer . perform Layout Dimension Matching ( scratch View , Ġbehind View ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 0 , Ġscratch View . layout Params . width ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 0 , Ġscratch View . layout Params . height ) ĊĠĠĠ Ġ} Ċ }