You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
import org.scalatest.funsuite.AnyFunSuite import scala.concurrent.duration._ import monix.bio.Task import nova.monadic_sfx.util.reactive.store.Store import nova.monadic_sfx.util.History import nova.monadic_sfx.util.reactive.store.Reducer import nova.monadic_sfx.ui.components.router.Page import nova.monadic_sfx.util.IOUtils.toIO import monix.reactive.Observable import cats.effect.Resource import nova.monadic_sfx.ui.components.router.FXRouter import io.odin.consoleLogger class BackpressuredStoreTest extends AnyFunSuite { import monix.execution.Scheduler.Implicits.global val logger = consoleLogger[Task]() test("backpressed store test") { (for { _ <- Resource .eval(new FXRouter[Page].store2(Page.Home, logger)) .use { myStore => for { _ <- toIO( myStore.source .doOnNextF(_ => Task.sleep(1.seconds)) .doOnNextF(item => logger.debug(s"Task1: Got Item $item")) .completedL ).startAndForget _ <- toIO( myStore.source .doOnNextF(_ => Task.sleep(3.seconds)) .doOnNextF(item => logger.debug(s"Task2: Got Item $item")) .completedL ).startAndForget _ <- myStore.sink.offer(FXRouter.Replace(Page.Home)) _ <- myStore.sink.offer(FXRouter.Replace(Page.Todo)) _ <- myStore.sink.offer(FXRouter.Replace(Page.UserHome)) _ <- myStore.sink.offer(FXRouter.Backward) _ <- Task.sleep(25.seconds) } yield ()
} // _ <- Task.sleep(2.seconds)
} yield ()).runSyncUnsafe(26.seconds) } }
|