All Downloads are FREE. Search and download functionalities are using the official Maven repository.

nyaya.test.Executor.scala Maven / Gradle / Ivy

package nyaya.test

import nyaya.gen.ThreadNumber
import nyaya.prop.Prop
import nyaya.test.PTest._

object Executor {
  type DebugPrefix = String
  case class DataCtx(sampleSize: SampleSize, threadNumber: ThreadNumber, seed: Option[Long], debugPrefix: DebugPrefix)
  type Data[A] = DataCtx => Iterator[A]
}

import Executor.{DataCtx, Data}

trait Executor {
  def run[A](p: Prop[A], g: Data[A], S: Settings): RunState[A]
  def prove[A](p: Prop[A], d: Domain[A], S: Settings): RunState[A]
}

object SingleThreadedExecutor extends Executor {
  override def run[A](p: Prop[A], g: Data[A], S: Settings): RunState[A] = {
    val data = g(DataCtx(S.sampleSize, ThreadNumber(0), S.seed, ""))
    var i = 0
    testN(p, data, () => {i+=1; i}, S)
  }

  override def prove[A](p: Prop[A], d: Domain[A], S: Settings): RunState[A] =
    proveN(p, d, 0, 1, _ + 1, S)
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy