/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 2 0 Ġpan pf Ġ< pan p fp an pf @ outlook . com > Ċ Ġ* Ċ Ġ* Ġ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 . github . pan pf . tools 4 a . view . k tx . test Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . graphics . Bitmap Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . ImageView Ċ import Ġandroidx . test . ext . junit . runners . Android JUnit 4 Ċ import Ġcom . github . pan pf . tools 4 a . display . k tx . getStatus Bar Height Ċ import Ġcom . github . pan pf . tools 4 a . run . Result Runnable Ċ import Ġcom . github . pan pf . tools 4 a . run . k tx . run On MainThread Ċ import Ġcom . github . pan pf . tools 4 a . run . k tx . run On MainThread Sync Ċ import Ġcom . github . pan pf . tools 4 a . run . k tx . run On MainThread Sync Result Ċ import Ġcom . github . pan pf . tools 4 a . test . k tx . getActivity Sync Ċ import Ġcom . github . pan pf . tools 4 a . test . k tx . launch Activity With Use Ċ import Ġcom . github . pan pf . tools 4 a . view . k tx .* Ċ import Ġorg . junit . Assert Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . runner . RunWith Ċ Ċ @ RunWith ( Android JUnit 4 :: class ) Ċ class ĠView x Test Ġ{ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Throws ( InterruptedException :: class ) ĊĠĠĠ Ġfun Ġtest Set Layout Size () Ġ{ ĊĠĠĠĠĠĠĠ ĠTest Activity :: class . launch Activity With Use Ġ{ Ġscenario Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġactivity Ġ= Ġscenario . getActivity Sync () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġview Ġ= Ġactivity . view ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertEquals ( ViewGroup . LayoutParams . MATCH _ PARENT . to Long (), Ġview . layout Params . width . to Long ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun On MainThread Ġ{ Ġview . setLayout Width ( 1 0 0 ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠThread . sleep ( 1 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertEquals ( 1 0 0 , Ġview . layout Params . width . to Long ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun On MainThread Ġ{ Ġview . setLayout Size ( ViewGroup . LayoutParams . MATCH _ PARENT , ĠViewGroup . LayoutParams . MATCH _ PARENT ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠThread . sleep ( 1 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew View 1 Ġ= Ġrun On MainThread Sync Result Ġ{ ĠView ( activity ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertNull ( new View 1 . layout Params ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun On MainThread Ġ{ Ġnew View 1 . setLayout Width ( 1 0 0 ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠThread . sleep ( 1 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertNull ( new View 1 . layout Params ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertEquals ( ViewGroup . LayoutParams . MATCH _ PARENT . to Long (), Ġview . layout Params . height . to Long ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun On MainThread Ġ{ Ġview . setLayout Height ( 3 0 0 ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠThread . sleep ( 1 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertEquals ( 3 0 0 , Ġview . layout Params . height . to Long ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun On MainThread Ġ{ Ġview . setLayout Size ( ViewGroup . LayoutParams . MATCH _ PARENT , ĠViewGroup . LayoutParams . MATCH _ PARENT ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠThread . sleep ( 1 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew View 2 Ġ= Ġrun On MainThread Sync Result Ġ{ ĠView ( activity ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertNull ( new View 2 . layout Params ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun On MainThread Ġ{ Ġnew View 2 . setLayout Height ( 3 0 0 ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠThread . sleep ( 1 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertNull ( new View 2 . layout Params ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertEquals ( ViewGroup . LayoutParams . MATCH _ PARENT . to Long (), Ġview . layout Params . width . to Long ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun On MainThread Ġ{ Ġview . setLayout Width Or Init Size ( 2 0 0 , Ġ 6 0 0 ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠThread . sleep ( 1 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertEquals ( 2 0 0 , Ġview . layout Params . width . to Long ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun On MainThread Ġ{ Ġview . setLayout Size ( ViewGroup . LayoutParams . MATCH _ PARENT , ĠViewGroup . LayoutParams . MATCH _ PARENT ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠThread . sleep ( 1 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew View 3 Ġ= Ġrun On MainThread Sync Result Ġ{ ĠView ( activity ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertNull ( new View 3 . layout Params ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun On MainThread Ġ{ Ġnew View 3 . setLayout Width Or Init Size ( 2 0 0 , Ġ 6 0 0 ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠThread . sleep ( 1 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertNotNull ( new View 3 . layout Params ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertEquals ( 2 0 0 , Ġnew View 3 . layout Params . width . to Long ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertEquals ( 6 0 0 , Ġnew View 3 . layout Params . height . to Long ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertEquals ( ViewGroup . LayoutParams . MATCH _ PARENT . to Long (), Ġview . layout Params . height . to Long ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun On MainThread Ġ{ Ġview . setLayout Height Or Init Size ( 2 0 0 , Ġ 6 0 0 ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠThread . sleep ( 1 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertEquals ( 6 0 0 , Ġview . layout Params . height . to Long ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun On MainThread Ġ{ Ġview . setLayout Size ( ViewGroup . LayoutParams . MATCH _ PARENT , ĠViewGroup . LayoutParams . MATCH _ PARENT ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠThread . sleep ( 1 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew View 4 Ġ= Ġrun On MainThread Sync Result Ġ{ ĠView ( activity ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertNull ( new View 4 . layout Params ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun On MainThread Ġ{ Ġnew View 4 . setLayout Height Or Init Size ( 2 0 0 , Ġ 6 0 0 ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠThread . sleep ( 1 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertNotNull ( new View 4 . layout Params ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertEquals ( 2 0 0 , Ġnew View 4 . layout Params . width . to Long ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertEquals ( 6 0 0 , Ġnew View 4 . layout Params . height . to Long ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertEquals ( 0 , Ġ( view . layout Params Ġas ĠViewGroup . Margin LayoutParams ). top Margin . to Long ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun On MainThread Ġ{ Ġview . setLayout Margin Top ( 2 0 0 ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠThread . sleep ( 1 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertEquals ( 2 0 0 , Ġ( view . layout Params Ġas ĠViewGroup . Margin LayoutParams ). top Margin . to Long ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Throws ( InterruptedException :: class ) ĊĠĠĠ Ġfun Ġtest Add Layout Size () Ġ{ ĊĠĠĠĠĠĠĠ ĠTest Activity :: class . launch Activity With Use Ġ{ Ġscenario Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġactivity Ġ= Ġscenario . getActivity Sync () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġview Ġ= Ġactivity . view ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun On MainThread Ġ{ Ġview . setLayout Size ( 1 0 0 , Ġ 3 0 0 ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠThread . sleep ( 1 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertEquals ( 1 0 0 , Ġview . layout Params . width . to Long ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertEquals ( 3 0 0 , Ġview . layout Params . height . to Long ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun On MainThread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . add Layout Width ( 1 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . add Layout Height ( 1 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠThread . sleep ( 1 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertEquals ( 2 0 0 , Ġview . layout Params . width . to Long ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertEquals ( 4 0 0 , Ġview . layout Params . height . to Long ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun On MainThread Ġ{ Ġview . add Layout Size ( 1 0 0 , Ġ 1 0 0 ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠThread . sleep ( 1 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertEquals ( 3 0 0 , Ġview . layout Params . width . to Long ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertEquals ( 5 0 0 , Ġview . layout Params . height . to Long ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertEquals ( 0 , Ġ( view . layout Params Ġas ĠViewGroup . Margin LayoutParams ). top Margin . to Long ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun On MainThread Ġ{ Ġview . setLayout Margin Top ( 2 0 0 ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠThread . sleep ( 1 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertEquals ( 2 0 0 , Ġ( view . layout Params Ġas ĠViewGroup . Margin LayoutParams ). top Margin . to Long ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun On MainThread Ġ{ Ġview . add Layout Margin Top ( 2 0 0 ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠThread . sleep ( 1 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertEquals ( 4 0 0 , Ġ( view . layout Params Ġas ĠViewGroup . Margin LayoutParams ). top Margin . to Long ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest To Bitmap () Ġ{ ĊĠĠĠĠĠĠĠ ĠTest Activity :: class . launch Activity With Use Ġ{ Ġscenario Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġactivity Ġ= Ġscenario . getActivity Sync () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġview Ġ= Ġactivity . view ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbitmap Ġ= Ġview . to Bitmap ( Bitmap . Config . ARGB _ 8 8 8 8 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbitmap Width Ġ= Ġbitmap . width ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbitmap Height Ġ= Ġbitmap . height ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertFalse ( bitmap . is Re cyc led ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbitmap . recycle () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbitmap 2 Ġ= Ġview . to Bitmap ( Bitmap . Config . ARGB _ 8 8 8 8 , Ġ 0 . 5 f ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertEquals (( bitmap Width Ġ/ Ġ 2 ). to Long (), Ġbitmap 2 . width . to Long ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertEquals (( bitmap Height Ġ/ Ġ 2 ). to Long (), Ġbitmap 2 . height . to Long ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertFalse ( bitmap 2 . is Re cyc led ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbitmap 2 . recycle () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbitmap 3 Ġ= Ġview . to Bitmap By Max Width ( Bitmap . Config . ARGB _ 8 8 8 8 , Ġ 2 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertEquals ( 2 0 0 , Ġbitmap 3 . width . to Long ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertEquals (( 2 0 0 . toFloat () Ġ/ Ġbitmap Width Ġ* Ġbitmap Height ). toInt (). to Long (), Ġbitmap 3 . height . to Long ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertFalse ( bitmap 3 . is Re cyc led ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbitmap 3 . recycle () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbitmap 4 Ġ= Ġview . to Bitmap By Max Height ( Bitmap . Config . ARGB _ 8 8 8 8 , Ġ 2 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertEquals (( 2 0 0 . toFloat () Ġ/ Ġbitmap Height Ġ* Ġbitmap Width ). toInt (). to Long (), Ġbitmap 4 . width . to Long ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertEquals ( 2 0 0 , Ġbitmap 4 . height . to Long ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertFalse ( bitmap 4 . is Re cyc led ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbitmap 4 . recycle () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Throws ( InterruptedException :: class ) ĊĠĠĠ Ġfun Ġtest Inf late Layout () Ġ{ ĊĠĠĠĠĠĠĠ ĠTest Activity :: class . launch Activity With Use Ġ{ Ġscenario Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġactivity Ġ= Ġscenario . getActivity Sync () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontent View Ġ= Ġactivity . content View ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontent View Child Count Ġ= Ġcontent View . child Count ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchild View 1 Ġ= Ġrun On MainThread Sync Result Ġ{ Ġactivity . inflate Layout ( R . layout . at _ test , Ġcontent View ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠThread . sleep ( 1 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertNotNull ( child View 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertNull ( child View 1 . parent ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertNotNull ( child View 1 . layout Params ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertEquals ( content View Child Count . to Long (), Ġcontent View . child Count . to Long ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchild View 2 Ġ= Ġrun On MainThread Sync Result ( Result Runnable < View > Ġ{ Ġactivity . inflate Layout ( R . layout . at _ test , Ġcontent View , Ġtrue ). findViewById ( R . id . test At _ frame ) Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠThread . sleep ( 1 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertNotNull ( child View 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertNotNull ( child View 2 . parent ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertNotNull ( child View 2 . layout Params ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertEquals ( child View 2 . parent , Ġcontent View ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertEquals (( content View Child Count Ġ+ Ġ 1 ). to Long (), Ġcontent View . child Count . to Long ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchild View 3 Ġ= Ġrun On MainThread Sync Result Ġ{ Ġactivity . inflate Layout ( R . layout . at _ test ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠThread . sleep ( 1 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertNotNull ( child View 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertNull ( child View 3 . parent ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertNull ( child View 3 . layout Params ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertEquals (( content View Child Count Ġ+ Ġ 1 ). to Long (), Ġcontent View . child Count . to Long ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Add Padding Top By StatusBar Height () Ġ{ ĊĠĠĠĠĠĠĠ ĠTest Activity :: class . launch Activity With Use Ġ{ Ġscenario Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġactivity Ġ= Ġscenario . getActivity Sync () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontent View Ġ= Ġactivity . content View ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġold Top Padding Ġ= Ġcontent View . padding Top ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun On MainThread Sync Ġ{ Ġcontent View . add Padding Top By StatusBar Height () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . KIT K AT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertEquals (( old Top Padding Ġ+ Ġactivity . getStatus Bar Height ()). to Long (), Ġcontent View . padding Top . to Long ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertEquals ( old Top Padding . to Long (), Ġcontent View . padding Top . to Long ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠTest Activity Ġ: ĠActivity () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġview : ĠView ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ= Ġ( findViewById < View >( android . R . id . content ) Ġas ĠViewGroup ). getChild At ( 0 ) ĊĊĠĠĠĠĠĠĠ Ġval Ġcontent View : ĠViewGroup ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ= ĠfindViewById < View >( android . R . id . content ) Ġas ĠViewGroup ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġview Group Ġ= ĠfindViewById < ViewGroup >( android . R . id . content ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠimageView Ġ= ĠImageView ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠimageView . setImage Resource ( R . drawable . rect ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠimageView . scale Type Ġ= ĠImageView . Scale Type . CENTER _ C ROP ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Group . addView ( imageView , ĠViewGroup . LayoutParams ( ViewGroup . LayoutParams . MATCH _ PARENT , ĠViewGroup . LayoutParams . MATCH _ PARENT )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ