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.
 
 
 

46 lines
1.7 KiB

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)
}
}