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

gem.arb.ArbTimestamp.scala Maven / Gradle / Ivy

// Copyright (c) 2016-2020 Association of Universities for Research in Astronomy, Inc. (AURA)
// For license information see LICENSE or https://opensource.org/licenses/BSD-3-Clause

package gem
package arb

import gem.util.Timestamp
import gsp.math.arb.ArbTime

import org.scalacheck._

import java.time._

// Arbitrary but reasonable Timestamp
trait ArbTimestamp {

  import ArbTime.cogInstant

  implicit val arbTimestamp: Arbitrary[Timestamp] =
    Arbitrary {
      for {
        m <- Gen.choose(0L, Duration.between(Instant.EPOCH, Timestamp.Max.toInstant).toMillis)
        u <- Gen.choose(0, 999L)
      } yield Timestamp.Epoch.plusMillis(m).flatMap(_.plusMicros(u)).getOrElse(Timestamp.Epoch)
    }

  implicit val cogTimestamp: Cogen[Timestamp] =
    Cogen[Instant].contramap(_.toInstant)

}

object ArbTimestamp extends ArbTimestamp




© 2015 - 2025 Weber Informatics LLC | Privacy Policy