package Ġcom . me u us 9 0 . book search er . base . util Ċ Ċ import Ġandroidx . arch . core . executor . testing . Instant Task Executor Rule Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġandroidx . lifecycle . as Flow Ċ import Ġandroidx . lifecycle . viewModel Scope Ċ import Ġcom . me u us 9 0 . book search er . base . common . util . custom De bounce Ċ import Ġcom . me u us 9 0 . book search er . test _ util _ kit . Coroutine Test Rule Ċ import Ġcom . me u us 9 0 . book search er . test _ util _ kit . get Or Await Value Ċ import Ġkotlinx . coroutines . Experimental Cor outines Api Ċ import Ġkotlinx . coroutines . Internal Cor outines Api Ċ import Ġkotlinx . coroutines . Obsolete Cor outines Api Ċ import Ġkotlinx . coroutines . flow . collect Ċ import Ġkotlinx . coroutines . flow . distinct Until Changed Ċ import Ġkotlinx . coroutines . launch Ċ import Ġkotlinx . coroutines . test . run Blocking Test Ċ import Ġorg . junit . Assert Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Rule Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . rules . Test Watcher Ċ Ċ @ Internal Cor outines Api Ċ @ Obsolete Cor outines Api Ċ @ Experimental Cor outines Api Ċ class ĠFlow Ext Test Ġ: ĠTest Watcher () Ġ{ ĊĠĠĠ Ġ@ get : Rule ĊĠĠĠ Ġval Ġinstant Executor Rule Ġ= ĠInstant Task Executor Rule () ĊĊĠĠĠ Ġ@ get : Rule ĊĠĠĠ Ġval Ġcoroutine Test Rule Ġ= ĠCor outine Test Rule () ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠviewModel : ĠTest ViewModel ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun Ġsetup () Ġ{ ĊĠĠĠĠĠĠĠ Ġrun Blocking Test Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel Ġ= ĠTest ViewModel () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġcustom De bounce Test () Ġ{ ĊĠĠĠĠĠĠĠ Ġrun Blocking Test Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . org . value Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . org . value Ġ= Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . org . value Ġ= Ġ 3 ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . org . get Or Await Value (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 3 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" custom De bounce Test () Ġpass ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Internal Cor outines Api ĊĠĠĠ Ġclass ĠTest ViewModel Ġ: ĠViewModel () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġorg Ġ= ĠMutable LiveData < Int >() ĊĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġorg . as Flow () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. custom De bounce ( 5 0 0 L ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. distinct Until Changed () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. collect Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpull Trigger ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġpull Trigger ( params : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" trigger Ġpulled ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }