package wow.doge.mygame

import org.scalatest.funsuite.AnyFunSuite
import wow.doge.mygame.subsystems.moddingsystem.ModdingSystem
import monix.execution.Scheduler.Implicits.global
import io.circe.Printer
import monix.bio.UIO
import cats.syntax.eq._

class ModdingSystemTest extends AnyFunSuite {
  val printer = Printer.spaces2
  test("main") {
    val io = for {
      res <- ModdingSystem.run()
      _ <- UIO(
        assert(
          (res.parseSuccesses.length + res.parseFailures.length) eqv res.readSuccesses.length
        )
      )
      _ <- ModdingSystem.log(res)
    } yield res
    io.attempt.runSyncUnsafe() match {
      case Left(value)  => pprint.log(value); ()
      case Right(value) => ()
    }
  }
}
