/* Ċ Ġ* ĠCopyright Ġ 2 0 1 6 - 2 0 2 1 ĠJetBrains Ġs . r . o . ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense . Ċ Ġ*/ Ċ Ċ package Ġkotlinx . coroutines Ċ Ċ import Ġkotlinx . coroutines . flow .* Ċ import Ġorg . junit .* Ċ Ċ class ĠRe usable Continuation St ress Test Ġ: ĠTest Base () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġiterations Ġ= Ġ 1 0 0 0 Ġ* Ġstress Test Multiplier Sqrt ĊĊĠĠĠ Ġ@ Test Ġ// ĠOrigin ally Ġreported Ġby Ġ@ den is - be z ru kov Ġin Ġ# 2 7 3 6 ĊĠĠĠ Ġfun Ġtest De bounce With State Flow () Ġ= Ġrun Blocking < Unit > Ġ{ ĊĠĠĠĠĠĠĠ Ġwith Context ( Dispatch ers . Default ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepeat ( iterations ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlaunch Ġ{ Ġ// Ġ<- Ġload Ġthe Ġdispatcher Ġand ĠOS Ġscheduler ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun St ress Test Once ( 1 , Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġsuspend Ġfun Ġrun St ress Test Once ( delay : ĠInt , Ġdebounce : ĠInt ) Ġ= Ġcoroutine Scope Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstate Flow Ġ= ĠMutable State Flow ( 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġemitter Ġ= Ġlaunch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepeat ( 1 0 0 0 ) Ġ{ Ġi Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstate Flow . emit ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelay ( delay . to Long ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġvar Ġlast Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġstate Flow . de bounce ( de bounce . to Long ()). take ( 1 0 0 ). collect Ġ{ Ġi Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( i Ġ- Ġlast Ġ> Ġ 1 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast Ġ= Ġi ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġemitter . cancel () ĊĠĠĠ Ġ} Ċ } Ċ