package Ġtest Ċ Ċ import ĠComponent Ċ import ĠRoot Info Ċ import Ġkotlinx . css . height Ċ import Ġkotlinx . css . px Ċ import Ġorg . w 3 c . dom . Element Ċ import Ġreact . FC Ċ import Ġreact . Props Ċ import Ġreact . dom . flush Sync Ċ import Ġreact . fc Ċ import Ġrun Test Ċ import Ġstyled . Global Styles Ċ import Ġstyled . css Ċ import Ġstyled . sheets . CSS O MS heet Ċ import Ġstyled . sheets . Remove Mode Ċ import Ġstyled . sheets . Rule Type Ċ import Ġstyled . styled Div Ċ import Ġkotlin . test . Before Test Ċ import Ġkotlin . test . Test Ċ import Ġkotlin . test . assertEquals Ċ import Ġkotlin . test . assertNotNull Ċ Ċ class ĠSheet Partition ing Test Ġ: ĠTest Base () Ġ{ ĊĠĠĠ Ġprivate Ġval Ġsecond Root Ġby Ġlazy Ġ{ ĠRoot Info . create () Ġ} ĊĠĠĠ Ġprivate Ġval Ġthird Root Ġby Ġlazy Ġ{ ĠRoot Info . create () Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinject Additional ( component : ĠComponent , Ġroot : ĠRoot Info Ġ= Ġsecond Root ): ĠElement Ġ{ ĊĠĠĠĠĠĠĠ Ġflush Sync Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġroot . render Component ( component ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġelement Ġ= Ġroot . element . first Element Child ĊĠĠĠĠĠĠĠ ĠassertNotNull ( element ) ĊĠĠĠĠĠĠĠ Ġreturn Ġelement ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Before Test ĊĠĠĠ Ġoverride Ġfun Ġbefore () Ġ= Ġrun Test Ġ{ ĊĠĠĠĠĠĠĠ Ġclear Styles () ĊĠĠĠĠĠĠĠ ĠGlobal Styles . sheet Ġ= ĠCSS O MS heet ( Rule Type . REG ULAR , ĠRemove Mode . Instant ly , Ġmax Rules Per Sheet Ġ= Ġ 1 0 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġrules Added ToOne Sheet In One Batch () Ġ= Ġrun Test Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstyled Component Ġ= Ġget FC ( 1 .. 2 5 0 ) ĊĠĠĠĠĠĠĠ Ġinject ( styled Component ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 5 0 , Ġget Rules (). size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( listOf ( 2 5 0 ), Ġget Style sheets (). map Ġ{ Ġit . css Rules . length Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġrules Added To New StyleSheet s () Ġ= Ġrun Test Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstyled Component 1 Ġ= Ġget FC ( 1 .. 1 0 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġstyled Component 2 Ġ= Ġget FC ( 1 0 1 .. 2 0 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġstyled Component 3 Ġ= Ġget FC ( 2 0 1 .. 2 5 0 ) ĊĊĠĠĠĠĠĠĠ Ġinject ( styled Component 1 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 0 0 , Ġget Rules (). size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( listOf ( 1 0 0 ), Ġget Style sheets (). map Ġ{ Ġit . css Rules . length Ġ}) ĊĊĠĠĠĠĠĠĠ Ġinject Additional ( styled Component 2 , Ġsecond Root ) ĊĠĠĠĠĠĠĠ Ġinject Additional ( styled Component 3 , Ġthird Root ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 5 0 , Ġget Rules (). size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( listOf ( 1 0 0 , Ġ 1 0 0 , Ġ 5 0 ), Ġget Style sheets (). map Ġ{ Ġit . css Rules . length Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġrules Added To Old And New StyleSheet s () Ġ= Ġrun Test Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstyled Component 1 Ġ= Ġget FC ( 1 .. 5 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġstyled Component 2 Ġ= Ġget FC ( 5 1 .. 1 5 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġstyled Component 3 Ġ= Ġget FC ( 1 5 1 .. 2 5 0 ) ĊĊĠĠĠĠĠĠĠ Ġinject ( styled Component 1 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 5 0 , Ġget Rules (). size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( listOf ( 5 0 ), Ġget Style sheets (). map Ġ{ Ġit . css Rules . length Ġ}) ĊĊĠĠĠĠĠĠĠ Ġinject Additional ( styled Component 2 , Ġsecond Root ) ĊĠĠĠĠĠĠĠ Ġinject Additional ( styled Component 3 , Ġthird Root ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 5 0 , Ġget Rules (). size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( listOf ( 5 0 , Ġ 1 0 0 , Ġ 1 0 0 ), Ġget Style sheets (). map Ġ{ Ġit . css Rules . length Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġcompress Sheet s After Rules Deletion () Ġ= Ġrun Test Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstyle Ranges Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġuntil Ġ 2 5 , ĊĠĠĠĠĠĠĠĠĠĠĠĠ 2 5 Ġuntil Ġ 1 0 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 0 0 Ġuntil Ġ 1 2 5 , ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 2 5 Ġuntil Ġ 2 0 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠ 2 0 0 Ġuntil Ġ 3 0 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠ 3 0 0 Ġuntil Ġ 3 5 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠ 3 5 0 Ġuntil Ġ 4 0 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠ 4 0 0 Ġuntil Ġ 4 5 0 ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġroots Ġ= Ġstyle Ranges . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRoot Info . create () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġcomponents Ġ= Ġstyle Ranges . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget FC ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcomponents . zip ( roots ). forEach Ġ{ Ġ( component , Ġroot ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinject Additional ( component , Ġroot ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals ( 4 5 0 , Ġget Rules (). size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( listOf ( 1 0 0 , Ġ 1 0 0 , Ġ 1 0 0 , Ġ 1 0 0 , Ġ 5 0 ), Ġget Style sheets (). map Ġ{ Ġit . css Rules . length Ġ}) ĊĠĠĠĠĠĠĠ Ġval Ġrules Ġ= Ġget Rules () ĊĊĠĠĠĠĠĠĠ Ġroots [ 1 ]. un mount () ĊĠĠĠĠĠĠĠ Ġroots [ 3 ]. un mount () ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 3 0 0 , Ġget Rules (). size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( listOf ( 5 0 , Ġ 1 0 0 , Ġ 1 0 0 , Ġ 5 0 ), Ġget Style sheets (). map Ġ{ Ġit . css Rules . length Ġ}) ĊĠĠĠĠĠĠĠ Ġval Ġrules 1 Ġ= Ġrules Ġ- Ġrules . slice ( style Ranges [ 1 ]). toSet () Ġ- Ġrules . slice ( style Ranges [ 3 ]). toSet () ĊĠĠĠĠĠĠĠ ĠassertEquals ( rules 1 , Ġget Rules ()) ĊĊĠĠĠĠĠĠĠ Ġroots [ 5 ]. un mount () ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 5 0 , Ġget Rules (). size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( listOf ( 5 0 , Ġ 1 0 0 , Ġ 1 0 0 ), Ġget Style sheets (). map Ġ{ Ġit . css Rules . length Ġ}) ĊĠĠĠĠĠĠĠ Ġval Ġrules 2 Ġ= Ġrules 1 Ġ- Ġrules . slice ( style Ranges [ 5 ]). toSet () ĊĠĠĠĠĠĠĠ ĠassertEquals ( rules 2 , Ġget Rules ()) ĊĠĠĠĠĠĠĠ Ġroots . forEach Ġ{ Ġit . un mount () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget FC ( range : ĠInt Range ): ĠFC < Props > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġfc Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstyled Div Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcss Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrange . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdesc endants (" k $ it ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheight Ġ= Ġ 0 . px ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }