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

gem.arb.ArbObservingNight.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.enum.Site
import gem.math.{ LocalObservingNight, ObservingNight }
import gsp.math.arb.ArbTime

import org.scalacheck._
import org.scalacheck.Arbitrary._

import java.time.LocalDate


trait ArbObservingNight {

  import ArbEnumerated._
  import ArbTime._

  implicit val arbLocalObservingNight: Arbitrary[LocalObservingNight] =
    Arbitrary {
      arbitrary[LocalDate].map(LocalObservingNight(_))
    }

  implicit val arbObservingNight: Arbitrary[ObservingNight] =
    Arbitrary {
      for {
        n <- arbitrary[LocalObservingNight]
        s <- arbitrary[Site]
      } yield n.atSite(s)
    }

  implicit val cogLocalObservingNight: Cogen[LocalObservingNight] =
    Cogen[LocalDate].contramap(_.toLocalDate)

  implicit val cogObservingNight: Cogen[ObservingNight] =
    Cogen[(Site, LocalObservingNight)].contramap(o => (o.site, o.toLocalObservingNight))
}

object ArbObservingNight extends ArbObservingNight




© 2015 - 2025 Weber Informatics LLC | Privacy Policy