/* Ċ Ġ* Ġ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 . ui . platform Ċ Ċ import Ġandroidx . compose . runtime . Experimental Compose Api Ċ import Ġandroidx . compose . runtime . mutable State Of Ċ import Ġandroidx . compose . runtime . snapshots . Snapshot Ċ import Ġandroidx . compose . ui . node . Experimental Layout Node Api Ċ import Ġandroidx . compose . ui . node . Layout Node Ċ import Ġorg . jetbrains . sk iko . Library Ċ import Ġorg . junit . Assert . assertEquals Ċ import Ġorg . junit . Test Ċ import Ġjava . awt . Component Ċ Ċ @ Opt In ( Experimental Layout Node Api :: class , ĠExperimental Compose Api :: class ) Ċ class ĠDesktop Owner Test Ġ{ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` single Ġinvalidate Ġwith Ġmultiple Ġob servers Ġand Ġsingle Ġstate Ġchange `() Ġ{ ĊĠĠĠĠĠĠĠ ĠLibrary . load ("/", Ġ" sk iko ") ĊĊĠĠĠĠĠĠĠ Ġvar Ġinvalidate Count Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġval Ġowners Ġ= ĠDesktop Owners ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomponent Ġ= Ġobject Ġ: ĠComponent () Ġ{}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvalidate Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinvalidate Count ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġowner Ġ= ĠDesktop Owner ( owners ) ĊĠĠĠĠĠĠĠ Ġval Ġnode Ġ= ĠLayout Node () ĊĠĠĠĠĠĠĠ Ġval Ġstate Ġ= Ġmutable State Of ( 2 ) ĊĊĠĠĠĠĠĠĠ Ġowner . observe Layout Model Reads ( node ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstate . value ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġowner . observe Layout Model Reads ( node ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstate . value ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġold Invalidate Count Ġ= Ġinvalidate Count ĊĊĠĠĠĠĠĠĠ ĠSnapshot . notify Objects Initialized () ĊĠĠĠĠĠĠĠ Ġstate . value ++ ĊĠĠĠĠĠĠĠ ĠSnapshot . send Apply Notifications () ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġinvalidate Count Ġ- Ġold Invalidate Count ) ĊĠĠĠ Ġ} Ċ }