/* Ċ Ġ* ĠCopyright Ġ 2 0 2 1 Ġ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 . sl iding panel ayout . widget Ċ Ċ import Ġandroid . view . View Ċ import Ġandroidx . sl iding panel ayout . test . R Ċ import Ġandroidx . sl iding panel ayout . widget . helpers . Test Activity Ċ import Ġandroidx . sl iding panel ayout . widget . helpers . findViewById Ċ import Ġandroidx . sl iding panel ayout . widget . helpers . find View X Ċ import Ġandroidx . test . core . app . Activity Scenario Ċ import Ġandroidx . test . ext . junit . runners . Android JUnit 4 Ċ import Ġandroidx . test . filters . Large Test Ċ import Ġandroidx . test utils . with Activity Ċ import Ġandroidx . window . Fold ing Feature . Orientation . Companion . VERTICAL Ċ import Ġandroidx . window . Fold ing Feature . State . Companion . FLAT Ċ import Ġandroidx . window . Fold ing Feature . State . Companion . HALF _ OPEN ED Ċ import Ġandroidx . window . Window Layout Info Ċ import Ġandroidx . window . Window Metrics Calculator Ċ import Ġandroidx . window . testing . Fold ing Feature Ċ import Ġandroidx . window . testing . Window Layout Info Publisher Rule Ċ import Ġcom . google . common . truth . Truth . assertThat Ċ import Ġorg . junit . After Ċ import Ġorg . junit . Rule Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . runner . RunWith Ċ Ċ /** Ċ Ġ* ĠTest Ġviews Ġsplit Ġon Ġthe Ġfold Ċ Ġ*/ Ċ @ RunWith ( Android JUnit 4 :: class ) Ċ @ Large Test Ċ public Ġclass ĠFold Test Ġ{ ĊĊĠĠĠ Ġ@ get : Rule ĊĠĠĠ Ġval Ġrule : ĠWindow Layout Info Publisher Rule Ġ= ĠWindow Layout Info Publisher Rule () ĊĊĠĠĠ Ġ@ After ĊĠĠĠ Ġpublic Ġfun ĠtearDown () Ġ{ ĊĠĠĠĠĠĠĠ ĠTest Activity . on Activity Created Ġ= Ġ{} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠTest Ġsplit Ġviews Ġin Ġmiddle Ġwhen Ġfold Ġvert ically ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġpublic Ġfun Ġtest Fold Vertical () Ġ{ ĊĠĠĠĠĠĠĠ ĠTest Activity . on Activity Created Ġ= Ġ{ Ġactivity Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . set ContentView ( R . layout . activity _ test _ fold _ layout ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġwith ( Activity Scenario . launch ( Test Activity :: class . java )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfold Position Ġ= Ġwith Activity Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtest Feature Ġ= ĠFold ing Feature ( activity Ġ= Ġthis , Ġorientation Ġ= ĠV ERT ICAL ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinfo Ġ= ĠWindow Layout Info . Builder (). set Display Features ( listOf ( test Feature )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrule . override Window Layout Info ( info ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtest Feature . bounds ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( findViewById ( R . id . list _ pane ). width ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. isEqualTo ( findViewById ( R . id . detail _ pane ). width ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( find View X ( R . id . detail _ pane )). isEqualTo ( fold Position . left ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠTest Ġsplit Ġviews Ġnot Ġapplicable Ġwhen Ġfold Ġh orizontally . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġpublic Ġfun Ġtest Fold Horizontal () Ġ{ ĊĠĠĠĠĠĠĠ ĠTest Activity . on Activity Created Ġ= Ġ{ Ġactivity Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . set ContentView ( R . layout . activity _ test _ fold _ layout ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġwith ( Activity Scenario . launch ( Test Activity :: class . java )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( findViewById ( R . id . list _ pane ). width ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. is LessThan ( findViewById ( R . id . detail _ pane ). width ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( find View X ( R . id . list _ pane )). is LessThan ( find View X ( R . id . detail _ pane )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠTest Ġsplit Ġviews Ġwhen Ġfold Ġpane Ġis Ġsmaller Ġthan Ġrequired Ġmin Ġwidth ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġpublic Ġfun Ġtest Fold Ex ceed Min Width () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdetail View Extra Width Ġ= Ġ 2 0 0 ĊĠĠĠĠĠĠĠ ĠTest Activity . on Activity Created Ġ= Ġ{ Ġactivity Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . set ContentView ( R . layout . activity _ test _ fold _ layout ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdetail View Ġ= Ġactivity . findViewById < View >( R . id . detail _ pane ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdetail View . minimum Width Ġ= ĠWindow Metrics Calculator . create () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. compute Current Window Metrics ( activity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. bounds ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. width () Ġ/ Ġ 2 Ġ+ Ġdetail View Extra Width ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwindow Ġ= ĠWindow Metrics Calculator . create () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. compute Current Window Metrics ( activity ). bounds ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdetail View . minimum Width Ġ= Ġwindow . width () Ġ/ Ġ 2 Ġ+ Ġdetail View Extra Width ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġwith ( Activity Scenario . launch ( Test Activity :: class . java )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwindow Ġ= Ġwith Activity Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfeature Ġ= ĠFold ing Feature ( activity Ġ= Ġthis , Ġorientation Ġ= ĠV ERT ICAL ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinfo Ġ= ĠWindow Layout Info . Builder (). set Display Features ( listOf ( feature )). build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrule . override Window Layout Info ( info ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWindow Metrics Calculator . create (). compute Current Window Metrics ( this ). bounds ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( findViewById ( R . id . detail _ pane ). width ). isEqualTo ( window . width ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠTest Ġlayout Ġupdates Ġwhen Ġun fold Ġa Ġfold able Ġdevice ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġpublic Ġfun Ġtest Un fold () Ġ{ ĊĠĠĠĠĠĠĠ ĠTest Activity . on Activity Created Ġ= Ġ{ Ġactivity Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . set ContentView ( R . layout . activity _ test _ fold _ layout ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġwith ( Activity Scenario . launch ( Test Activity :: class . java )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Activity Ġ{ Ġactivity Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhalf Open Feature Ġ= ĠFold ing Feature ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity Ġ= Ġactivity , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstate Ġ= ĠHAL F _ OPEN ED , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġorientation Ġ= ĠV ERT ICAL ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġflat Ġ= ĠFold ing Feature ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity Ġ= Ġactivity , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstate Ġ= ĠFL AT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġorientation Ġ= ĠV ERT ICAL ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhalf Open Info Ġ= ĠWindow Layout Info . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Display Features ( listOf ( half Open Feature )). build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġflat Info Ġ= ĠWindow Layout Info . Builder (). set Display Features ( listOf ( flat )). build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrule . override Window Layout Info ( half Open Info ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrule . override Window Layout Info ( flat Info ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( findViewById ( R . id . list _ pane ). width ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. is LessThan ( findViewById ( R . id . detail _ pane ). width ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( find View X ( R . id . list _ pane )). is LessThan ( find View X ( R . id . detail _ pane )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }