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

org.scalacheck.ops.time.AbstractTimeGenerators.scala Maven / Gradle / Ivy

package org.scalacheck.ops.time

import org.scalacheck.Gen

private[time] trait AbstractTimeGenerators extends GenericTimeGenerators {

  protected[time] def now(implicit params: ParamsType): InstantType

  protected[time] def addToCeil(instant: InstantType, duration: DurationType)(implicit params: ParamsType): InstantType

  protected[time] def subtractToFloor(instant: InstantType, duration: DurationType)(implicit params: ParamsType): InstantType

  override def before(when: InstantType, maxRange: DurationType = defaultRange)
    (implicit params: ParamsType = defaultParams): Gen[InstantType] = {
    between(subtractToFloor(when, maxRange), when)
  }

  override def beforeNow(implicit params: ParamsType = defaultParams): Gen[InstantType] = {
    before(now)
  }

  override def beforeNowWithin(maxRange: DurationType)
    (implicit params: ParamsType = defaultParams): Gen[InstantType] = {
    before(now, maxRange)
  }

  override def after(when: InstantType, maxRange: DurationType = defaultRange)
    (implicit params: ParamsType = defaultParams): Gen[InstantType] = {
    between(when, addToCeil(when, maxRange))
  }

  override def afterNow(implicit params: ParamsType = defaultParams): Gen[InstantType] = {
    after(now)
  }

  override def afterNowWithin(maxRange: DurationType)
    (implicit params: ParamsType = defaultParams): Gen[InstantType] = {
    after(now, maxRange)
  }

  override def around(when: InstantType, plusOrMinus: DurationType)
    (implicit params: ParamsType = defaultParams): Gen[InstantType] = {
    between(subtractToFloor(when, plusOrMinus), addToCeil(when, plusOrMinus))
  }

  override def aroundNow(implicit params: ParamsType = defaultParams): Gen[InstantType] = {
    around(now, defaultRange)
  }

  override def aroundNowWithin(plusOrMinus: DurationType)
    (implicit params: ParamsType = defaultParams): Gen[InstantType] = {
    around(now, plusOrMinus)
  }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy