/* Ċ Ġ* Ġ ĠCopyright Ġ( c ) Ġ 2 0 1 9 - 2 0 2 0 ĠMagic ĠLe ap , ĠInc . ĠAll ĠRights ĠReserved Ċ Ġ* Ċ Ġ* Ġ Ġ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 . mag icle ap . magic script . scene . nodes . layouts Ċ Ċ import Ġcom . facebook . react . bridge . Java Only Map Ċ import Ġcom . google . ar . scene form . math . Vector 3 Ċ import Ġcom . mag icle ap . magic script . Node Builder Ċ import Ġcom . mag icle ap . magic script . react Map Of Ċ import Ġcom . mag icle ap . magic script . scene . nodes . base . Transform Node Ċ import Ġcom . mag icle ap . magic script . scene . nodes . layouts . params . Grid LayoutParams Ċ import Ġcom . mag icle ap . magic script . scene . nodes . props . AABB Ċ import Ġcom . mag icle ap . magic script . scene . nodes . props . Alignment Ċ import Ġcom . mag icle ap . magic script . should Equal In exact Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . any Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . mock Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . wh enever Ċ import Ġorg . am sh ove . k lu ent . should Equal Ċ import Ġorg . am sh ove . k lu ent . should Not Be Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . runner . RunWith Ċ import Ġorg . ro bo lectric . Ro bo lectric TestRunner Ċ Ċ /** Ċ Ġ* ĠTo Ġrepresent Ġnode 's Ġproperties Ġmap Ġin Ġtests Ġwe Ġuse Ġ[ Java Only Map ] Ġwhich Ċ Ġ* Ġdoes Ġnot Ġrequire Ġnative ĠReact 's Ġresources . Ċ Ġ*/ Ċ @ RunWith ( Ro bo lectric TestRunner :: class ) Ċ class ĠUi GridLayout Test Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġlayout Manager : ĠLayout Manager < Grid LayoutParams > ĊĊĠĠĠ Ġ// Ġlocal Ġbounds Ġof Ġchildren Ġinside Ġthe Ġlayout ĊĠĠĠ Ġprivate Ġval Ġlayout Bounds Ġ= ĠA ABB ( min Ġ= ĠVector 3 ( 0 f , Ġ- 1 f , Ġ 0 f ), Ġmax Ġ= ĠVector 3 ( 1 f , Ġ 1 f , Ġ 0 f )) ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠ Ġlayout Manager Ġ= Ġmock () ĊĠĠĠĠĠĠĠ Ġwhenever ( layout Manager . get Layout Bounds ( any ())). thenReturn ( layout Bounds ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` should Ġreturn Ġlayout Ġbounds Ġbased Ġon Ġbounds Ġreturned Ġby Ġlayout Ġmanager `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġprops Ġ= Ġreact Map Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTransform Node . PROP _ ALIGNMENT , Ġ" bottom - center " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġnode Ġ= Ġcreate Node ( props ) ĊĊĠĠĠĠĠĠĠ Ġval Ġbounding Ġ= Ġnode . get Bounding () ĊĊĠĠĠĠĠĠĠ Ġbounding . min Ġshould Equal In exact ĠVector 3 (- 0 . 5 f , Ġ 0 f , Ġ 0 f ) ĊĠĠĠĠĠĠĠ Ġbounding . max Ġshould Equal In exact ĠVector 3 ( 0 . 5 f , Ġ 2 f , Ġ 0 f ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` should Ġuse Ġdynamic Ġnumber Ġof Ġcolumns Ġby Ġdefault `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnode Ġ= Ġcreate Node ( Java Only Map ()) ĊĊĠĠĠĠĠĠĠ Ġnode . columns Ġshould Equal ĠUi GridLayout . DYNAMIC _ VALUE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` should Ġuse Ġ 1 Ġrow Ġby Ġdefault `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnode Ġ= Ġcreate Node ( Java Only Map ()) ĊĊĠĠĠĠĠĠĠ Ġnode . rows Ġshould Equal Ġ 1 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` should Ġnot Ġbe Ġable Ġto Ġset Ġdynamic Ġcolumns Ġand Ġrows Ġnumber Ġtogether `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnode Ġ= Ġcreate Node ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreact Map Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUi GridLayout . PROP _ COLUMNS , ĠUi GridLayout . DYNAMIC _ VALUE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUi GridLayout . PROP _ ROWS , ĠUi GridLayout . DYNAMIC _ VALUE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġnode . rows Ġshould Equal Ġ 1 ĊĠĠĠĠĠĠĠ Ġnode . columns Ġshould Equal ĠUi GridLayout . DYNAMIC _ VALUE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` columns Ġshould Ġtake Ġprecedence Ġover Ġrows Ġwhen Ġboth Ġare Ġset `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnode Ġ= Ġcreate Node ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreact Map Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUi GridLayout . PROP _ COLUMNS , Ġ 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUi GridLayout . PROP _ ROWS , Ġ 3 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġnode . columns Ġshould Equal Ġ 2 ĊĠĠĠĠĠĠĠ Ġnode . rows Ġshould Equal ĠUi GridLayout . DYNAMIC _ VALUE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` should Ġapply Ġitem Ġalignment Ġwhen Ġpassed `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġprops Ġ= Ġreact Map Of ( Ui GridLayout . PROP _ DEFAULT _ ITEM _ ALIGNMENT , Ġ" bottom - right ") ĊĠĠĠĠĠĠĠ Ġval Ġnode Ġ= Ġcreate Node ( props ) ĊĠĠĠĠĠĠĠ Ġval Ġchild Ġ= ĠNode Builder (). build () ĊĠĠĠĠĠĠĠ Ġnode . add Content ( child ) ĊĊĠĠĠĠĠĠĠ Ġval Ġlayout Params Ġ= Ġnode . get LayoutParams () ĊĊĠĠĠĠĠĠĠ Ġlayout Params . items Alignment [ child ] Ġshould Not Be Ġnull ĊĠĠĠĠĠĠĠ Ġlayout Params . items Alignment [ child ] !!. vertical Ġshould Equal ĠAlignment . Vertical . BOTTOM ĊĠĠĠĠĠĠĠ Ġlayout Params . items Alignment [ child ] !!. horizontal Ġshould Equal ĠAlignment . Horizontal . RIGHT ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` should Ġupdate Ġnumber Ġof Ġcolumns Ġwhen Ġcolumns Ġproperty Ġupdated `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnode Ġ= Ġcreate Node ( Java Only Map ()) ĊĊĠĠĠĠĠĠĠ Ġval Ġprops Ġ= Ġreact Map Of ( Ui GridLayout . PROP _ COLUMNS , Ġ 3 . 0 ) ĊĠĠĠĠĠĠĠ Ġnode . update ( props ) ĊĠĠĠĠĠĠĠ Ġval Ġlayout Params Ġ= Ġnode . get LayoutParams () ĊĊĠĠĠĠĠĠĠ Ġlayout Params . columns Ġshould Equal Ġ 3 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Node ( props : ĠJava Only Map ): ĠUi GridLayout Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠUi GridLayout ( props , Ġlayout Manager ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuild () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }