package Ġcom . et ien nel enh art . e iff el . state . extension Ċ Ċ import Ġandroidx . arch . core . executor . testing . Instant Task Executor Rule Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġcom . et ien nel enh art . e iff el . state . State Ċ import Ġorg . junit . Rule Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . rules . Test Rule Ċ import Ġkotlin . test . assertEquals Ċ Ċ class ĠState Ob serve Property Test Ġ{ ĊĊĠĠĠ Ġ@ get : Rule ĊĠĠĠ Ġval Ġrule : ĠTest Rule Ġ= ĠInstant Task Executor Rule () ĊĊĠĠĠ Ġdata Ġclass ĠTest State ( val Ġcount : ĠInt Ġ= Ġ 0 , Ġval Ġother : ĠString Ġ= Ġ"") Ġ: ĠState ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` G IV EN ĠLive Data Ġwith ĠState ĠWHEN Ġobserved Ġproperty Ġchanged ĠTHEN Ġ' onChange ' Ġis Ġinvoked `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstate Ġ= ĠMutable LiveData < Test State >(). apply Ġ{ Ġvalue Ġ= ĠTest State () Ġ} ĊĊĠĠĠĠĠĠĠ Ġvar Ġactual Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġstate . observe Property Fore ver ({ Ġit . count Ġ}) Ġ{ Ġactual Ġ= Ġit Ġ} ĊĠĠĠĠĠĠĠ Ġstate . value Ġ= Ġstate . value !!. copy ( count Ġ= Ġ 1 ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġactual ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` G IV EN ĠE iff el ViewModel Ġsubclass ĠWHEN Ġ' dispatch ' Ġdoes Ġnot Ġchange Ġobserved Ġproperty ĠTHEN Ġ' onChange ' Ġis Ġnot Ġinvoked `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstate Ġ= ĠMutable LiveData < Test State >(). apply Ġ{ Ġvalue Ġ= ĠTest State () Ġ} ĊĊĠĠĠĠĠĠĠ Ġvar Ġactual Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġstate . observe Property Fore ver ({ Ġit . count Ġ}) Ġ{ Ġactual Ġ= Ġit Ġ} ĊĠĠĠĠĠĠĠ Ġstate . value Ġ= Ġstate . value !!. copy ( other Ġ= Ġ" changed ") ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġactual ) ĊĠĠĠ Ġ} Ċ } Ċ