@ file : Suppress (" UNUSED _ VARIABLE ", Ġ" unused ") Ċ Ċ package Ġde . tr bnb . mv v mb ase . rx java 2 . test Ċ Ċ import Ġde . tr bnb . mv v mb ase . Bind able Ċ import Ġde . tr bnb . mv v mb ase . Mv vm Base Ċ import Ġde . tr bnb . mv v mb ase . databinding . Base ViewModel Ċ import Ġde . tr bnb . mv v mb ase . databinding . init Data Binding Ċ import Ġde . tr bnb . mv v mb ase . rx java 2 . Rx ViewModel Ċ import Ġio . reactivex . Single Ċ import Ġio . reactivex . subjects . Single Subject Ċ import Ġorg . junit . jupiter . api . Before All Ċ import Ġorg . junit . jupiter . api . Test Ċ Ċ class ĠSingle Binding Tests Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Before All ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġsetup () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠM v vm Base . init Data Binding (). disable ViewModel Lifecycle Thread Constraints () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` is Ġthe Ġgiven Ġdefault Ġvalue Ġused `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsingle : ĠSingle < Int > Ġ= ĠSingle Subject . create () ĊĊĠĠĠĠĠĠĠ Ġval ĠviewModel Ġ= Ġobject Ġ: ĠBase ViewModel (), ĠRx ViewModel Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġproperty Ġby Ġsingle . to Bind able ( defaultValue Ġ= Ġ 3 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġassert ( viewModel . property Ġ== Ġ 3 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` is Ġnull Ġthe Ġdefault Ġdefault Ġvalue `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsingle : ĠSingle < Int > Ġ= ĠSingle Subject . create () ĊĊĠĠĠĠĠĠĠ Ġval ĠviewModel Ġ= Ġobject Ġ: ĠBase ViewModel (), ĠRx ViewModel Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġproperty Ġby Ġsingle . to Bind able () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġassert ( viewModel . property Ġ== Ġnull ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` is ĠonError Ġcalled `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsingle : ĠSingle Subject < Int > Ġ= ĠSingle Subject . create () ĊĠĠĠĠĠĠĠ Ġvar Ġis OnError Called Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġval ĠonError Ġ= Ġ{ Ġ_: ĠThrowable Ġ-> Ġis OnError Called Ġ= Ġtrue Ġ} ĊĊĠĠĠĠĠĠĠ Ġval ĠviewModel Ġ= Ġobject Ġ: ĠBase ViewModel (), ĠRx ViewModel Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġproperty Ġby Ġsingle . to Bind able ( onError Ġ= ĠonError ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġsingle . onError ( RuntimeException ()) ĊĠĠĠĠĠĠĠ Ġassert ( is OnError Called ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` are Ġnew Ġvalues Ġreceived `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsingle : ĠSingle Subject < Int > Ġ= ĠSingle Subject . create () ĊĊĠĠĠĠĠĠĠ Ġval ĠviewModel Ġ= Ġobject Ġ: ĠBase ViewModel (), ĠRx ViewModel Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġproperty Ġby Ġsingle . to Bind able < Int >( defaultValue Ġ= Ġ 3 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval ĠnewValue Ġ= Ġ 5 5 ĊĠĠĠĠĠĠĠ Ġsingle . on Success ( newValue ) ĊĠĠĠĠĠĠĠ Ġassert ( viewModel . property Ġ== ĠnewValue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` is Ġnotify PropertyChanged () Ġcalled Ġ( automatic Ġfield ĠID )` () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsingle : ĠSingle Subject < Int > Ġ= ĠSingle Subject . create () ĊĊĠĠĠĠĠĠĠ Ġval ĠviewModel Ġ= ĠViewModel With Bind able ( single ) ĊĊĠĠĠĠĠĠĠ Ġval Ġproperty Changed Callback Ġ= ĠTest PropertyChanged Callback () ĊĠĠĠĠĠĠĠ ĠviewModel . add On PropertyChanged Callback ( property Changed Callback ) ĊĊĠĠĠĠĠĠĠ Ġval ĠnewValue Ġ= Ġ 5 5 ĊĠĠĠĠĠĠĠ Ġsingle . on Success ( newValue ) ĊĠĠĠĠĠĠĠ Ġassert ( BR . property Ġin Ġproperty Changed Callback . changed Property Ids ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠViewModel With Bind able ( single : ĠSingle < Int >) Ġ: ĠBase ViewModel (), ĠRx ViewModel Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ get : Bind able ĊĠĠĠĠĠĠĠ Ġval Ġproperty Ġby Ġsingle . to Bind able < Int >( defaultValue Ġ= Ġ 3 ) ĊĠĠĠ Ġ} Ċ } Ċ