/* Ċ Ġ* ĠCopyright Ġ 2 0 1 9 ĠThe ĠAndroid ĠOpen ĠSource ĠProject Ċ Ġ* Ċ Ġ* Ġ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 Ġandroidx . compose . foundation . layout Ċ Ċ import Ġandroidx . compose . runtime . Composable Ċ import Ġandroidx . compose . runtime . Providers Ċ import Ġandroidx . test . filters . Small Test Ċ import Ġandroidx . compose . ui . Alignment Ċ import Ġandroidx . compose . ui . unit . Constraints Ċ import Ġandroidx . compose . ui . Layout Ċ import Ġandroidx . compose . ui . layout . Layout Coordinates Ċ import Ġandroidx . compose . ui . Modifier Ċ import Ġandroidx . compose . ui . node . Ref Ċ import Ġandroidx . compose . ui . unit . enforce Ċ import Ġandroidx . compose . ui . on Position ed Ċ import Ġandroidx . compose . ui . geometry . Offset Ċ import Ġandroidx . compose . ui . platform . Layout Direction Ambient Ċ import Ġandroidx . compose . ui . unit . Int Offset Ċ import Ġandroidx . compose . ui . unit . Int Size Ċ import Ġandroidx . compose . ui . unit . Layout Direction Ċ import Ġandroidx . compose . ui . unit . dp Ċ import Ġorg . junit . Assert . assertEquals Ċ import Ġorg . junit . Assert . assertTrue Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . runner . RunWith Ċ import Ġorg . junit . runners . JUnit 4 Ċ import Ġjava . util . concurrent . Count DownLatch Ċ import Ġjava . util . concurrent . TimeUnit Ċ import Ġkotlin . math . round ToInt Ċ Ċ @ Small Test Ċ @ RunWith ( JUnit 4 :: class ) Ċ class ĠLayout Align Test Ġ: ĠLayout Test () Ġ{ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest 2 D Aligned Modifier () Ġ= Ġwith ( density ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsize Dp Ġ= Ġ 5 0 . dp ĊĠĠĠĠĠĠĠ Ġval Ġsize Ġ= Ġsize Dp . toInt Px () ĊĊĠĠĠĠĠĠĠ Ġval Ġposition ed Latch Ġ= ĠCount DownLatch ( 2 ) ĊĠĠĠĠĠĠĠ Ġval Ġalign Size Ġ= ĠRef < Int Size >() ĊĠĠĠĠĠĠĠ Ġval Ġalign Position Ġ= ĠRef < Offset >() ĊĠĠĠĠĠĠĠ Ġval Ġchild Size Ġ= ĠRef < Int Size >() ĊĠĠĠĠĠĠĠ Ġval Ġchild Position Ġ= ĠRef < Offset >() ĊĠĠĠĠĠĠĠ Ġshow Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠContainer ( Modifier . save Layout Info ( align Size , Ġalign Position , Ġposition ed Latch )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠContainer ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠModifier . fill MaxSize () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. wrap Content Size ( Alignment . Bottom End ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. preferred Size ( size Dp ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. save Layout Info ( child Size , Ġchild Position , Ġposition ed Latch ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠassertTrue ( position ed Latch . await ( 1 , ĠTimeUnit . SECONDS )) ĊĊĠĠĠĠĠĠĠ Ġval Ġroot Ġ= Ġfind Owner View () ĊĠĠĠĠĠĠĠ ĠwaitFor Draw ( root ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( Int Size ( root . width , Ġroot . height ), Ġalign Size . value ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Offset ( 0 f , Ġ 0 f ), Ġalign Position . value ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Int Size ( size , Ġsize ), Ġchild Size . value ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOffset ( root . width Ġ- Ġsize . toFloat (), Ġroot . height Ġ- Ġsize . toFloat ()), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchild Position . value ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest 1 D Aligned Modifier () Ġ= Ġwith ( density ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsize Dp Ġ= Ġ 5 0 . dp ĊĠĠĠĠĠĠĠ Ġval Ġsize Ġ= Ġsize Dp . toInt Px () ĊĊĠĠĠĠĠĠĠ Ġval Ġposition ed Latch Ġ= ĠCount DownLatch ( 2 ) ĊĠĠĠĠĠĠĠ Ġval Ġalign Size Ġ= ĠRef < Int Size >() ĊĠĠĠĠĠĠĠ Ġval Ġalign Position Ġ= ĠRef < Offset >() ĊĠĠĠĠĠĠĠ Ġval Ġchild Size Ġ= ĠRef < Int Size >() ĊĠĠĠĠĠĠĠ Ġval Ġchild Position Ġ= ĠRef < Offset >() ĊĠĠĠĠĠĠĠ Ġshow Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠContainer ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠModifier . save Layout Info ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsize Ġ= Ġalign Size , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposition Ġ= Ġalign Position , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposition ed Latch Ġ= Ġposition ed Latch ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠContainer ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠModifier . fill MaxSize () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. wrap Content Width ( Alignment . End ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. preferred Width ( size Dp ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. save Layout Info ( child Size , Ġchild Position , Ġposition ed Latch ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠassertTrue ( position ed Latch . await ( 1 , ĠTimeUnit . SECONDS )) ĊĊĠĠĠĠĠĠĠ Ġval Ġroot Ġ= Ġfind Owner View () ĊĠĠĠĠĠĠĠ ĠwaitFor Draw ( root ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( Int Size ( root . width , Ġroot . height ), Ġalign Size . value ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Offset ( 0 f , Ġ 0 f ), Ġalign Position . value ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Int Size ( size , Ġroot . height ), Ġchild Size . value ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Offset ( root . width Ġ- Ġsize . toFloat (), Ġ 0 f ), Ġchild Position . value ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Aligned Modifier _ rtl () Ġ= Ġwith ( density ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsize Dp Ġ= Ġ 2 0 0 . to Dp () ĊĠĠĠĠĠĠĠ Ġval Ġsize Ġ= Ġsize Dp . toInt Px () ĊĊĠĠĠĠĠĠĠ Ġval Ġposition ed Latch Ġ= ĠCount DownLatch ( 3 ) ĊĠĠĠĠĠĠĠ Ġval Ġchild Size Ġ= ĠArray ( 3 ) Ġ{ ĠRef < Int Size >() Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġchild Position Ġ= ĠArray ( 3 ) Ġ{ ĠRef < Offset >() Ġ} ĊĠĠĠĠĠĠĠ Ġshow Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPro viders ( Layout Direction Ambient Ġprovides ĠLayout Direction . R tl ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStack ( Modifier . fill MaxSize ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStack ( Modifier . fill MaxSize (). wrap Content Size ( Alignment . Top Start )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStack ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠModifier . preferred Size ( size Dp ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. save Layout Info ( child Size [ 0 ], Ġchild Position [ 0 ], Ġposition ed Latch ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStack ( Modifier . fill MaxSize (). wrap Content Height ( Alignment . Center Vert ically )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStack ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠModifier . preferred Size ( size Dp ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. save Layout Info ( child Size [ 1 ], Ġchild Position [ 1 ], Ġposition ed Latch ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStack ( Modifier . fill MaxSize (). wrap Content Size ( Alignment . Bottom End )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStack ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠModifier . preferred Size ( size Dp ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. save Layout Info ( child Size [ 2 ], Ġchild Position [ 2 ], Ġposition ed Latch ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠassertTrue ( position ed Latch . await ( 1 , ĠTimeUnit . SECONDS )) ĊĊĠĠĠĠĠĠĠ Ġval Ġroot Ġ= Ġfind Owner View () ĊĠĠĠĠĠĠĠ ĠwaitFor Draw ( root ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOffset (( root . width Ġ- Ġsize ). toFloat (), Ġ 0 f ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchild Position [ 0 ]. value ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOffset ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( root . width Ġ- Ġsize ). toFloat (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ(( root . height Ġ- Ġsize ) Ġ/ Ġ 2 ). toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchild Position [ 1 ]. value ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOffset ( 0 f , Ġ( root . height Ġ- Ġsize ). toFloat ()), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchild Position [ 2 ]. value ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Modifier _ wrap s Content () Ġ= Ġwith ( density ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcontent Size Ġ= Ġ 5 0 . dp ĊĠĠĠĠĠĠĠ Ġval Ġsize Ġ= ĠRef < Int Size >() ĊĠĠĠĠĠĠĠ Ġval Ġl atch Ġ= ĠCount DownLatch ( 1 ) ĊĠĠĠĠĠĠĠ Ġshow Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠContainer Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠContainer ( Modifier . save Layout Info ( size , ĠRef (), Ġl atch )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠContainer ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠModifier . wrap Content Size ( Alignment . Top Start ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. preferred Size ( content Size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertTrue ( latch . await ( 1 , ĠTimeUnit . SECONDS )) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Int Size ( content Size . toInt Px (), Ġcontent Size . toInt Px ()), Ġsize . value ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Aligned Modifier _ wrap s Content _ when Measured With Infinite Constraints () Ġ= Ġwith ( density ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsize Dp Ġ= Ġ 5 0 . dp ĊĠĠĠĠĠĠĠ Ġval Ġsize Ġ= Ġsize Dp . toInt Px () ĊĊĠĠĠĠĠĠĠ Ġval Ġposition ed Latch Ġ= ĠCount DownLatch ( 2 ) ĊĠĠĠĠĠĠĠ Ġval Ġalign Size Ġ= ĠRef < Int Size >() ĊĠĠĠĠĠĠĠ Ġval Ġalign Position Ġ= ĠRef < Offset >() ĊĠĠĠĠĠĠĠ Ġval Ġchild Size Ġ= ĠRef < Int Size >() ĊĠĠĠĠĠĠĠ Ġval Ġchild Position Ġ= ĠRef < Offset >() ĊĠĠĠĠĠĠĠ Ġshow Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLayout ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchildren Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠContainer ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠModifier . save Layout Info ( align Size , Ġalign Position , Ġposition ed Latch ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠContainer ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠModifier . wrap Content Size ( Alignment . Bottom End ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. preferred Size ( size Dp ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. save Layout Info ( child Size , Ġchild Position , Ġposition ed Latch ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmeasure Block Ġ= Ġ{ Ġmeas ur ables , Ġconstraints Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġplace able Ġ= Ġmeas ur ables . first (). measure ( Constraints ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayout ( constraints . maxWidth , Ġconstraints . max Height ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplace able . place Relative ( 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠassertTrue ( position ed Latch . await ( 1 , ĠTimeUnit . SECONDS )) ĊĊĠĠĠĠĠĠĠ Ġval Ġroot Ġ= Ġfind Owner View () ĊĠĠĠĠĠĠĠ ĠwaitFor Draw ( root ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( Int Size ( size , Ġsize ), Ġalign Size . value ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Offset ( 0 f , Ġ 0 f ), Ġalign Position . value ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Int Size ( size , Ġsize ), Ġchild Size . value ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Offset ( 0 f , Ġ 0 f ), Ġchild Position . value ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Layout Align Modifier _ res pect s Min Constraints () Ġ= Ġwith ( density ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsize Dp Ġ= Ġ 5 0 . dp ĊĠĠĠĠĠĠĠ Ġval Ġsize Ġ= Ġsize Dp . toInt Px () ĊĠĠĠĠĠĠĠ Ġval Ġdouble Size Dp Ġ= Ġsize Dp Ġ* Ġ 2 ĊĠĠĠĠĠĠĠ Ġval Ġdouble Size Ġ= Ġdouble Size Dp . toInt Px () ĊĊĠĠĠĠĠĠĠ Ġval Ġposition ed Latch Ġ= ĠCount DownLatch ( 2 ) ĊĠĠĠĠĠĠĠ Ġval Ġwrap Size Ġ= ĠRef < Int Size >() ĊĠĠĠĠĠĠĠ Ġval Ġchild Size Ġ= ĠRef < Int Size >() ĊĠĠĠĠĠĠĠ Ġval Ġchild Position Ġ= ĠRef < Offset >() ĊĠĠĠĠĠĠĠ Ġshow Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠContainer ( Modifier . wrap Content Size ( Alignment . Top Start )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLayout ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . on Position ed Ġ{ Ġcoordinates : ĠLayout Coordinates Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrap Size . value Ġ= Ġcoordinates . size ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposition ed Latch . count Down () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchildren Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠContainer ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠModifier . wrap Content Size ( Alignment . Center ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. preferred Size ( size Dp ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. save Layout Info ( child Size , Ġchild Position , Ġposition ed Latch ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmeasure Block Ġ= Ġ{ Ġmeas ur ables , Ġincoming Constraints Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmeas ur able Ġ= Ġmeas ur ables . first () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconstraints Ġ= ĠConstraints ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠminWidth Ġ= Ġdouble Size Dp . toInt Px (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠminHeight Ġ= Ġdouble Size Dp . toInt Px () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). enforce ( incoming Constraints ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġplace able Ġ= Ġmeas ur able . measure ( constraints ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayout ( place able . width , Ġplace able . height ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplace able . place Relative ( Offset . Zero ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠassertTrue ( position ed Latch . await ( 1 , ĠTimeUnit . SECONDS )) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( Int Size ( double Size , Ġdouble Size ), Ġwrap Size . value ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Int Size ( size , Ġsize ), Ġchild Size . value ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOffset ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ(( double Size Ġ- Ġsize ) Ġ/ Ġ 2 f ). round ToInt (). toFloat (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ(( double Size Ġ- Ġsize ) Ġ/ Ġ 2 f ). round ToInt (). toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchild Position . value ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠTODO ( pop am ): Ġthis Ġshould Ġbe Ġunit Ġtest Ġinstead ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Alignment Coordinates _ even Size () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsize Ġ= ĠInt Size ( 2 , Ġ 2 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Int Offset ( 0 , Ġ 0 ), ĠAlignment . Top Start . align ( size )) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Int Offset ( 1 , Ġ 0 ), ĠAlignment . Top Center . align ( size )) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Int Offset ( 2 , Ġ 0 ), ĠAlignment . Top End . align ( size )) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Int Offset ( 0 , Ġ 1 ), ĠAlignment . Center Start . align ( size )) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Int Offset ( 1 , Ġ 1 ), ĠAlignment . Center . align ( size )) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Int Offset ( 2 , Ġ 1 ), ĠAlignment . Center End . align ( size )) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Int Offset ( 0 , Ġ 2 ), ĠAlignment . Bottom Start . align ( size )) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Int Offset ( 1 , Ġ 2 ), ĠAlignment . Bottom Center . align ( size )) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Int Offset ( 2 , Ġ 2 ), ĠAlignment . Bottom End . align ( size )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠTODO ( pop am ): Ġthis Ġshould Ġbe Ġunit Ġtest Ġinstead ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Alignment Coordinates _ odd Size () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsize Ġ= ĠInt Size ( 3 , Ġ 3 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Int Offset ( 0 , Ġ 0 ), ĠAlignment . Top Start . align ( size )) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Int Offset ( 2 , Ġ 0 ), ĠAlignment . Top Center . align ( size )) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Int Offset ( 3 , Ġ 0 ), ĠAlignment . Top End . align ( size )) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Int Offset ( 0 , Ġ 2 ), ĠAlignment . Center Start . align ( size )) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Int Offset ( 2 , Ġ 2 ), ĠAlignment . Center . align ( size )) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Int Offset ( 3 , Ġ 2 ), ĠAlignment . Center End . align ( size )) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Int Offset ( 0 , Ġ 3 ), ĠAlignment . Bottom Start . align ( size )) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Int Offset ( 2 , Ġ 3 ), ĠAlignment . Bottom Center . align ( size )) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Int Offset ( 3 , Ġ 3 ), ĠAlignment . Bottom End . align ( size )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest 2 D Aligned Modifier _ has Correct Intr insic Measure ments () Ġ= Ġwith ( density ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtest Intr insics (@ Composable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠContainer ( Modifier . wrap Content Size ( Alignment . Top Start ). aspect Ratio ( 2 f )) Ġ{ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) Ġ{ Ġmin Intr insic Width , Ġmin Intr insic Height , Ġmax Intr insic Width , Ġmax Intr insic Height Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠMin Ġwidth . ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġmin Intr insic Width ( 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 2 5 . dp . toInt Px () Ġ* Ġ 2 , Ġmin Intr insic Width ( 2 5 . dp . toInt Px ())) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 0 . dp . toInt Px (), Ġmin Intr insic Width ( Constraints . Infinity )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠMin Ġheight . ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġmin Intr insic Width ( 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (( 5 0 . dp . toInt Px () Ġ/ Ġ 2 f ). round ToInt (), Ġmin Intr insic Height ( 5 0 . dp . toInt Px ())) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 0 . dp . toInt Px (), Ġmin Intr insic Height ( Constraints . Infinity )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠMax Ġwidth . ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġmin Intr insic Width ( 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 2 5 . dp . toInt Px () Ġ* Ġ 2 , Ġmax Intr insic Width ( 2 5 . dp . toInt Px ())) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 0 . dp . toInt Px (), Ġmax Intr insic Width ( Constraints . Infinity )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠMax Ġheight . ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġmin Intr insic Width ( 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (( 5 0 . dp . toInt Px () Ġ/ Ġ 2 f ). round ToInt (), Ġmax Intr insic Height ( 5 0 . dp . toInt Px ())) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 0 . dp . toInt Px (), Ġmax Intr insic Height ( Constraints . Infinity )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest 1 D Aligned Modifier _ has Correct Intr insic Measure ments () Ġ= Ġwith ( density ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtest Intr insics ({ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠContainer ( Modifier . wrap Content Height ( Alignment . Center Vert ically ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. aspect Ratio ( 2 f ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) Ġ{ Ġmin Intr insic Width , Ġmin Intr insic Height , Ġmax Intr insic Width , Ġmax Intr insic Height Ġ-> ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠMin Ġwidth . ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġmin Intr insic Width ( 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 2 5 . dp . toInt Px () Ġ* Ġ 2 , Ġmin Intr insic Width ( 2 5 . dp . toInt Px ())) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 0 . dp . toInt Px (), Ġmin Intr insic Width ( Constraints . Infinity )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠMin Ġheight . ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġmin Intr insic Width ( 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (( 5 0 . dp . toInt Px () Ġ/ Ġ 2 f ). round ToInt (), Ġmin Intr insic Height ( 5 0 . dp . toInt Px ())) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 0 . dp . toInt Px (), Ġmin Intr insic Height ( Constraints . Infinity )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠMax Ġwidth . ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġmin Intr insic Width ( 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 2 5 . dp . toInt Px () Ġ* Ġ 2 , Ġmax Intr insic Width ( 2 5 . dp . toInt Px ())) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 0 . dp . toInt Px (), Ġmax Intr insic Width ( Constraints . Infinity )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠMax Ġheight . ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġmin Intr insic Width ( 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (( 5 0 . dp . toInt Px () Ġ/ Ġ 2 f ). round ToInt (), Ġmax Intr insic Height ( 5 0 . dp . toInt Px ())) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 0 . dp . toInt Px (), Ġmax Intr insic Height ( Constraints . Infinity )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Aligned Modifier _ align s Correct ly _ when Odd Dimensions _ end Aligned () Ġ= Ġwith ( density ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven Ġa Ġ 1 0 0 Ġx Ġ 1 0 0 Ġpixel Ġcontainer , Ġwe Ġwant Ġto Ġmake Ġsure Ġthat Ġwhen Ġalign ing Ġa Ġ 1 Ġx Ġ 1 Ġpixel ĊĠĠĠĠĠĠĠ Ġ// Ġchild Ġto Ġboth Ġends Ġ( bottom , Ġand Ġright ) Ġwe Ġcorrectly Ġposition Ġchildren Ġat Ġthe Ġlast ĊĠĠĠĠĠĠĠ Ġ// Ġpossible Ġpixel , Ġand Ġavoid Ġrounding Ġissues . ĠPrevious ly Ġwe Ġfirst Ġcentered Ġthe Ġcoordinates , ĊĠĠĠĠĠĠĠ Ġ// Ġand Ġthen Ġaligned Ġafter , Ġso Ġthe Ġmath s Ġwould Ġactually Ġbe Ġ( 9 9 Ġ/ Ġ 2 ) Ġ* Ġ 2 , Ġwhich Ġincorrectly ĊĠĠĠĠĠĠĠ Ġ// Ġends Ġup Ġat Ġ 1 0 0 Ġ( Int Ġrounds Ġup ) Ġ- Ġso Ġthe Ġlast Ġpixels Ġin Ġboth Ġdirections Ġjust Ġwouldn 't ĊĠĠĠĠĠĠĠ Ġ// Ġbe Ġvisible . ĊĠĠĠĠĠĠĠ Ġval Ġparent Size Ġ= Ġ 1 0 0 . to Dp () ĊĠĠĠĠĠĠĠ Ġval Ġchild Size Dp Ġ= Ġ 1 . to Dp () ĊĠĠĠĠĠĠĠ Ġval Ġchild Size I px Ġ= Ġchild Size Dp . toInt Px () ĊĊĠĠĠĠĠĠĠ Ġval Ġposition ed Latch Ġ= ĠCount DownLatch ( 2 ) ĊĠĠĠĠĠĠĠ Ġval Ġalign Size Ġ= ĠRef < Int Size >() ĊĠĠĠĠĠĠĠ Ġval Ġalign Position Ġ= ĠRef < Offset >() ĊĠĠĠĠĠĠĠ Ġval Ġchild Size Ġ= ĠRef < Int Size >() ĊĠĠĠĠĠĠĠ Ġval Ġchild Position Ġ= ĠRef < Offset >() ĊĠĠĠĠĠĠĠ Ġshow Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLayout ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchildren Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠContainer ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠModifier . preferred Size ( parent Size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. save Layout Info ( align Size , Ġalign Position , Ġposition ed Latch ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠContainer ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠModifier . fill MaxSize () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. wrap Content Size ( Alignment . Bottom End ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. preferred Size ( child Size Dp ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. save Layout Info ( child Size , Ġchild Position , Ġposition ed Latch ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġmeasure Block Ġ= Ġ{ Ġmeas ur ables , Ġconstraints Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġplace able Ġ= Ġmeas ur ables . first (). measure ( Constraints ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayout ( constraints . maxWidth , Ġconstraints . max Height ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplace able . place Relative ( 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġposition ed Latch . await ( 1 , ĠTimeUnit . SECONDS ) ĊĊĠĠĠĠĠĠĠ Ġval Ġroot Ġ= Ġfind Owner View () ĊĠĠĠĠĠĠĠ ĠwaitFor Draw ( root ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( Int Size ( child Size I px , Ġchild Size I px ), Ġchild Size . value ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOffset ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( align Size . value !!. width Ġ- Ġchild Size I px ). toFloat (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( align Size . value !!. height Ġ- Ġchild Size I px ). toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchild Position . value ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ