/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 Ġ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 Ċ Ċ import Ġandroidx . compose . foundation . layout . default Min Size Constraints Ċ import Ġandroidx . compose . foundation . layout . preferred Width Ċ import Ġandroidx . compose . foundation . layout . width Ċ import Ġandroidx . compose . foundation . text . Basic TextField Ċ import Ġandroidx . compose . runtime . Composable Ċ import Ġandroidx . compose . runtime . Providers Ċ import Ġandroidx . compose . ui . Modifier Ċ import Ġandroidx . compose . ui . layout . on Glob ally Position ed Ċ import Ġandroidx . compose . ui . platform . Ambient Density Ċ import Ġandroidx . compose . ui . test . junit 4 . create Compose Rule Ċ import Ġandroidx . compose . ui . text . TextStyle Ċ import Ġandroidx . compose . ui . text . font . FontStyle Ċ import Ġandroidx . compose . ui . text . font . Font Weight Ċ import Ġandroidx . compose . ui . text . font . as Font Family Ċ import Ġandroidx . compose . ui . text . font . font Ċ import Ġandroidx . compose . ui . text . input . TextField Value Ċ import Ġandroidx . compose . ui . unit . Density Ċ import Ġandroidx . compose . ui . unit . Text Unit Ċ import Ġandroidx . compose . ui . unit . dp Ċ import Ġandroidx . compose . ui . unit . sp Ċ import Ġandroidx . test . ext . junit . runners . Android JUnit 4 Ċ import Ġandroidx . test . filters . Large Test Ċ import Ġcom . google . common . truth . Truth . assertThat Ċ import Ġorg . junit . Rule Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . runner . RunWith Ċ import Ġkotlin . math . ceil Ċ import Ġkotlin . math . round ToInt Ċ Ċ @ Large Test Ċ @ RunWith ( Android JUnit 4 :: class ) Ċ class ĠBase TextField Default Width Test Ġ{ ĊĊĠĠĠ Ġ@ get : Rule ĊĠĠĠ Ġval Ġrule Ġ= Ġcreate Compose Rule () ĊĊĠĠĠ Ġval Ġdensity Ġ= ĠD ensity ( density Ġ= Ġ 1 f , Ġfont Scale Ġ= Ġ 1 f ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtext Field _ has Default Width () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġsize : ĠInt ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġval ĠfontSize Ġ= Ġ 4 . sp ĊĊĠĠĠĠĠĠĠ Ġrule . setContent Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDefault Width TextField ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġ"", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠfontSize Ġ= ĠfontSize , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . on Glob ally Position ed Ġ{ Ġsize Ġ= Ġit . size . width Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdensity Ġ= Ġdensity ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertThat ( size ). isEqualTo ( default TextField Size ( fontSize )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġmin Constraint _ greater Than _ default Width _ ch oo ses Min Constraint () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġsize : ĠInt ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġval ĠfontSize Ġ= Ġ 4 . sp ĊĠĠĠĠĠĠĠ Ġval ĠminWidth Ġ= Ġ 8 0 . dp ĊĊĠĠĠĠĠĠĠ Ġrule . setContent Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDefault Width TextField ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġ"", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠfontSize Ġ= ĠfontSize , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. on Glob ally Position ed Ġ{ Ġsize Ġ= Ġit . size . width Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. default Min Size Constraints ( min Width ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdensity Ġ= Ġdensity ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġwith ( density ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( size ). isEqualTo ( min Width . toInt Px ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġmax Constraint _ smaller Than _ default Width _ ch oo ses Max Constraint () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġsize : ĠInt ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġval ĠfontSize Ġ= Ġ 4 . sp ĊĠĠĠĠĠĠĠ Ġval Ġwidth Ġ= Ġ 0 . dp ĊĊĠĠĠĠĠĠĠ Ġrule . setContent Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDefault Width TextField ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġ"", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠfontSize Ġ= ĠfontSize , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. on Glob ally Position ed Ġ{ Ġsize Ġ= Ġit . size . width Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. width ( width ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdensity Ġ= Ġdensity ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġwith ( density ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( size ). isEqualTo ( width . toInt Px ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtext Width _ smaller Than _ default Width _ ch oo ses Default Width () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġsize : ĠInt ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġval ĠfontSize Ġ= Ġ 4 . sp ĊĊĠĠĠĠĠĠĠ Ġrule . setContent Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDefault Width TextField ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġ" abc ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠfontSize Ġ= ĠfontSize , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . on Glob ally Position ed Ġ{ Ġsize Ġ= Ġit . size . width Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdensity Ġ= Ġdensity ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertThat ( size ). isEqualTo ( default TextField Size ( fontSize )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtext Width _ greater Than _ default Width _ ch oo ses Text Width () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġsize : ĠInt ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġval ĠfontSize Ġ= Ġ 4 . sp ĊĠĠĠĠĠĠĠ Ġval Ġchar Count Ġ= Ġ 1 2 ĊĊĠĠĠĠĠĠĠ Ġrule . setContent Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDefault Width TextField ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġ" H ". repeat ( char Count ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠfontSize Ġ= ĠfontSize , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . on Glob ally Position ed Ġ{ Ġsize Ġ= Ġit . size . width Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdensity Ġ= Ġdensity ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertThat ( size ). isEqualTo ( default TextField Size ( fontSize , Ġchar Count )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġrespect s Width Set By Modifier () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtext Field Width Ġ= Ġ 1 0 0 . dp ĊĠĠĠĠĠĠĠ Ġval ĠfontSize Ġ= Ġ 4 . sp ĊĊĠĠĠĠĠĠĠ Ġvar Ġsize : ĠInt ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġrule . setContent Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDefault Width TextField ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġ" abc ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠfontSize Ġ= ĠfontSize , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. preferred Width ( textField Width ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. on Glob ally Position ed Ġ{ Ġsize Ġ= Ġit . size . width Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdensity Ġ= Ġdensity ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġwith ( density ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( size ). isEqualTo ( textField Width . toInt Px ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdefault TextField Size ( ĊĠĠĠĠĠĠĠ ĠfontSize : ĠText Unit , ĊĠĠĠĠĠĠĠ Ġchar Count : ĠInt Ġ= Ġ 1 0 Ġ// Ġ 1 0 Ġis Ġthe Ġconfiguration Ġfor Ġdefault ĠTextField Ġwidth Ġin Ġglyph s ĊĠĠĠ Ġ): ĠInt Ġ= Ġwith ( density ) Ġ{ ĊĠĠĠĠĠĠĠ Ġceil ( char Count Ġ* ĠfontSize . to Px ()). round ToInt () ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Opt In ( Experimental Foundation Api :: class ) Ċ @ Composable Ċ private Ġfun ĠDefault Width TextField ( ĊĠĠĠ Ġtext : ĠString , ĊĠĠĠ ĠfontSize : ĠText Unit , ĊĠĠĠ Ġmodifier : ĠModifier , ĊĠĠĠ Ġdensity : ĠD ensity Ċ ) Ġ{ ĊĠĠĠ Ġval Ġfont Ġ= Ġfont ( ĊĠĠĠĠĠĠĠ Ġres Id Ġ= Ġandroidx . compose . ui . text . font . test . R . font . sample _ font , ĊĠĠĠĠĠĠĠ Ġweight Ġ= ĠFontWeight . Normal , ĊĠĠĠĠĠĠĠ Ġstyle Ġ= ĠFont Style . Normal ĊĠĠĠ Ġ) ĊĊĠĠĠ ĠPro viders ( Ambient Density Ġprovides Ġdensity ) Ġ{ ĊĠĠĠĠĠĠĠ Ġandroidx . compose . foundation . layout . Box Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBasic TextField ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= ĠText FieldValue ( text ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Style Ġ= ĠTextStyle ( fontSize Ġ= ĠfontSize , ĠfontFamily Ġ= Ġfont . as Font Family ()), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Value Change Ġ= Ġ{}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= Ġmodifier ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ