36 lines
1011 B
Scala
36 lines
1011 B
Scala
package wow.doge.mygame
|
|
|
|
import cats.data.Reader
|
|
import monix.bio.UIO
|
|
import monix.execution.Scheduler.Implicits.global
|
|
import org.scalatest.funsuite.AnyFunSuite
|
|
|
|
class ReaderTest extends AnyFunSuite {
|
|
|
|
// type IoReaderT[S, E, A] = ReaderT[UIO, S, Either[E, A]]
|
|
// val IoReaderT = ReaderT
|
|
// val t =
|
|
// ReaderT[UIO, String, Either[Error, Unit]](s => UIO.unit.attempt)
|
|
// .run("s")
|
|
// .rethrow
|
|
// val r: IoReaderT[String, Error, Unit] = IoReaderT(s => UIO.unit.attempt)
|
|
// val t2 = r.run("s").rethrow
|
|
// Kleisli[IO, String, Unit](s => IO.unit)
|
|
|
|
def fun1: Reader[String, UIO[Unit]] = Reader(str => UIO(println(str)))
|
|
def fun2: Reader[Int, UIO[Unit]] = Reader(num => UIO(println(num)))
|
|
|
|
def total: Reader[Environment, UIO[Unit]] =
|
|
for {
|
|
x <- fun1.local[Environment](_.str)
|
|
y <- fun2.local[Environment](_.num)
|
|
} yield UIO.parSequence(List(x, y)).void
|
|
|
|
val io: UIO[Unit] = total.run(Environment("hello", 50))
|
|
|
|
test("runTest") {
|
|
io.runSyncUnsafe()
|
|
}
|
|
|
|
}
|