From 46591a31322faf1077e0a9a48e8e3f4909c87bca Mon Sep 17 00:00:00 2001 From: Carlos Quiroz Date: Sat, 10 Sep 2022 19:40:52 -0400 Subject: [PATCH 1/5] Add a time dimension to brightness measurements --- .../lucuma/core/math/BrightnessUnits.scala | 3 ++ .../lucuma/core/model/SourceProfile.scala | 12 +++---- .../core/model/SpectralDefinition.scala | 16 ++++----- .../main/scala/lucuma/core/model/Target.scala | 36 +++++++++---------- .../model/arb/ArbSpectralDefinition.scala | 12 +++++-- .../core/model/SourceProfileSuite.scala | 9 +++-- .../core/model/SpectralDefinitionSuite.scala | 9 +++-- .../scala/lucuma/core/model/TargetSuite.scala | 3 ++ 8 files changed, 62 insertions(+), 38 deletions(-) diff --git a/modules/core/shared/src/main/scala/lucuma/core/math/BrightnessUnits.scala b/modules/core/shared/src/main/scala/lucuma/core/math/BrightnessUnits.scala index 95481fde9..744b71b0b 100644 --- a/modules/core/shared/src/main/scala/lucuma/core/math/BrightnessUnits.scala +++ b/modules/core/shared/src/main/scala/lucuma/core/math/BrightnessUnits.scala @@ -6,9 +6,11 @@ package core package math import cats.data.NonEmptyList +import cats.data.NonEmptyMap import lucuma.core.math.dimensional._ import lucuma.core.math.units._ import lucuma.core.util.Enumerated +import lucuma.core.util.Timestamp object BrightnessUnits { type Integrated @@ -19,6 +21,7 @@ object BrightnessUnits { trait FluxDensityContinuum[+T] type BrightnessMeasure[T] = Measure[BigDecimal] Of Brightness[T] + type BrightnessMeasureOverTime[T] = NonEmptyMap[Timestamp, Measure[BigDecimal] Of Brightness[T]] // Brightness Integrated implicit object VegaMagnitudeIsIntegratedBrightnessUnit diff --git a/modules/core/shared/src/main/scala/lucuma/core/model/SourceProfile.scala b/modules/core/shared/src/main/scala/lucuma/core/model/SourceProfile.scala index 97964570b..f4a7bb448 100644 --- a/modules/core/shared/src/main/scala/lucuma/core/model/SourceProfile.scala +++ b/modules/core/shared/src/main/scala/lucuma/core/model/SourceProfile.scala @@ -209,27 +209,27 @@ object SourceProfile { /** @group Optics */ val integratedBrightnesses - : Optional[SourceProfile, SortedMap[Band, BrightnessMeasure[Integrated]]] = + : Optional[SourceProfile, SortedMap[Band, BrightnessMeasureOverTime[Integrated]]] = integratedSpectralDefinition.andThen(SpectralDefinition.brightnesses[Integrated]) /** @group Optics */ - val surfaceBrightnesses: Optional[SourceProfile, SortedMap[Band, BrightnessMeasure[Surface]]] = + val surfaceBrightnesses: Optional[SourceProfile, SortedMap[Band, BrightnessMeasureOverTime[Surface]]] = surfaceSpectralDefinition.andThen(SpectralDefinition.brightnesses[Surface]) /** @group Optics */ - val integratedBrightnessesT: Traversal[SourceProfile, BrightnessMeasure[Integrated]] = + val integratedBrightnessesT: Traversal[SourceProfile, BrightnessMeasureOverTime[Integrated]] = integratedSpectralDefinition.andThen(SpectralDefinition.brightnessesT[Integrated]) /** @group Optics */ - val surfaceBrightnessesT: Traversal[SourceProfile, BrightnessMeasure[Surface]] = + val surfaceBrightnessesT: Traversal[SourceProfile, BrightnessMeasureOverTime[Surface]] = surfaceSpectralDefinition.andThen(SpectralDefinition.brightnessesT[Surface]) /** @group Optics */ - def integratedBrightnessIn[T](b: Band): Traversal[SourceProfile, BrightnessMeasure[Integrated]] = + def integratedBrightnessIn[T](b: Band): Traversal[SourceProfile, BrightnessMeasureOverTime[Integrated]] = integratedSpectralDefinition.andThen(SpectralDefinition.brightnessIn[Integrated](b)) /** @group Optics */ - def surfaceBrightnessIn[T](b: Band): Traversal[SourceProfile, BrightnessMeasure[Surface]] = + def surfaceBrightnessIn[T](b: Band): Traversal[SourceProfile, BrightnessMeasureOverTime[Surface]] = surfaceSpectralDefinition.andThen(SpectralDefinition.brightnessIn[Surface](b)) /** @group Optics */ diff --git a/modules/core/shared/src/main/scala/lucuma/core/model/SpectralDefinition.scala b/modules/core/shared/src/main/scala/lucuma/core/model/SpectralDefinition.scala index 32cf09f83..89c9092e0 100644 --- a/modules/core/shared/src/main/scala/lucuma/core/model/SpectralDefinition.scala +++ b/modules/core/shared/src/main/scala/lucuma/core/model/SpectralDefinition.scala @@ -44,7 +44,7 @@ object SpectralDefinition { final case class BandNormalized[T]( sed: UnnormalizedSED, - brightnesses: SortedMap[Band, BrightnessMeasure[T]] + brightnesses: SortedMap[Band, BrightnessMeasureOverTime[T]] ) extends SpectralDefinition[T] { lazy val bands: List[Band] = brightnesses.keys.toList @@ -59,7 +59,7 @@ object SpectralDefinition { ): BandNormalized[T0] = BandNormalized( sed, - brightnesses.map { case (band, brightness) => band -> brightness.toTag[Brightness[T0]] } + brightnesses.map { case (band, brightnesses) => band -> brightnesses.map(_.toTag[Brightness[T0]]) } ) } @@ -74,15 +74,15 @@ object SpectralDefinition { Focus[BandNormalized[T]](_.sed) /** @group Optics */ - def brightnesses[T]: Lens[BandNormalized[T], SortedMap[Band, BrightnessMeasure[T]]] = + def brightnesses[T]: Lens[BandNormalized[T], SortedMap[Band, BrightnessMeasureOverTime[T]]] = Focus[BandNormalized[T]](_.brightnesses) /** @group Optics */ - def brightnessesT[T]: Traversal[BandNormalized[T], BrightnessMeasure[T]] = + def brightnessesT[T]: Traversal[BandNormalized[T], BrightnessMeasureOverTime[T]] = brightnesses.each /** @group Optics */ - def brightnessIn[T](b: Band): Traversal[BandNormalized[T], BrightnessMeasure[T]] = + def brightnessIn[T](b: Band): Traversal[BandNormalized[T], BrightnessMeasureOverTime[T]] = brightnesses.filterIndex((a: Band) => a === b) } @@ -152,15 +152,15 @@ object SpectralDefinition { bandNormalized.andThen(BandNormalized.sed[T]) /** @group Optics */ - def brightnesses[T]: Optional[SpectralDefinition[T], SortedMap[Band, BrightnessMeasure[T]]] = + def brightnesses[T]: Optional[SpectralDefinition[T], SortedMap[Band, BrightnessMeasureOverTime[T]]] = bandNormalized.andThen(BandNormalized.brightnesses[T]) /** @group Optics */ - def brightnessesT[T]: Traversal[SpectralDefinition[T], BrightnessMeasure[T]] = + def brightnessesT[T]: Traversal[SpectralDefinition[T], BrightnessMeasureOverTime[T]] = bandNormalized.andThen(BandNormalized.brightnessesT[T]) /** @group Optics */ - def brightnessIn[T](b: Band): Traversal[SpectralDefinition[T], BrightnessMeasure[T]] = + def brightnessIn[T](b: Band): Traversal[SpectralDefinition[T], BrightnessMeasureOverTime[T]] = bandNormalized.andThen(BandNormalized.brightnessIn[T](b)) /** @group Optics */ diff --git a/modules/core/shared/src/main/scala/lucuma/core/model/Target.scala b/modules/core/shared/src/main/scala/lucuma/core/model/Target.scala index dc5c769e2..dc2db081b 100644 --- a/modules/core/shared/src/main/scala/lucuma/core/model/Target.scala +++ b/modules/core/shared/src/main/scala/lucuma/core/model/Target.scala @@ -208,29 +208,29 @@ object Target extends WithGid('t'.refined) with TargetOptics { sourceProfile.andThen(SourceProfile.unnormalizedSED) /** @group Optics */ - val integratedBrightnesses: Optional[Sidereal, SortedMap[Band, BrightnessMeasure[Integrated]]] = + val integratedBrightnesses: Optional[Sidereal, SortedMap[Band, BrightnessMeasureOverTime[Integrated]]] = sourceProfile.andThen(SourceProfile.integratedBrightnesses) /** @group Optics */ - val surfaceBrightnesses: Optional[Sidereal, SortedMap[Band, BrightnessMeasure[Surface]]] = + val surfaceBrightnesses: Optional[Sidereal, SortedMap[Band, BrightnessMeasureOverTime[Surface]]] = sourceProfile.andThen(SourceProfile.surfaceBrightnesses) /** @group Optics */ - val integratedBrightnessesT: Traversal[Sidereal, BrightnessMeasure[Integrated]] = + val integratedBrightnessesT: Traversal[Sidereal, BrightnessMeasureOverTime[Integrated]] = sourceProfile.andThen(SourceProfile.integratedBrightnessesT) /** @group Optics */ - val surfaceBrightnessesT: Traversal[Sidereal, BrightnessMeasure[Surface]] = + val surfaceBrightnessesT: Traversal[Sidereal, BrightnessMeasureOverTime[Surface]] = sourceProfile.andThen(SourceProfile.surfaceBrightnessesT) /** @group Optics */ def integratedBrightnessIn[T]( b: Band - ): Traversal[Sidereal, BrightnessMeasure[Integrated]] = + ): Traversal[Sidereal, BrightnessMeasureOverTime[Integrated]] = sourceProfile.andThen(SourceProfile.integratedBrightnessIn(b)) /** @group Optics */ - def surfaceBrightnessIn[T](b: Band): Traversal[Sidereal, BrightnessMeasure[Surface]] = + def surfaceBrightnessIn[T](b: Band): Traversal[Sidereal, BrightnessMeasureOverTime[Surface]] = sourceProfile.andThen(SourceProfile.surfaceBrightnessIn(b)) /** @group Optics */ @@ -328,29 +328,29 @@ object Target extends WithGid('t'.refined) with TargetOptics { /** @group Optics */ val integratedBrightnesses - : Optional[Nonsidereal, SortedMap[Band, BrightnessMeasure[Integrated]]] = + : Optional[Nonsidereal, SortedMap[Band, BrightnessMeasureOverTime[Integrated]]] = sourceProfile.andThen(SourceProfile.integratedBrightnesses) /** @group Optics */ - val surfaceBrightnesses: Optional[Nonsidereal, SortedMap[Band, BrightnessMeasure[Surface]]] = + val surfaceBrightnesses: Optional[Nonsidereal, SortedMap[Band, BrightnessMeasureOverTime[Surface]]] = sourceProfile.andThen(SourceProfile.surfaceBrightnesses) /** @group Optics */ - val integratedBrightnessesT: Traversal[Nonsidereal, BrightnessMeasure[Integrated]] = + val integratedBrightnessesT: Traversal[Nonsidereal, BrightnessMeasureOverTime[Integrated]] = sourceProfile.andThen(SourceProfile.integratedBrightnessesT) /** @group Optics */ - val surfaceBrightnessesT: Traversal[Nonsidereal, BrightnessMeasure[Surface]] = + val surfaceBrightnessesT: Traversal[Nonsidereal, BrightnessMeasureOverTime[Surface]] = sourceProfile.andThen(SourceProfile.surfaceBrightnessesT) /** @group Optics */ def integratedBrightnessIn[T]( b: Band - ): Traversal[Nonsidereal, BrightnessMeasure[Integrated]] = + ): Traversal[Nonsidereal, BrightnessMeasureOverTime[Integrated]] = sourceProfile.andThen(SourceProfile.integratedBrightnessIn(b)) /** @group Optics */ - def surfaceBrightnessIn[T](b: Band): Traversal[Nonsidereal, BrightnessMeasure[Surface]] = + def surfaceBrightnessIn[T](b: Band): Traversal[Nonsidereal, BrightnessMeasureOverTime[Surface]] = sourceProfile.andThen(SourceProfile.surfaceBrightnessIn(b)) /** @group Optics */ @@ -462,29 +462,29 @@ trait TargetOptics { this: Target.type => sourceProfile.andThen(SourceProfile.unnormalizedSED) /** @group Optics */ - val integratedBrightnesses: Optional[Target, SortedMap[Band, BrightnessMeasure[Integrated]]] = + val integratedBrightnesses: Optional[Target, SortedMap[Band, BrightnessMeasureOverTime[Integrated]]] = sourceProfile.andThen(SourceProfile.integratedBrightnesses) /** @group Optics */ - val surfaceBrightnesses: Optional[Target, SortedMap[Band, BrightnessMeasure[Surface]]] = + val surfaceBrightnesses: Optional[Target, SortedMap[Band, BrightnessMeasureOverTime[Surface]]] = sourceProfile.andThen(SourceProfile.surfaceBrightnesses) /** @group Optics */ - val integratedBrightnessesT: Traversal[Target, BrightnessMeasure[Integrated]] = + val integratedBrightnessesT: Traversal[Target, BrightnessMeasureOverTime[Integrated]] = sourceProfile.andThen(SourceProfile.integratedBrightnessesT) /** @group Optics */ - val surfaceBrightnessesT: Traversal[Target, BrightnessMeasure[Surface]] = + val surfaceBrightnessesT: Traversal[Target, BrightnessMeasureOverTime[Surface]] = sourceProfile.andThen(SourceProfile.surfaceBrightnessesT) /** @group Optics */ def integratedBrightnessIn[T]( b: Band - ): Traversal[Target, BrightnessMeasure[Integrated]] = + ): Traversal[Target, BrightnessMeasureOverTime[Integrated]] = sourceProfile.andThen(SourceProfile.integratedBrightnessIn(b)) /** @group Optics */ - def surfaceBrightnessIn[T](b: Band): Traversal[Target, BrightnessMeasure[Surface]] = + def surfaceBrightnessIn[T](b: Band): Traversal[Target, BrightnessMeasureOverTime[Surface]] = sourceProfile.andThen(SourceProfile.surfaceBrightnessIn(b)) /** @group Optics */ diff --git a/modules/testkit/src/main/scala/lucuma/core/model/arb/ArbSpectralDefinition.scala b/modules/testkit/src/main/scala/lucuma/core/model/arb/ArbSpectralDefinition.scala index f67389f50..13b91e62f 100644 --- a/modules/testkit/src/main/scala/lucuma/core/model/arb/ArbSpectralDefinition.scala +++ b/modules/testkit/src/main/scala/lucuma/core/model/arb/ArbSpectralDefinition.scala @@ -5,6 +5,8 @@ package lucuma.core.model.arb import cats.Order._ import cats.syntax.all._ +import cats.data.NonEmptyMap +import cats.laws.discipline.arbitrary.* import eu.timepit.refined.types.numeric.PosBigDecimal import lucuma.core.enums.Band import lucuma.core.math.BrightnessUnits @@ -17,7 +19,9 @@ import lucuma.core.model.EmissionLine import lucuma.core.model.SpectralDefinition import lucuma.core.model.UnnormalizedSED import lucuma.core.util.arb.ArbEnumerated +import lucuma.core.util.arb.ArbTimestamp import org.scalacheck.Arbitrary.arbitrary +import org.scalacheck.Arbitrary._ import org.scalacheck._ import scala.collection.immutable.SortedMap @@ -31,6 +35,10 @@ trait ArbSpectralDefinition { import ArbEmissionLine._ import ArbRefined._ import ArbWavelength._ + import ArbTimestamp._ + + implicit def cogBrightnessMeasureOverTime[K: Cogen: Ordering, V: Cogen]: Cogen[NonEmptyMap[K, V]] = + Cogen[Map[K, V]].contramap(_.toSortedMap.toMap) implicit def arbBandNormalizedSpectralDefinition[T](implicit arbUnit: Arbitrary[Units Of Brightness[T]] @@ -38,12 +46,12 @@ trait ArbSpectralDefinition { Arbitrary { for { s <- arbitrary[UnnormalizedSED] - b <- arbitrary[SortedMap[Band, BrightnessMeasure[T]]] + b <- arbitrary[SortedMap[Band, BrightnessMeasureOverTime[T]]] } yield BandNormalized(s, b) } implicit def cogBandNormalizedSpectralDefinition[T]: Cogen[BandNormalized[T]] = - Cogen[(UnnormalizedSED, Map[Band, BrightnessMeasure[T]])].contramap(x => + Cogen[(UnnormalizedSED, Map[Band, BrightnessMeasureOverTime[T]])].contramap(x => (x.sed, x.brightnesses) ) diff --git a/modules/tests/shared/src/test/scala/lucuma/core/model/SourceProfileSuite.scala b/modules/tests/shared/src/test/scala/lucuma/core/model/SourceProfileSuite.scala index 739885d82..2fc56b68e 100644 --- a/modules/tests/shared/src/test/scala/lucuma/core/model/SourceProfileSuite.scala +++ b/modules/tests/shared/src/test/scala/lucuma/core/model/SourceProfileSuite.scala @@ -4,7 +4,9 @@ package lucuma.core.model import cats.Order._ +import cats.data.NonEmptyMap import cats.kernel.laws.discipline._ +import cats.laws.discipline.arbitrary.* import coulomb.* import coulomb.syntax.* import eu.timepit.refined.cats._ @@ -21,6 +23,8 @@ import lucuma.core.math.units._ import lucuma.core.model.arb._ import lucuma.core.util.arb.ArbCollection import lucuma.core.util.arb.ArbEnumerated +import lucuma.core.util.arb.ArbTimestamp +import lucuma.core.util.Timestamp import monocle.law.discipline._ import munit._ @@ -30,6 +34,7 @@ final class SourceProfileSuite extends DisciplineSuite { import ArbAngle._ import ArbEmissionLine._ import ArbEnumerated._ + import ArbTimestamp._ import ArbMeasure._ import ArbRefined._ import ArbSourceProfile._ @@ -43,7 +48,7 @@ final class SourceProfileSuite extends DisciplineSuite { SpectralDefinition.BandNormalized( UnnormalizedSED.StellarLibrary(StellarLibrarySpectrum.A0I), SortedMap( - Band.R -> Band.R.defaultUnits[Integrated].withValueTagged(BigDecimal(10.0)) + Band.R -> NonEmptyMap.of(Timestamp.Min -> Band.R.defaultUnits[Integrated].withValueTagged(BigDecimal(10.0))) ) ) @@ -51,7 +56,7 @@ final class SourceProfileSuite extends DisciplineSuite { SpectralDefinition.BandNormalized( UnnormalizedSED.StellarLibrary(StellarLibrarySpectrum.A0I), SortedMap( - Band.R -> Band.R.defaultUnits[Surface].withValueTagged(BigDecimal(10.0)) + Band.R -> NonEmptyMap.of(Timestamp.Min -> Band.R.defaultUnits[Surface].withValueTagged(BigDecimal(10.0))) ) ) diff --git a/modules/tests/shared/src/test/scala/lucuma/core/model/SpectralDefinitionSuite.scala b/modules/tests/shared/src/test/scala/lucuma/core/model/SpectralDefinitionSuite.scala index cb283fb51..c839b0ebf 100644 --- a/modules/tests/shared/src/test/scala/lucuma/core/model/SpectralDefinitionSuite.scala +++ b/modules/tests/shared/src/test/scala/lucuma/core/model/SpectralDefinitionSuite.scala @@ -4,7 +4,9 @@ package lucuma.core.model import cats.Order._ +import cats.data.NonEmptyMap import cats.kernel.laws.discipline._ +import cats.laws.discipline.arbitrary.* import coulomb.* import coulomb.syntax.* import eu.timepit.refined.cats._ @@ -19,6 +21,8 @@ import lucuma.core.math.units._ import lucuma.core.model.arb._ import lucuma.core.util.arb.ArbCollection import lucuma.core.util.arb.ArbEnumerated +import lucuma.core.util.arb.ArbTimestamp +import lucuma.core.util.Timestamp import monocle.law.discipline._ import munit._ @@ -27,6 +31,7 @@ import scala.collection.immutable.SortedMap final class SpectralDefinitionSuite extends DisciplineSuite { import ArbUnnormalizedSED._ import ArbEnumerated._ + import ArbTimestamp._ import BrightnessUnits._ import ArbSpectralDefinition._ import ArbRefined._ @@ -40,7 +45,7 @@ final class SpectralDefinitionSuite extends DisciplineSuite { SpectralDefinition.BandNormalized( UnnormalizedSED.StellarLibrary(StellarLibrarySpectrum.A0I), SortedMap( - Band.R -> Band.R.defaultUnits[Integrated].withValueTagged(BigDecimal(10.0)) + Band.R -> NonEmptyMap.of(Timestamp.Min -> Band.R.defaultUnits[Integrated].withValueTagged(BigDecimal(10.0))) ) ) @@ -48,7 +53,7 @@ final class SpectralDefinitionSuite extends DisciplineSuite { SpectralDefinition.BandNormalized( UnnormalizedSED.StellarLibrary(StellarLibrarySpectrum.A0I), SortedMap( - Band.R -> Band.R.defaultUnits[Surface].withValueTagged(BigDecimal(10.0)) + Band.R -> NonEmptyMap.of(Timestamp.Min -> Band.R.defaultUnits[Surface].withValueTagged(BigDecimal(10.0))) ) ) diff --git a/modules/tests/shared/src/test/scala/lucuma/core/model/TargetSuite.scala b/modules/tests/shared/src/test/scala/lucuma/core/model/TargetSuite.scala index 4e198704c..fb37680eb 100644 --- a/modules/tests/shared/src/test/scala/lucuma/core/model/TargetSuite.scala +++ b/modules/tests/shared/src/test/scala/lucuma/core/model/TargetSuite.scala @@ -4,7 +4,9 @@ package lucuma.core.model import cats.Order._ +import cats.data.NonEmptyMap import cats.kernel.laws.discipline._ +import cats.laws.discipline.arbitrary.* import eu.timepit.refined.cats._ import eu.timepit.refined.scalacheck.string._ import lucuma.core.arb._ @@ -25,6 +27,7 @@ final class TargetSuite extends DisciplineSuite { import ArbEphemerisKey._ import ArbParallax._ import ArbEnumerated._ + import ArbTimestamp._ import ArbCoordinates._ import ArbRightAscension._ import ArbDeclination._ From 1c526f7006c2f8b74b5675a07eb61ec7b22dcde5 Mon Sep 17 00:00:00 2001 From: Carlos Quiroz Date: Sat, 10 Sep 2022 23:34:53 -0400 Subject: [PATCH 2/5] Add a time dimension to emission lines --- .../main/scala/lucuma/core/model/EmissionLine.scala | 9 ++++++--- .../scala/lucuma/core/model/arb/ArbEmissionLine.scala | 11 +++++++++-- .../lucuma/core/model/arb/ArbSpectralDefinition.scala | 2 +- .../scala/lucuma/core/model/EmissionLineSuite.scala | 11 +++++++++-- .../scala/lucuma/core/model/SourceProfileSuite.scala | 4 ++-- .../lucuma/core/model/SpectralDefinitionSuite.scala | 7 +++---- 6 files changed, 30 insertions(+), 14 deletions(-) diff --git a/modules/core/shared/src/main/scala/lucuma/core/model/EmissionLine.scala b/modules/core/shared/src/main/scala/lucuma/core/model/EmissionLine.scala index b88e1dbc2..ed2875d55 100644 --- a/modules/core/shared/src/main/scala/lucuma/core/model/EmissionLine.scala +++ b/modules/core/shared/src/main/scala/lucuma/core/model/EmissionLine.scala @@ -4,6 +4,7 @@ package lucuma.core.model import cats.Eq +import cats.data.NonEmptyMap import cats.implicits._ import coulomb.* import coulomb.ops.algebra.cats.all.given @@ -13,12 +14,13 @@ import eu.timepit.refined.types.numeric.PosBigDecimal import lucuma.core.math.BrightnessUnits._ import lucuma.core.math.dimensional._ import lucuma.core.math.units._ +import lucuma.core.util.Timestamp import monocle.Focus import monocle.Lens final case class EmissionLine[T]( lineWidth: Quantity[PosBigDecimal, KilometersPerSecond], - lineFlux: Measure[PosBigDecimal] Of LineFlux[T] + lineFlux: EmissionLine.LineFluxOverTime[T] ) { /** @@ -28,10 +30,11 @@ final case class EmissionLine[T]( * `Integrated` or `Surface` */ def to[T0](implicit conv: TagConverter[LineFlux[T], LineFlux[T0]]): EmissionLine[T0] = - EmissionLine[T0](lineWidth, lineFlux.toTag[LineFlux[T0]]) + EmissionLine[T0](lineWidth, lineFlux.map(_.toTag[LineFlux[T0]])) } object EmissionLine { + type LineFluxOverTime[T] = NonEmptyMap[Timestamp, Measure[PosBigDecimal] Of LineFlux[T]] implicit def eqEmissionLine[T]: Eq[EmissionLine[T]] = Eq.by(x => (x.lineWidth, x.lineFlux)) @@ -40,6 +43,6 @@ object EmissionLine { Focus[EmissionLine[T]](_.lineWidth) /** @group Optics */ - def lineFlux[T]: Lens[EmissionLine[T], Measure[PosBigDecimal] Of LineFlux[T]] = + def lineFlux[T]: Lens[EmissionLine[T], NonEmptyMap[Timestamp, Measure[PosBigDecimal] Of LineFlux[T]]] = Focus[EmissionLine[T]](_.lineFlux) } diff --git a/modules/testkit/src/main/scala/lucuma/core/model/arb/ArbEmissionLine.scala b/modules/testkit/src/main/scala/lucuma/core/model/arb/ArbEmissionLine.scala index 41cffe849..f28e67422 100644 --- a/modules/testkit/src/main/scala/lucuma/core/model/arb/ArbEmissionLine.scala +++ b/modules/testkit/src/main/scala/lucuma/core/model/arb/ArbEmissionLine.scala @@ -3,8 +3,10 @@ package lucuma.core.model.arb +import cats.Order._ import coulomb.* import coulomb.syntax.* +import cats.laws.discipline.arbitrary.* import eu.timepit.refined.types.numeric.PosBigDecimal import lucuma.core.math.BrightnessUnits import lucuma.core.math.arb.ArbRefined @@ -12,15 +14,19 @@ import lucuma.core.math.dimensional._ import lucuma.core.math.dimensional.arb.ArbMeasure import lucuma.core.math.units._ import lucuma.core.model.EmissionLine +import lucuma.core.model.SpectralDefinition.EmissionLines import lucuma.core.util.arb.ArbEnumerated +import lucuma.core.util.arb.ArbTimestamp import org.scalacheck.Arbitrary.arbitrary import org.scalacheck._ trait ArbEmissionLine { import ArbEnumerated._ + import ArbTimestamp._ import BrightnessUnits._ import ArbMeasure._ import ArbRefined._ + import ArbSpectralDefinition._ implicit def arbEmissionLine[T](implicit arbLineFluxUnit: Arbitrary[Units Of LineFlux[T]] @@ -28,12 +34,13 @@ trait ArbEmissionLine { Arbitrary( for { lw <- arbitrary[PosBigDecimal] - lf <- arbitrary[Measure[PosBigDecimal] Of LineFlux[T]] + lf <- arbitrary[EmissionLine.LineFluxOverTime[T]] } yield EmissionLine[T](lw.withUnit[KilometersPerSecond], lf) ) implicit def cogEmissionLine[T]: Cogen[EmissionLine[T]] = - Cogen[(PosBigDecimal, Measure[PosBigDecimal])].contramap(x => (x.lineWidth.value, x.lineFlux)) + Cogen[(PosBigDecimal, EmissionLine.LineFluxOverTime[T])] + .contramap(x => (x.lineWidth.value, x.lineFlux)) } object ArbEmissionLine extends ArbEmissionLine diff --git a/modules/testkit/src/main/scala/lucuma/core/model/arb/ArbSpectralDefinition.scala b/modules/testkit/src/main/scala/lucuma/core/model/arb/ArbSpectralDefinition.scala index 13b91e62f..ff22c256f 100644 --- a/modules/testkit/src/main/scala/lucuma/core/model/arb/ArbSpectralDefinition.scala +++ b/modules/testkit/src/main/scala/lucuma/core/model/arb/ArbSpectralDefinition.scala @@ -37,7 +37,7 @@ trait ArbSpectralDefinition { import ArbWavelength._ import ArbTimestamp._ - implicit def cogBrightnessMeasureOverTime[K: Cogen: Ordering, V: Cogen]: Cogen[NonEmptyMap[K, V]] = + implicit def cogNonEmptyMap[K: Cogen: Ordering, V: Cogen]: Cogen[NonEmptyMap[K, V]] = Cogen[Map[K, V]].contramap(_.toSortedMap.toMap) implicit def arbBandNormalizedSpectralDefinition[T](implicit diff --git a/modules/tests/shared/src/test/scala/lucuma/core/model/EmissionLineSuite.scala b/modules/tests/shared/src/test/scala/lucuma/core/model/EmissionLineSuite.scala index 7fe55bb2c..38b7ffa2b 100644 --- a/modules/tests/shared/src/test/scala/lucuma/core/model/EmissionLineSuite.scala +++ b/modules/tests/shared/src/test/scala/lucuma/core/model/EmissionLineSuite.scala @@ -3,7 +3,9 @@ package lucuma.core.model +import cats.data.NonEmptyMap import cats.implicits._ +import cats.laws.discipline.arbitrary.* import cats.kernel.laws.discipline._ import coulomb.* import coulomb.ops.algebra.cats.all.given @@ -14,27 +16,32 @@ import lucuma.core.math.arb._ import lucuma.core.math.dimensional.arb.ArbMeasure import lucuma.core.math.units._ import lucuma.core.model.arb.ArbEmissionLine +import lucuma.core.model.arb.ArbSpectralDefinition import lucuma.core.util.arb.ArbEnumerated +import lucuma.core.util.arb.ArbTimestamp +import lucuma.core.util.Timestamp import monocle.law.discipline.LensTests import munit._ final class EmissionLineSuite extends DisciplineSuite { import ArbEnumerated._ + import ArbTimestamp._ import ArbEmissionLine._ import ArbRefined._ import ArbMeasure._ + import ArbSpectralDefinition.* import ArbQuantity.given // Brightness type conversions val e1Integrated: EmissionLine[Integrated] = EmissionLine( PosBigDecimalOne.withUnit[KilometersPerSecond], - WattsPerMeter2IsIntegratedLineFluxUnit.unit.withValueTagged(PosBigDecimalOne) + NonEmptyMap.of(Timestamp.Min -> WattsPerMeter2IsIntegratedLineFluxUnit.unit.withValueTagged(PosBigDecimalOne)) ) val e1Surface: EmissionLine[Surface] = EmissionLine( PosBigDecimalOne.withUnit[KilometersPerSecond], - WattsPerMeter2Arcsec2IsSurfaceLineFluxUnit.unit.withValueTagged(PosBigDecimalOne) + NonEmptyMap.of(Timestamp.Min -> WattsPerMeter2Arcsec2IsSurfaceLineFluxUnit.unit.withValueTagged(PosBigDecimalOne)) ) test("Brightness type conversion Integrated -> Surface") { assertEquals(e1Integrated.to[Surface], e1Surface) diff --git a/modules/tests/shared/src/test/scala/lucuma/core/model/SourceProfileSuite.scala b/modules/tests/shared/src/test/scala/lucuma/core/model/SourceProfileSuite.scala index 2fc56b68e..35792ada1 100644 --- a/modules/tests/shared/src/test/scala/lucuma/core/model/SourceProfileSuite.scala +++ b/modules/tests/shared/src/test/scala/lucuma/core/model/SourceProfileSuite.scala @@ -65,7 +65,7 @@ final class SourceProfileSuite extends DisciplineSuite { SortedMap( Wavelength.Min -> EmissionLine( PosBigDecimalOne.withUnit[KilometersPerSecond], - WattsPerMeter2IsIntegratedLineFluxUnit.unit.withValueTagged(PosBigDecimalOne) + NonEmptyMap.of(Timestamp.Min -> WattsPerMeter2IsIntegratedLineFluxUnit.unit.withValueTagged(PosBigDecimalOne)) ) ), WattsPerMeter2MicrometerIsIntegratedFluxDensityContinuumUnit.unit @@ -77,7 +77,7 @@ final class SourceProfileSuite extends DisciplineSuite { SortedMap( Wavelength.Min -> EmissionLine( PosBigDecimalOne.withUnit[KilometersPerSecond], - WattsPerMeter2Arcsec2IsSurfaceLineFluxUnit.unit.withValueTagged(PosBigDecimalOne) + NonEmptyMap.of(Timestamp.Min -> WattsPerMeter2Arcsec2IsSurfaceLineFluxUnit.unit.withValueTagged(PosBigDecimalOne)) ) ), WattsPerMeter2MicrometerArcsec2IsSurfaceFluxDensityContinuumUnit.unit diff --git a/modules/tests/shared/src/test/scala/lucuma/core/model/SpectralDefinitionSuite.scala b/modules/tests/shared/src/test/scala/lucuma/core/model/SpectralDefinitionSuite.scala index c839b0ebf..13bbf5943 100644 --- a/modules/tests/shared/src/test/scala/lucuma/core/model/SpectralDefinitionSuite.scala +++ b/modules/tests/shared/src/test/scala/lucuma/core/model/SpectralDefinitionSuite.scala @@ -62,7 +62,7 @@ final class SpectralDefinitionSuite extends DisciplineSuite { SortedMap( Wavelength.Min -> EmissionLine( PosBigDecimalOne.withUnit[KilometersPerSecond], - ErgsPerSecondCentimeter2IsIntegratedLineFluxUnit.unit.withValueTagged(PosBigDecimalOne) + NonEmptyMap.of(Timestamp.Min -> ErgsPerSecondCentimeter2IsIntegratedLineFluxUnit.unit.withValueTagged(PosBigDecimalOne)) ) ), WattsPerMeter2MicrometerIsIntegratedFluxDensityContinuumUnit.unit.withValueTagged( @@ -75,9 +75,8 @@ final class SpectralDefinitionSuite extends DisciplineSuite { SortedMap( Wavelength.Min -> EmissionLine( PosBigDecimalOne.withUnit[KilometersPerSecond], - ErgsPerSecondCentimeter2Arcsec2IsSurfaceLineFluxUnit.unit.withValueTagged( - PosBigDecimalOne - ) + NonEmptyMap.of(Timestamp.Min -> + ErgsPerSecondCentimeter2Arcsec2IsSurfaceLineFluxUnit.unit.withValueTagged(PosBigDecimalOne)) ) ), WattsPerMeter2MicrometerArcsec2IsSurfaceFluxDensityContinuumUnit.unit.withValueTagged( From 5fce144736a568a6429ff454b2d33c6aab3cabff Mon Sep 17 00:00:00 2001 From: Carlos Quiroz Date: Sat, 10 Sep 2022 23:35:28 -0400 Subject: [PATCH 3/5] Sort imports --- build.sbt | 2 +- .../main/scala/lucuma/core/model/arb/ArbEmissionLine.scala | 2 +- .../scala/lucuma/core/model/arb/ArbSpectralDefinition.scala | 4 ++-- .../src/test/scala/lucuma/core/model/EmissionLineSuite.scala | 4 ++-- .../src/test/scala/lucuma/core/model/SourceProfileSuite.scala | 2 +- .../scala/lucuma/core/model/SpectralDefinitionSuite.scala | 2 +- 6 files changed, 8 insertions(+), 8 deletions(-) diff --git a/build.sbt b/build.sbt index aa61e680d..967c030b4 100644 --- a/build.sbt +++ b/build.sbt @@ -1,4 +1,4 @@ -ThisBuild / tlBaseVersion := "0.55" +ThisBuild / tlBaseVersion := "0.56" ThisBuild / tlCiReleaseBranches := Seq("master") ThisBuild / githubWorkflowEnv += "MUNIT_FLAKY_OK" -> "true" diff --git a/modules/testkit/src/main/scala/lucuma/core/model/arb/ArbEmissionLine.scala b/modules/testkit/src/main/scala/lucuma/core/model/arb/ArbEmissionLine.scala index f28e67422..fba4d7138 100644 --- a/modules/testkit/src/main/scala/lucuma/core/model/arb/ArbEmissionLine.scala +++ b/modules/testkit/src/main/scala/lucuma/core/model/arb/ArbEmissionLine.scala @@ -4,9 +4,9 @@ package lucuma.core.model.arb import cats.Order._ +import cats.laws.discipline.arbitrary.* import coulomb.* import coulomb.syntax.* -import cats.laws.discipline.arbitrary.* import eu.timepit.refined.types.numeric.PosBigDecimal import lucuma.core.math.BrightnessUnits import lucuma.core.math.arb.ArbRefined diff --git a/modules/testkit/src/main/scala/lucuma/core/model/arb/ArbSpectralDefinition.scala b/modules/testkit/src/main/scala/lucuma/core/model/arb/ArbSpectralDefinition.scala index ff22c256f..7396be9ec 100644 --- a/modules/testkit/src/main/scala/lucuma/core/model/arb/ArbSpectralDefinition.scala +++ b/modules/testkit/src/main/scala/lucuma/core/model/arb/ArbSpectralDefinition.scala @@ -4,9 +4,9 @@ package lucuma.core.model.arb import cats.Order._ -import cats.syntax.all._ import cats.data.NonEmptyMap import cats.laws.discipline.arbitrary.* +import cats.syntax.all._ import eu.timepit.refined.types.numeric.PosBigDecimal import lucuma.core.enums.Band import lucuma.core.math.BrightnessUnits @@ -20,8 +20,8 @@ import lucuma.core.model.SpectralDefinition import lucuma.core.model.UnnormalizedSED import lucuma.core.util.arb.ArbEnumerated import lucuma.core.util.arb.ArbTimestamp -import org.scalacheck.Arbitrary.arbitrary import org.scalacheck.Arbitrary._ +import org.scalacheck.Arbitrary.arbitrary import org.scalacheck._ import scala.collection.immutable.SortedMap diff --git a/modules/tests/shared/src/test/scala/lucuma/core/model/EmissionLineSuite.scala b/modules/tests/shared/src/test/scala/lucuma/core/model/EmissionLineSuite.scala index 38b7ffa2b..0c56a12cd 100644 --- a/modules/tests/shared/src/test/scala/lucuma/core/model/EmissionLineSuite.scala +++ b/modules/tests/shared/src/test/scala/lucuma/core/model/EmissionLineSuite.scala @@ -5,8 +5,8 @@ package lucuma.core.model import cats.data.NonEmptyMap import cats.implicits._ -import cats.laws.discipline.arbitrary.* import cats.kernel.laws.discipline._ +import cats.laws.discipline.arbitrary.* import coulomb.* import coulomb.ops.algebra.cats.all.given import coulomb.syntax.* @@ -17,9 +17,9 @@ import lucuma.core.math.dimensional.arb.ArbMeasure import lucuma.core.math.units._ import lucuma.core.model.arb.ArbEmissionLine import lucuma.core.model.arb.ArbSpectralDefinition +import lucuma.core.util.Timestamp import lucuma.core.util.arb.ArbEnumerated import lucuma.core.util.arb.ArbTimestamp -import lucuma.core.util.Timestamp import monocle.law.discipline.LensTests import munit._ diff --git a/modules/tests/shared/src/test/scala/lucuma/core/model/SourceProfileSuite.scala b/modules/tests/shared/src/test/scala/lucuma/core/model/SourceProfileSuite.scala index 35792ada1..c5a3cd70c 100644 --- a/modules/tests/shared/src/test/scala/lucuma/core/model/SourceProfileSuite.scala +++ b/modules/tests/shared/src/test/scala/lucuma/core/model/SourceProfileSuite.scala @@ -21,10 +21,10 @@ import lucuma.core.math.arb.ArbWavelength import lucuma.core.math.dimensional.arb.ArbMeasure import lucuma.core.math.units._ import lucuma.core.model.arb._ +import lucuma.core.util.Timestamp import lucuma.core.util.arb.ArbCollection import lucuma.core.util.arb.ArbEnumerated import lucuma.core.util.arb.ArbTimestamp -import lucuma.core.util.Timestamp import monocle.law.discipline._ import munit._ diff --git a/modules/tests/shared/src/test/scala/lucuma/core/model/SpectralDefinitionSuite.scala b/modules/tests/shared/src/test/scala/lucuma/core/model/SpectralDefinitionSuite.scala index 13bbf5943..269429f39 100644 --- a/modules/tests/shared/src/test/scala/lucuma/core/model/SpectralDefinitionSuite.scala +++ b/modules/tests/shared/src/test/scala/lucuma/core/model/SpectralDefinitionSuite.scala @@ -19,10 +19,10 @@ import lucuma.core.math.arb.ArbWavelength import lucuma.core.math.dimensional.arb.ArbMeasure import lucuma.core.math.units._ import lucuma.core.model.arb._ +import lucuma.core.util.Timestamp import lucuma.core.util.arb.ArbCollection import lucuma.core.util.arb.ArbEnumerated import lucuma.core.util.arb.ArbTimestamp -import lucuma.core.util.Timestamp import monocle.law.discipline._ import munit._ From d8738a9f4a3717a756b77c47d6c3707a1ddd7540 Mon Sep 17 00:00:00 2001 From: Carlos Quiroz Date: Tue, 22 Nov 2022 12:14:44 -0300 Subject: [PATCH 4/5] Use Instant instead of timestamp --- build.sbt | 1 + .../lucuma/core/math/BrightnessUnits.scala | 8 ++-- .../lucuma/core/model/EmissionLine.scala | 17 +++---- .../core/model/SpectralDefinition.scala | 10 ++--- .../math/dimensional/arb/ArbMeasure.scala | 8 ++-- .../core/model/arb/ArbEmissionLine.scala | 21 ++++----- .../model/arb/ArbSpectralDefinition.scala | 29 ++++++------ .../lucuma/core/util/arb/ArbEnumerated.scala | 4 +- .../scala/lucuma/core/data/ZipperSuite.scala | 8 ++-- .../lucuma/core/model/EmissionLineSuite.scala | 31 +++++++------ .../core/model/SourceProfileSuite.scala | 10 +++-- .../core/model/SpectralDefinitionSuite.scala | 44 +++++++++---------- .../scala/lucuma/core/model/TargetSuite.scala | 4 +- 13 files changed, 100 insertions(+), 95 deletions(-) diff --git a/build.sbt b/build.sbt index dad801d2d..39b89ea4c 100644 --- a/build.sbt +++ b/build.sbt @@ -83,6 +83,7 @@ lazy val testkit = crossProject(JVMPlatform, JSPlatform) "org.typelevel" %%% "spire-laws" % spireVersion, "eu.timepit" %%% "refined-scalacheck" % refinedVersion, "io.circe" %%% "circe-testing" % circeVersion, + "org.typelevel" %%% "cats-time-testkit" % catsTimeVersion, "io.chrisdavenport" %%% "cats-scalacheck" % catsScalacheckVersion ) ) diff --git a/modules/core/shared/src/main/scala/lucuma/core/math/BrightnessUnits.scala b/modules/core/shared/src/main/scala/lucuma/core/math/BrightnessUnits.scala index 744b71b0b..cb79af89b 100644 --- a/modules/core/shared/src/main/scala/lucuma/core/math/BrightnessUnits.scala +++ b/modules/core/shared/src/main/scala/lucuma/core/math/BrightnessUnits.scala @@ -7,10 +7,10 @@ package math import cats.data.NonEmptyList import cats.data.NonEmptyMap -import lucuma.core.math.dimensional._ -import lucuma.core.math.units._ +import lucuma.core.math.dimensional.* +import lucuma.core.math.units.* import lucuma.core.util.Enumerated -import lucuma.core.util.Timestamp +import java.time.Instant object BrightnessUnits { type Integrated @@ -21,7 +21,7 @@ object BrightnessUnits { trait FluxDensityContinuum[+T] type BrightnessMeasure[T] = Measure[BigDecimal] Of Brightness[T] - type BrightnessMeasureOverTime[T] = NonEmptyMap[Timestamp, Measure[BigDecimal] Of Brightness[T]] + type BrightnessMeasureOverTime[T] = NonEmptyMap[Instant, Measure[BigDecimal] Of Brightness[T]] // Brightness Integrated implicit object VegaMagnitudeIsIntegratedBrightnessUnit diff --git a/modules/core/shared/src/main/scala/lucuma/core/model/EmissionLine.scala b/modules/core/shared/src/main/scala/lucuma/core/model/EmissionLine.scala index ed2875d55..598cbe57d 100644 --- a/modules/core/shared/src/main/scala/lucuma/core/model/EmissionLine.scala +++ b/modules/core/shared/src/main/scala/lucuma/core/model/EmissionLine.scala @@ -5,18 +5,18 @@ package lucuma.core.model import cats.Eq import cats.data.NonEmptyMap -import cats.implicits._ +import cats.implicits.* import coulomb.* import coulomb.ops.algebra.cats.all.given import coulomb.syntax.* -import eu.timepit.refined.cats._ +import eu.timepit.refined.cats.* import eu.timepit.refined.types.numeric.PosBigDecimal -import lucuma.core.math.BrightnessUnits._ -import lucuma.core.math.dimensional._ -import lucuma.core.math.units._ -import lucuma.core.util.Timestamp +import lucuma.core.math.BrightnessUnits.* +import lucuma.core.math.dimensional.* +import lucuma.core.math.units.* import monocle.Focus import monocle.Lens +import java.time.Instant final case class EmissionLine[T]( lineWidth: Quantity[PosBigDecimal, KilometersPerSecond], @@ -34,7 +34,8 @@ final case class EmissionLine[T]( } object EmissionLine { - type LineFluxOverTime[T] = NonEmptyMap[Timestamp, Measure[PosBigDecimal] Of LineFlux[T]] + type LineFluxOverTime[T] = NonEmptyMap[Instant, Measure[PosBigDecimal] Of LineFlux[T]] + implicit def eqEmissionLine[T]: Eq[EmissionLine[T]] = Eq.by(x => (x.lineWidth, x.lineFlux)) @@ -43,6 +44,6 @@ object EmissionLine { Focus[EmissionLine[T]](_.lineWidth) /** @group Optics */ - def lineFlux[T]: Lens[EmissionLine[T], NonEmptyMap[Timestamp, Measure[PosBigDecimal] Of LineFlux[T]]] = + def lineFlux[T]: Lens[EmissionLine[T], NonEmptyMap[Instant, Measure[PosBigDecimal] Of LineFlux[T]]] = Focus[EmissionLine[T]](_.lineFlux) } diff --git a/modules/core/shared/src/main/scala/lucuma/core/model/SpectralDefinition.scala b/modules/core/shared/src/main/scala/lucuma/core/model/SpectralDefinition.scala index 89c9092e0..aa1578320 100644 --- a/modules/core/shared/src/main/scala/lucuma/core/model/SpectralDefinition.scala +++ b/modules/core/shared/src/main/scala/lucuma/core/model/SpectralDefinition.scala @@ -4,14 +4,14 @@ package lucuma.core.model import cats.Eq -import cats.Order._ -import cats.syntax.all._ -import eu.timepit.refined.cats._ +import cats.Order.* +import cats.syntax.all.* +import eu.timepit.refined.cats.* import eu.timepit.refined.types.numeric.PosBigDecimal import lucuma.core.enums.Band -import lucuma.core.math.BrightnessUnits._ +import lucuma.core.math.BrightnessUnits.* import lucuma.core.math.Wavelength -import lucuma.core.math.dimensional._ +import lucuma.core.math.dimensional.* import monocle.Focus import monocle.Lens import monocle.Optional diff --git a/modules/testkit/src/main/scala/lucuma/core/math/dimensional/arb/ArbMeasure.scala b/modules/testkit/src/main/scala/lucuma/core/math/dimensional/arb/ArbMeasure.scala index 24aa17fad..90de45e8e 100644 --- a/modules/testkit/src/main/scala/lucuma/core/math/dimensional/arb/ArbMeasure.scala +++ b/modules/testkit/src/main/scala/lucuma/core/math/dimensional/arb/ArbMeasure.scala @@ -3,12 +3,12 @@ package lucuma.core.math.dimensional.arb -import lucuma.core.math.dimensional._ -import org.scalacheck.Arbitrary._ -import org.scalacheck._ +import lucuma.core.math.dimensional.* +import org.scalacheck.Arbitrary.* +import org.scalacheck.* trait ArbMeasure { - import ArbUnits._ + import ArbUnits.* implicit def arbMeasure[N: Arbitrary]: Arbitrary[Measure[N]] = Arbitrary { diff --git a/modules/testkit/src/main/scala/lucuma/core/model/arb/ArbEmissionLine.scala b/modules/testkit/src/main/scala/lucuma/core/model/arb/ArbEmissionLine.scala index fba4d7138..acaf4e15f 100644 --- a/modules/testkit/src/main/scala/lucuma/core/model/arb/ArbEmissionLine.scala +++ b/modules/testkit/src/main/scala/lucuma/core/model/arb/ArbEmissionLine.scala @@ -3,30 +3,31 @@ package lucuma.core.model.arb -import cats.Order._ +import cats.Order.* import cats.laws.discipline.arbitrary.* +import org.typelevel.cats.time.instantInstances import coulomb.* import coulomb.syntax.* import eu.timepit.refined.types.numeric.PosBigDecimal import lucuma.core.math.BrightnessUnits import lucuma.core.math.arb.ArbRefined -import lucuma.core.math.dimensional._ +import lucuma.core.math.dimensional.* import lucuma.core.math.dimensional.arb.ArbMeasure -import lucuma.core.math.units._ +import lucuma.core.math.units.* import lucuma.core.model.EmissionLine import lucuma.core.model.SpectralDefinition.EmissionLines import lucuma.core.util.arb.ArbEnumerated import lucuma.core.util.arb.ArbTimestamp import org.scalacheck.Arbitrary.arbitrary -import org.scalacheck._ +import org.scalacheck.* trait ArbEmissionLine { - import ArbEnumerated._ - import ArbTimestamp._ - import BrightnessUnits._ - import ArbMeasure._ - import ArbRefined._ - import ArbSpectralDefinition._ + import ArbEnumerated.* + import ArbTimestamp.* + import BrightnessUnits.* + import ArbMeasure.* + import ArbRefined.* + import ArbSpectralDefinition.* implicit def arbEmissionLine[T](implicit arbLineFluxUnit: Arbitrary[Units Of LineFlux[T]] diff --git a/modules/testkit/src/main/scala/lucuma/core/model/arb/ArbSpectralDefinition.scala b/modules/testkit/src/main/scala/lucuma/core/model/arb/ArbSpectralDefinition.scala index 7396be9ec..026fc41ae 100644 --- a/modules/testkit/src/main/scala/lucuma/core/model/arb/ArbSpectralDefinition.scala +++ b/modules/testkit/src/main/scala/lucuma/core/model/arb/ArbSpectralDefinition.scala @@ -3,39 +3,38 @@ package lucuma.core.model.arb -import cats.Order._ +import cats.Order.* import cats.data.NonEmptyMap import cats.laws.discipline.arbitrary.* -import cats.syntax.all._ +import cats.syntax.all.* +import org.typelevel.cats.time.instantInstances import eu.timepit.refined.types.numeric.PosBigDecimal import lucuma.core.enums.Band import lucuma.core.math.BrightnessUnits import lucuma.core.math.Wavelength import lucuma.core.math.arb.ArbRefined import lucuma.core.math.arb.ArbWavelength -import lucuma.core.math.dimensional._ +import lucuma.core.math.dimensional.* import lucuma.core.math.dimensional.arb.ArbMeasure import lucuma.core.model.EmissionLine import lucuma.core.model.SpectralDefinition import lucuma.core.model.UnnormalizedSED import lucuma.core.util.arb.ArbEnumerated -import lucuma.core.util.arb.ArbTimestamp -import org.scalacheck.Arbitrary._ +import org.scalacheck.Arbitrary.* import org.scalacheck.Arbitrary.arbitrary -import org.scalacheck._ +import org.scalacheck.* import scala.collection.immutable.SortedMap trait ArbSpectralDefinition { - import ArbUnnormalizedSED._ - import ArbEnumerated._ - import SpectralDefinition._ - import BrightnessUnits._ - import ArbMeasure._ - import ArbEmissionLine._ - import ArbRefined._ - import ArbWavelength._ - import ArbTimestamp._ + import ArbUnnormalizedSED.* + import ArbEnumerated.* + import SpectralDefinition.* + import BrightnessUnits.* + import ArbMeasure.* + import ArbEmissionLine.* + import ArbRefined.* + import ArbWavelength.* implicit def cogNonEmptyMap[K: Cogen: Ordering, V: Cogen]: Cogen[NonEmptyMap[K, V]] = Cogen[Map[K, V]].contramap(_.toSortedMap.toMap) diff --git a/modules/testkit/src/main/scala/lucuma/core/util/arb/ArbEnumerated.scala b/modules/testkit/src/main/scala/lucuma/core/util/arb/ArbEnumerated.scala index 62c1de12c..02f840784 100644 --- a/modules/testkit/src/main/scala/lucuma/core/util/arb/ArbEnumerated.scala +++ b/modules/testkit/src/main/scala/lucuma/core/util/arb/ArbEnumerated.scala @@ -7,8 +7,8 @@ package util package arb import lucuma.core.util.Enumerated -import org.scalacheck.Gen._ -import org.scalacheck._ +import org.scalacheck.Gen.* +import org.scalacheck.* trait ArbEnumerated { diff --git a/modules/tests/shared/src/test/scala/lucuma/core/data/ZipperSuite.scala b/modules/tests/shared/src/test/scala/lucuma/core/data/ZipperSuite.scala index a3d13c699..5334efda4 100644 --- a/modules/tests/shared/src/test/scala/lucuma/core/data/ZipperSuite.scala +++ b/modules/tests/shared/src/test/scala/lucuma/core/data/ZipperSuite.scala @@ -9,11 +9,11 @@ import cats.data.NonEmptyList import cats.kernel.laws.discipline.EqTests import cats.laws.discipline.FunctorTests import cats.laws.discipline.TraverseTests -import cats.laws.discipline.arbitrary._ -import cats.syntax.all._ -import lucuma.core.data.arb.ArbZipper._ +import cats.laws.discipline.arbitrary.* +import cats.syntax.all.* +import lucuma.core.data.arb.ArbZipper.* import monocle.law.discipline.TraversalTests -import org.scalacheck.Prop._ +import org.scalacheck.Prop.* /** * Tests the Zipper typeclasses diff --git a/modules/tests/shared/src/test/scala/lucuma/core/model/EmissionLineSuite.scala b/modules/tests/shared/src/test/scala/lucuma/core/model/EmissionLineSuite.scala index 0c56a12cd..447ad460d 100644 --- a/modules/tests/shared/src/test/scala/lucuma/core/model/EmissionLineSuite.scala +++ b/modules/tests/shared/src/test/scala/lucuma/core/model/EmissionLineSuite.scala @@ -4,31 +4,30 @@ package lucuma.core.model import cats.data.NonEmptyMap -import cats.implicits._ -import cats.kernel.laws.discipline._ +import cats.implicits.* +import cats.kernel.laws.discipline.* import cats.laws.discipline.arbitrary.* +import org.typelevel.cats.time.instantInstances import coulomb.* import coulomb.ops.algebra.cats.all.given import coulomb.syntax.* -import eu.timepit.refined.cats._ -import lucuma.core.math.BrightnessUnits._ -import lucuma.core.math.arb._ +import eu.timepit.refined.cats.* +import lucuma.core.math.BrightnessUnits.* +import lucuma.core.math.arb.* import lucuma.core.math.dimensional.arb.ArbMeasure -import lucuma.core.math.units._ +import lucuma.core.math.units.* import lucuma.core.model.arb.ArbEmissionLine import lucuma.core.model.arb.ArbSpectralDefinition -import lucuma.core.util.Timestamp import lucuma.core.util.arb.ArbEnumerated -import lucuma.core.util.arb.ArbTimestamp import monocle.law.discipline.LensTests -import munit._ +import munit.* +import java.time.Instant final class EmissionLineSuite extends DisciplineSuite { - import ArbEnumerated._ - import ArbTimestamp._ - import ArbEmissionLine._ - import ArbRefined._ - import ArbMeasure._ + import ArbEnumerated.* + import ArbEmissionLine.* + import ArbRefined.* + import ArbMeasure.* import ArbSpectralDefinition.* import ArbQuantity.given @@ -36,12 +35,12 @@ final class EmissionLineSuite extends DisciplineSuite { val e1Integrated: EmissionLine[Integrated] = EmissionLine( PosBigDecimalOne.withUnit[KilometersPerSecond], - NonEmptyMap.of(Timestamp.Min -> WattsPerMeter2IsIntegratedLineFluxUnit.unit.withValueTagged(PosBigDecimalOne)) + NonEmptyMap.of(Instant.MIN -> WattsPerMeter2IsIntegratedLineFluxUnit.unit.withValueTagged(PosBigDecimalOne)) ) val e1Surface: EmissionLine[Surface] = EmissionLine( PosBigDecimalOne.withUnit[KilometersPerSecond], - NonEmptyMap.of(Timestamp.Min -> WattsPerMeter2Arcsec2IsSurfaceLineFluxUnit.unit.withValueTagged(PosBigDecimalOne)) + NonEmptyMap.of(Instant.MIN -> WattsPerMeter2Arcsec2IsSurfaceLineFluxUnit.unit.withValueTagged(PosBigDecimalOne)) ) test("Brightness type conversion Integrated -> Surface") { assertEquals(e1Integrated.to[Surface], e1Surface) diff --git a/modules/tests/shared/src/test/scala/lucuma/core/model/SourceProfileSuite.scala b/modules/tests/shared/src/test/scala/lucuma/core/model/SourceProfileSuite.scala index 5e333d7e6..5a22fd3a3 100644 --- a/modules/tests/shared/src/test/scala/lucuma/core/model/SourceProfileSuite.scala +++ b/modules/tests/shared/src/test/scala/lucuma/core/model/SourceProfileSuite.scala @@ -7,6 +7,7 @@ import cats.Order.* import cats.data.NonEmptyMap import cats.laws.discipline.arbitrary.* import cats.kernel.laws.discipline.* +import org.typelevel.cats.time.instantInstances import coulomb.* import coulomb.syntax.* import eu.timepit.refined.cats.* @@ -27,6 +28,7 @@ import monocle.law.discipline.* import munit.* import scala.collection.immutable.SortedMap +import java.time.Instant final class SourceProfileSuite extends DisciplineSuite { import ArbAngle.* @@ -45,7 +47,7 @@ final class SourceProfileSuite extends DisciplineSuite { SpectralDefinition.BandNormalized( UnnormalizedSED.StellarLibrary(StellarLibrarySpectrum.A0I), SortedMap( - Band.R -> NonEmptyMap.of(Timestamp.Min -> Band.R.defaultUnits[Integrated].withValueTagged(BigDecimal(10.0))) + Band.R -> NonEmptyMap.of(Instant.MIN -> Band.R.defaultUnits[Integrated].withValueTagged(BigDecimal(10.0))) ) ) @@ -53,7 +55,7 @@ final class SourceProfileSuite extends DisciplineSuite { SpectralDefinition.BandNormalized( UnnormalizedSED.StellarLibrary(StellarLibrarySpectrum.A0I), SortedMap( - Band.R -> NonEmptyMap.of(Timestamp.Min -> Band.R.defaultUnits[Surface].withValueTagged(BigDecimal(10.0))) + Band.R -> NonEmptyMap.of(Instant.MIN -> Band.R.defaultUnits[Surface].withValueTagged(BigDecimal(10.0))) ) ) @@ -62,7 +64,7 @@ final class SourceProfileSuite extends DisciplineSuite { SortedMap( Wavelength.Min -> EmissionLine( PosBigDecimalOne.withUnit[KilometersPerSecond], - NonEmptyMap.of(Timestamp.Min -> WattsPerMeter2IsIntegratedLineFluxUnit.unit.withValueTagged(PosBigDecimalOne)) + NonEmptyMap.of(Instant.MIN -> WattsPerMeter2IsIntegratedLineFluxUnit.unit.withValueTagged(PosBigDecimalOne)) ) ), WattsPerMeter2MicrometerIsIntegratedFluxDensityContinuumUnit.unit @@ -74,7 +76,7 @@ final class SourceProfileSuite extends DisciplineSuite { SortedMap( Wavelength.Min -> EmissionLine( PosBigDecimalOne.withUnit[KilometersPerSecond], - NonEmptyMap.of(Timestamp.Min -> WattsPerMeter2Arcsec2IsSurfaceLineFluxUnit.unit.withValueTagged(PosBigDecimalOne)) + NonEmptyMap.of(Instant.MIN -> WattsPerMeter2Arcsec2IsSurfaceLineFluxUnit.unit.withValueTagged(PosBigDecimalOne)) ) ), WattsPerMeter2MicrometerArcsec2IsSurfaceFluxDensityContinuumUnit.unit diff --git a/modules/tests/shared/src/test/scala/lucuma/core/model/SpectralDefinitionSuite.scala b/modules/tests/shared/src/test/scala/lucuma/core/model/SpectralDefinitionSuite.scala index 269429f39..1100e3718 100644 --- a/modules/tests/shared/src/test/scala/lucuma/core/model/SpectralDefinitionSuite.scala +++ b/modules/tests/shared/src/test/scala/lucuma/core/model/SpectralDefinitionSuite.scala @@ -3,13 +3,14 @@ package lucuma.core.model -import cats.Order._ +import cats.Order.* import cats.data.NonEmptyMap -import cats.kernel.laws.discipline._ +import cats.kernel.laws.discipline.* import cats.laws.discipline.arbitrary.* +import org.typelevel.cats.time.instantInstances import coulomb.* import coulomb.syntax.* -import eu.timepit.refined.cats._ +import eu.timepit.refined.cats.* import lucuma.core.enums.Band import lucuma.core.enums.StellarLibrarySpectrum import lucuma.core.math.BrightnessUnits @@ -17,35 +18,34 @@ import lucuma.core.math.Wavelength import lucuma.core.math.arb.ArbRefined import lucuma.core.math.arb.ArbWavelength import lucuma.core.math.dimensional.arb.ArbMeasure -import lucuma.core.math.units._ -import lucuma.core.model.arb._ +import lucuma.core.math.units.* +import lucuma.core.model.arb.* import lucuma.core.util.Timestamp import lucuma.core.util.arb.ArbCollection import lucuma.core.util.arb.ArbEnumerated -import lucuma.core.util.arb.ArbTimestamp -import monocle.law.discipline._ -import munit._ +import monocle.law.discipline.* +import munit.* import scala.collection.immutable.SortedMap +import java.time.Instant final class SpectralDefinitionSuite extends DisciplineSuite { - import ArbUnnormalizedSED._ - import ArbEnumerated._ - import ArbTimestamp._ - import BrightnessUnits._ - import ArbSpectralDefinition._ - import ArbRefined._ - import ArbMeasure._ - import ArbEmissionLine._ - import ArbCollection._ - import ArbWavelength._ + import ArbUnnormalizedSED.* + import ArbEnumerated.* + import BrightnessUnits.* + import ArbSpectralDefinition.* + import ArbRefined.* + import ArbMeasure.* + import ArbEmissionLine.* + import ArbCollection.* + import ArbWavelength.* // Brightness type conversions val sd1Integrated: SpectralDefinition[Integrated] = SpectralDefinition.BandNormalized( UnnormalizedSED.StellarLibrary(StellarLibrarySpectrum.A0I), SortedMap( - Band.R -> NonEmptyMap.of(Timestamp.Min -> Band.R.defaultUnits[Integrated].withValueTagged(BigDecimal(10.0))) + Band.R -> NonEmptyMap.of(Instant.MIN -> Band.R.defaultUnits[Integrated].withValueTagged(BigDecimal(10.0))) ) ) @@ -53,7 +53,7 @@ final class SpectralDefinitionSuite extends DisciplineSuite { SpectralDefinition.BandNormalized( UnnormalizedSED.StellarLibrary(StellarLibrarySpectrum.A0I), SortedMap( - Band.R -> NonEmptyMap.of(Timestamp.Min -> Band.R.defaultUnits[Surface].withValueTagged(BigDecimal(10.0))) + Band.R -> NonEmptyMap.of(Instant.MIN -> Band.R.defaultUnits[Surface].withValueTagged(BigDecimal(10.0))) ) ) @@ -62,7 +62,7 @@ final class SpectralDefinitionSuite extends DisciplineSuite { SortedMap( Wavelength.Min -> EmissionLine( PosBigDecimalOne.withUnit[KilometersPerSecond], - NonEmptyMap.of(Timestamp.Min -> ErgsPerSecondCentimeter2IsIntegratedLineFluxUnit.unit.withValueTagged(PosBigDecimalOne)) + NonEmptyMap.of(Instant.MIN -> ErgsPerSecondCentimeter2IsIntegratedLineFluxUnit.unit.withValueTagged(PosBigDecimalOne)) ) ), WattsPerMeter2MicrometerIsIntegratedFluxDensityContinuumUnit.unit.withValueTagged( @@ -75,7 +75,7 @@ final class SpectralDefinitionSuite extends DisciplineSuite { SortedMap( Wavelength.Min -> EmissionLine( PosBigDecimalOne.withUnit[KilometersPerSecond], - NonEmptyMap.of(Timestamp.Min -> + NonEmptyMap.of(Instant.MIN -> ErgsPerSecondCentimeter2Arcsec2IsSurfaceLineFluxUnit.unit.withValueTagged(PosBigDecimalOne)) ) ), diff --git a/modules/tests/shared/src/test/scala/lucuma/core/model/TargetSuite.scala b/modules/tests/shared/src/test/scala/lucuma/core/model/TargetSuite.scala index 98baace23..9ee3e04ea 100644 --- a/modules/tests/shared/src/test/scala/lucuma/core/model/TargetSuite.scala +++ b/modules/tests/shared/src/test/scala/lucuma/core/model/TargetSuite.scala @@ -5,8 +5,9 @@ package lucuma.core.model import cats.Order.* import cats.data.NonEmptyMap -import cats.kernel.laws.discipline.arbitrary.* +import cats.laws.discipline.arbitrary.* import eu.timepit.refined.cats.* +import org.typelevel.cats.time.instantInstances import eu.timepit.refined.scalacheck.string.* import lucuma.core.arb.* import lucuma.core.enums.Band @@ -18,6 +19,7 @@ import lucuma.core.util.arb.* import lucuma.core.util.laws.GidTests import monocle.law.discipline.* import munit.* +import cats.kernel.laws.discipline.* final class TargetSuite extends DisciplineSuite { import ArbTarget.given From 7990dbdd257834e7a15e1d04c0596f4fee867fae Mon Sep 17 00:00:00 2001 From: Carlos Quiroz Date: Tue, 22 Nov 2022 13:04:05 -0300 Subject: [PATCH 5/5] General cleanup --- .../lucuma/core/math/BrightnessUnits.scala | 1 + .../lucuma/core/model/EmissionLine.scala | 3 +- .../lucuma/core/model/UnnormalizedSED.scala | 46 ++++++------- .../math/dimensional/arb/ArbMeasure.scala | 8 +-- .../core/model/arb/ArbEmissionLine.scala | 8 +-- .../core/model/arb/ArbSourceProfile.scala | 28 ++++---- .../model/arb/ArbSpectralDefinition.scala | 22 +++---- .../lucuma/core/model/arb/ArbTarget.scala | 2 +- .../core/model/arb/ArbUnnormalizedSED.scala | 64 +++++++++---------- .../core/math/dimensional/MeasureSuite.scala | 20 +++--- .../lucuma/core/model/EmissionLineSuite.scala | 7 +- .../core/model/SourceProfileSuite.scala | 16 ++--- .../core/model/SpectralDefinitionSuite.scala | 12 ++-- .../scala/lucuma/core/model/TargetSuite.scala | 14 ++-- .../core/model/UnnormalizedSEDSuite.scala | 2 +- 15 files changed, 128 insertions(+), 125 deletions(-) diff --git a/modules/core/shared/src/main/scala/lucuma/core/math/BrightnessUnits.scala b/modules/core/shared/src/main/scala/lucuma/core/math/BrightnessUnits.scala index cb79af89b..cf97a1210 100644 --- a/modules/core/shared/src/main/scala/lucuma/core/math/BrightnessUnits.scala +++ b/modules/core/shared/src/main/scala/lucuma/core/math/BrightnessUnits.scala @@ -10,6 +10,7 @@ import cats.data.NonEmptyMap import lucuma.core.math.dimensional.* import lucuma.core.math.units.* import lucuma.core.util.Enumerated + import java.time.Instant object BrightnessUnits { diff --git a/modules/core/shared/src/main/scala/lucuma/core/model/EmissionLine.scala b/modules/core/shared/src/main/scala/lucuma/core/model/EmissionLine.scala index 598cbe57d..5655a6844 100644 --- a/modules/core/shared/src/main/scala/lucuma/core/model/EmissionLine.scala +++ b/modules/core/shared/src/main/scala/lucuma/core/model/EmissionLine.scala @@ -16,6 +16,7 @@ import lucuma.core.math.dimensional.* import lucuma.core.math.units.* import monocle.Focus import monocle.Lens + import java.time.Instant final case class EmissionLine[T]( @@ -36,7 +37,7 @@ final case class EmissionLine[T]( object EmissionLine { type LineFluxOverTime[T] = NonEmptyMap[Instant, Measure[PosBigDecimal] Of LineFlux[T]] - implicit def eqEmissionLine[T]: Eq[EmissionLine[T]] = + given eqEmissionLine[T]: Eq[EmissionLine[T]] = Eq.by(x => (x.lineWidth, x.lineFlux)) /** @group Optics */ diff --git a/modules/core/shared/src/main/scala/lucuma/core/model/UnnormalizedSED.scala b/modules/core/shared/src/main/scala/lucuma/core/model/UnnormalizedSED.scala index 76bc2f617..a9b91c693 100644 --- a/modules/core/shared/src/main/scala/lucuma/core/model/UnnormalizedSED.scala +++ b/modules/core/shared/src/main/scala/lucuma/core/model/UnnormalizedSED.scala @@ -6,7 +6,7 @@ package lucuma.core.model import cats.Eq import cats.Order import cats.data.NonEmptyMap -import cats.implicits._ +import cats.syntax.all.* import coulomb.* import coulomb.ops.algebra.cats.all.given import coulomb.syntax.* @@ -14,7 +14,7 @@ import coulomb.units.si.Kelvin import eu.timepit.refined.cats._ import eu.timepit.refined.types.numeric.PosBigDecimal import eu.timepit.refined.types.numeric.PosInt -import lucuma.core.enums._ +import lucuma.core.enums.* import lucuma.core.math.Wavelength import monocle.Focus import monocle.Lens @@ -32,72 +32,72 @@ sealed trait UnnormalizedSED extends Product with Serializable object UnnormalizedSED { - final case class StellarLibrary(librarySpectrum: StellarLibrarySpectrum) extends UnnormalizedSED + case class StellarLibrary(librarySpectrum: StellarLibrarySpectrum) extends UnnormalizedSED object StellarLibrary { - implicit val eqStellarLibrary: Eq[StellarLibrary] = Eq.by(_.librarySpectrum) + given Eq[StellarLibrary] = Eq.by(_.librarySpectrum) /** @group Optics */ val librarySpectrum: Lens[StellarLibrary, StellarLibrarySpectrum] = Focus[StellarLibrary](_.librarySpectrum) } - final case class CoolStarModel(temperature: CoolStarTemperature) + case class CoolStarModel(temperature: CoolStarTemperature) extends UnnormalizedSED object CoolStarModel { - implicit val orderCoolStarModel: Order[CoolStarModel] = Order.by(_.temperature) + given Order[CoolStarModel] = Order.by(_.temperature) /** @group Optics */ val temperature: Lens[CoolStarModel, CoolStarTemperature] = Focus[CoolStarModel](_.temperature) } - final case class Galaxy(galaxySpectrum: GalaxySpectrum) extends UnnormalizedSED + case class Galaxy(galaxySpectrum: GalaxySpectrum) extends UnnormalizedSED object Galaxy { - implicit val eqGalaxy: Eq[Galaxy] = Eq.by(_.galaxySpectrum) + given Eq[Galaxy] = Eq.by(_.galaxySpectrum) /** @group Optics */ val galaxySpectrum: Lens[Galaxy, GalaxySpectrum] = Focus[Galaxy](_.galaxySpectrum) } - final case class Planet(planetSpectrum: PlanetSpectrum) extends UnnormalizedSED + case class Planet(planetSpectrum: PlanetSpectrum) extends UnnormalizedSED object Planet { - implicit val eqPlanet: Eq[Planet] = Eq.by(_.planetSpectrum) + given Eq[Planet] = Eq.by(_.planetSpectrum) /** @group Optics */ val planetSpectrum: Lens[Planet, PlanetSpectrum] = Focus[Planet](_.planetSpectrum) } - final case class Quasar(quasarSpectrum: QuasarSpectrum) extends UnnormalizedSED + case class Quasar(quasarSpectrum: QuasarSpectrum) extends UnnormalizedSED object Quasar { - implicit val eqQuasar: Eq[Quasar] = Eq.by(_.quasarSpectrum) + given Eq[Quasar] = Eq.by(_.quasarSpectrum) /** @group Optics */ val quasarSpectrum: Lens[Quasar, QuasarSpectrum] = Focus[Quasar](_.quasarSpectrum) } - final case class HIIRegion(hiiRegionSpectrum: HIIRegionSpectrum) extends UnnormalizedSED + case class HIIRegion(hiiRegionSpectrum: HIIRegionSpectrum) extends UnnormalizedSED object HIIRegion { - implicit val eqHIIRegion: Eq[HIIRegion] = Eq.by(_.hiiRegionSpectrum) + given Eq[HIIRegion] = Eq.by(_.hiiRegionSpectrum) /** @group Optics */ val hiiRegionSpectrum: Lens[HIIRegion, HIIRegionSpectrum] = Focus[HIIRegion](_.hiiRegionSpectrum) } - final case class PlanetaryNebula(planetaryNebulaSpectrum: PlanetaryNebulaSpectrum) + case class PlanetaryNebula(planetaryNebulaSpectrum: PlanetaryNebulaSpectrum) extends UnnormalizedSED object PlanetaryNebula { - implicit val eqPlanetaryNebula: Eq[PlanetaryNebula] = Eq.by(_.planetaryNebulaSpectrum) + given Eq[PlanetaryNebula] = Eq.by(_.planetaryNebulaSpectrum) /** @group Optics */ val planetaryNebulaSpectrum: Lens[PlanetaryNebula, PlanetaryNebulaSpectrum] = @@ -105,20 +105,20 @@ object UnnormalizedSED { } /** Defined by power law function. */ - final case class PowerLaw(index: BigDecimal) extends UnnormalizedSED + case class PowerLaw(index: BigDecimal) extends UnnormalizedSED object PowerLaw { - implicit val orderPowerLaw: Order[PowerLaw] = Order.by(_.index) + given Order[PowerLaw] = Order.by(_.index) /** @group Optics */ val index: Lens[PowerLaw, BigDecimal] = Focus[PowerLaw](_.index) } /** A black body with a temperature in Kelvin. */ - final case class BlackBody(temperature: Quantity[PosInt, Kelvin]) extends UnnormalizedSED + case class BlackBody(temperature: Quantity[PosInt, Kelvin]) extends UnnormalizedSED object BlackBody { - implicit val orderBlackBody: Order[BlackBody] = Order.by(_.temperature) + given Order[BlackBody] = Order.by(_.temperature) /** @group Optics */ val temperature: Lens[BlackBody, Quantity[PosInt, Kelvin]] = @@ -126,18 +126,18 @@ object UnnormalizedSED { } // Flux density is unitless since we just need the shape of the function. It can be in any applicable units. - final case class UserDefined(fluxDensities: NonEmptyMap[Wavelength, PosBigDecimal]) + case class UserDefined(fluxDensities: NonEmptyMap[Wavelength, PosBigDecimal]) extends UnnormalizedSED object UserDefined { - implicit val eqUserDefined: Eq[UserDefined] = Eq.by(_.fluxDensities) + given Eq[UserDefined] = Eq.by(_.fluxDensities) /** @group Optics */ val fluxDensities: Lens[UserDefined, NonEmptyMap[Wavelength, PosBigDecimal]] = Focus[UserDefined](_.fluxDensities) } - implicit val eqSpectralDistribution: Eq[UnnormalizedSED] = + given Eq[UnnormalizedSED] = Eq.instance { case (a @ StellarLibrary(_), b @ StellarLibrary(_)) => a === b case (a @ CoolStarModel(_), b @ CoolStarModel(_)) => a === b diff --git a/modules/testkit/src/main/scala/lucuma/core/math/dimensional/arb/ArbMeasure.scala b/modules/testkit/src/main/scala/lucuma/core/math/dimensional/arb/ArbMeasure.scala index 90de45e8e..26ee612ff 100644 --- a/modules/testkit/src/main/scala/lucuma/core/math/dimensional/arb/ArbMeasure.scala +++ b/modules/testkit/src/main/scala/lucuma/core/math/dimensional/arb/ArbMeasure.scala @@ -10,7 +10,7 @@ import org.scalacheck.* trait ArbMeasure { import ArbUnits.* - implicit def arbMeasure[N: Arbitrary]: Arbitrary[Measure[N]] = + given arbMeasure[N: Arbitrary]: Arbitrary[Measure[N]] = Arbitrary { for { n <- arbitrary[N] @@ -19,10 +19,10 @@ trait ArbMeasure { } yield u.withValue(n, e) } - implicit def cogenMeasure[N: Cogen]: Cogen[Measure[N]] = + given cogenMeasure[N: Cogen]: Cogen[Measure[N]] = Cogen[(N, Units, Option[N])].contramap(m => (m.value, m.units, m.error)) - implicit def arbTaggedMeasure[N: Arbitrary, Tag](implicit + given arbTaggedMeasure[N: Arbitrary, Tag](using arbUnit: Arbitrary[Units Of Tag] ): Arbitrary[Measure[N] Of Tag] = Arbitrary { @@ -33,7 +33,7 @@ trait ArbMeasure { } yield u.withValueTagged(n, e) } - implicit def cogenTaggedMeasure[N: Cogen, Tag]: Cogen[Measure[N] Of Tag] = + given cogenTaggedMeasure[N: Cogen, Tag]: Cogen[Measure[N] Of Tag] = Cogen[(N, Units, Option[N])].contramap(m => (m.value, m.units, m.error)) } diff --git a/modules/testkit/src/main/scala/lucuma/core/model/arb/ArbEmissionLine.scala b/modules/testkit/src/main/scala/lucuma/core/model/arb/ArbEmissionLine.scala index acaf4e15f..12e2603bb 100644 --- a/modules/testkit/src/main/scala/lucuma/core/model/arb/ArbEmissionLine.scala +++ b/modules/testkit/src/main/scala/lucuma/core/model/arb/ArbEmissionLine.scala @@ -5,7 +5,6 @@ package lucuma.core.model.arb import cats.Order.* import cats.laws.discipline.arbitrary.* -import org.typelevel.cats.time.instantInstances import coulomb.* import coulomb.syntax.* import eu.timepit.refined.types.numeric.PosBigDecimal @@ -20,16 +19,17 @@ import lucuma.core.util.arb.ArbEnumerated import lucuma.core.util.arb.ArbTimestamp import org.scalacheck.Arbitrary.arbitrary import org.scalacheck.* +import org.typelevel.cats.time.instantInstances trait ArbEmissionLine { import ArbEnumerated.* import ArbTimestamp.* import BrightnessUnits.* - import ArbMeasure.* + import ArbMeasure.given import ArbRefined.* import ArbSpectralDefinition.* - implicit def arbEmissionLine[T](implicit + given arbEmissionLine[T](using arbLineFluxUnit: Arbitrary[Units Of LineFlux[T]] ): Arbitrary[EmissionLine[T]] = Arbitrary( @@ -39,7 +39,7 @@ trait ArbEmissionLine { } yield EmissionLine[T](lw.withUnit[KilometersPerSecond], lf) ) - implicit def cogEmissionLine[T]: Cogen[EmissionLine[T]] = + given cogEmissionLine[T]: Cogen[EmissionLine[T]] = Cogen[(PosBigDecimal, EmissionLine.LineFluxOverTime[T])] .contramap(x => (x.lineWidth.value, x.lineFlux)) } diff --git a/modules/testkit/src/main/scala/lucuma/core/model/arb/ArbSourceProfile.scala b/modules/testkit/src/main/scala/lucuma/core/model/arb/ArbSourceProfile.scala index 019b408ba..f52a62c06 100644 --- a/modules/testkit/src/main/scala/lucuma/core/model/arb/ArbSourceProfile.scala +++ b/modules/testkit/src/main/scala/lucuma/core/model/arb/ArbSourceProfile.scala @@ -4,31 +4,31 @@ package lucuma.core.model package arb -import cats.syntax.all._ +import cats.syntax.all.* import lucuma.core.math.Angle import lucuma.core.math.BrightnessUnits import lucuma.core.math.arb.ArbAngle import lucuma.core.util.arb.ArbEnumerated import org.scalacheck.Arbitrary.arbitrary -import org.scalacheck._ +import org.scalacheck.* trait ArbSourceProfile { - import ArbAngle._ - import ArbEnumerated._ - import BrightnessUnits._ - import ArbSpectralDefinition._ + import ArbAngle.* + import ArbEnumerated.* + import BrightnessUnits.* + import ArbSpectralDefinition.given - implicit val arbPointSourceProfile: Arbitrary[SourceProfile.Point] = + given Arbitrary[SourceProfile.Point] = Arbitrary( arbitrary[SpectralDefinition[Integrated]].map(SourceProfile.Point(_)) ) - implicit val arbUniformSourceProfile: Arbitrary[SourceProfile.Uniform] = + given Arbitrary[SourceProfile.Uniform] = Arbitrary( arbitrary[SpectralDefinition[Surface]].map(SourceProfile.Uniform(_)) ) - implicit val arbGaussianSourceProfile: Arbitrary[SourceProfile.Gaussian] = + given Arbitrary[SourceProfile.Gaussian] = Arbitrary { for { a <- arbitrary[Angle] @@ -36,7 +36,7 @@ trait ArbSourceProfile { } yield SourceProfile.Gaussian(a, d) } - implicit val arbSourceProfile: Arbitrary[SourceProfile] = + given Arbitrary[SourceProfile] = Arbitrary { Gen.oneOf( arbitrary[SourceProfile.Point], @@ -45,16 +45,16 @@ trait ArbSourceProfile { ) } - implicit val cogPointSourceProfile: Cogen[SourceProfile.Point] = + given Cogen[SourceProfile.Point] = Cogen[SpectralDefinition[Integrated]].contramap(_.spectralDefinition) - implicit val cogUniformSourceProfile: Cogen[SourceProfile.Uniform] = + given Cogen[SourceProfile.Uniform] = Cogen[SpectralDefinition[Surface]].contramap(_.spectralDefinition) - implicit val cogenGaussianSourceProfile: Cogen[SourceProfile.Gaussian] = + given Cogen[SourceProfile.Gaussian] = Cogen[(Angle, SpectralDefinition[Integrated])].contramap(x => (x.fwhm, x.spectralDefinition)) - implicit val cogSourceProfile: Cogen[SourceProfile] = + given Cogen[SourceProfile] = Cogen[ Either[SourceProfile.Point, Either[SourceProfile.Uniform, SourceProfile.Gaussian]] ] diff --git a/modules/testkit/src/main/scala/lucuma/core/model/arb/ArbSpectralDefinition.scala b/modules/testkit/src/main/scala/lucuma/core/model/arb/ArbSpectralDefinition.scala index 026fc41ae..1891821b4 100644 --- a/modules/testkit/src/main/scala/lucuma/core/model/arb/ArbSpectralDefinition.scala +++ b/modules/testkit/src/main/scala/lucuma/core/model/arb/ArbSpectralDefinition.scala @@ -7,7 +7,6 @@ import cats.Order.* import cats.data.NonEmptyMap import cats.laws.discipline.arbitrary.* import cats.syntax.all.* -import org.typelevel.cats.time.instantInstances import eu.timepit.refined.types.numeric.PosBigDecimal import lucuma.core.enums.Band import lucuma.core.math.BrightnessUnits @@ -23,23 +22,24 @@ import lucuma.core.util.arb.ArbEnumerated import org.scalacheck.Arbitrary.* import org.scalacheck.Arbitrary.arbitrary import org.scalacheck.* +import org.typelevel.cats.time.instantInstances import scala.collection.immutable.SortedMap trait ArbSpectralDefinition { - import ArbUnnormalizedSED.* + import ArbUnnormalizedSED.given import ArbEnumerated.* import SpectralDefinition.* import BrightnessUnits.* - import ArbMeasure.* - import ArbEmissionLine.* + import ArbMeasure.given + import ArbEmissionLine.given import ArbRefined.* import ArbWavelength.* - implicit def cogNonEmptyMap[K: Cogen: Ordering, V: Cogen]: Cogen[NonEmptyMap[K, V]] = + given cogNonEmptyMap[K: Cogen: Ordering, V: Cogen]: Cogen[NonEmptyMap[K, V]] = Cogen[Map[K, V]].contramap(_.toSortedMap.toMap) - implicit def arbBandNormalizedSpectralDefinition[T](implicit + given arbBandNormalizedSpectralDefinition[T](using arbUnit: Arbitrary[Units Of Brightness[T]] ): Arbitrary[BandNormalized[T]] = Arbitrary { @@ -49,12 +49,12 @@ trait ArbSpectralDefinition { } yield BandNormalized(s, b) } - implicit def cogBandNormalizedSpectralDefinition[T]: Cogen[BandNormalized[T]] = + given cogBandNormalizedSpectralDefinition[T]: Cogen[BandNormalized[T]] = Cogen[(UnnormalizedSED, Map[Band, BrightnessMeasureOverTime[T]])].contramap(x => (x.sed, x.brightnesses) ) - implicit def arbEmissionLines[T](implicit + given arbEmissionLines[T](using arbLineFluxUnit: Arbitrary[Units Of LineFlux[T]], arbFluxDensityContinuumUnit: Arbitrary[Units Of FluxDensityContinuum[T]] ): Arbitrary[EmissionLines[T]] = @@ -65,12 +65,12 @@ trait ArbSpectralDefinition { } yield EmissionLines[T](l, c) } - implicit def cogEmissionLines[T]: Cogen[EmissionLines[T]] = + given cogEmissionLines[T]: Cogen[EmissionLines[T]] = Cogen[(Map[Wavelength, EmissionLine[T]], Measure[PosBigDecimal])].contramap(x => (x.lines, x.fluxDensityContinuum) ) - implicit def arbSpectralDefinition[T](implicit + given arbSpectralDefinition[T](using arbBrightnessUnit: Arbitrary[Units Of Brightness[T]], arbLineUnit: Arbitrary[Units Of LineFlux[T]], arbContinuumUnit: Arbitrary[Units Of FluxDensityContinuum[T]] @@ -79,7 +79,7 @@ trait ArbSpectralDefinition { Gen.oneOf(arbitrary[BandNormalized[T]], arbitrary[EmissionLines[T]]) ) - implicit def cogSpectralDefinition[T]: Cogen[SpectralDefinition[T]] = + given cogSpectralDefinition[T]: Cogen[SpectralDefinition[T]] = Cogen[Either[BandNormalized[T], EmissionLines[T]]].contramap { case d @ BandNormalized(_, _) => d.asLeft case d @ EmissionLines(_, _) => d.asRight diff --git a/modules/testkit/src/main/scala/lucuma/core/model/arb/ArbTarget.scala b/modules/testkit/src/main/scala/lucuma/core/model/arb/ArbTarget.scala index 55db5dcdd..d8e588c8f 100644 --- a/modules/testkit/src/main/scala/lucuma/core/model/arb/ArbTarget.scala +++ b/modules/testkit/src/main/scala/lucuma/core/model/arb/ArbTarget.scala @@ -17,7 +17,7 @@ trait ArbTarget { import ArbEphemerisKey.* import ArbSiderealTracking.given import ArbEnumerated.* - import ArbSourceProfile.* + import ArbSourceProfile.given import ArbCatalogInfo.* given Arbitrary[Target.Sidereal] = diff --git a/modules/testkit/src/main/scala/lucuma/core/model/arb/ArbUnnormalizedSED.scala b/modules/testkit/src/main/scala/lucuma/core/model/arb/ArbUnnormalizedSED.scala index d4938b927..0ba4fd104 100644 --- a/modules/testkit/src/main/scala/lucuma/core/model/arb/ArbUnnormalizedSED.scala +++ b/modules/testkit/src/main/scala/lucuma/core/model/arb/ArbUnnormalizedSED.scala @@ -5,97 +5,97 @@ package lucuma.core.model package arb import cats.data.NonEmptyMap -import cats.implicits._ -import cats.laws.discipline.arbitrary._ +import cats.implicits.* +import cats.laws.discipline.arbitrary.* import coulomb.* import coulomb.syntax.* import coulomb.units.si.Kelvin import eu.timepit.refined.numeric.Positive import eu.timepit.refined.refineV import eu.timepit.refined.types.numeric.PosBigDecimal -import lucuma.core.enums._ +import lucuma.core.enums.* import lucuma.core.math.Wavelength import lucuma.core.math.arb.ArbRefined import lucuma.core.math.arb.ArbWavelength -import lucuma.core.math.units._ +import lucuma.core.math.units.* import lucuma.core.util.arb.ArbEnumerated -import lucuma.refined._ +import lucuma.refined.* import org.scalacheck.Arbitrary.arbitrary -import org.scalacheck._ +import org.scalacheck.* trait ArbUnnormalizedSED { - import ArbEnumerated._ - import UnnormalizedSED._ - import ArbRefined._ - import ArbWavelength._ + import ArbEnumerated.* + import UnnormalizedSED.* + import ArbRefined.* + import ArbWavelength.* - implicit val arbStellarLibrary: Arbitrary[StellarLibrary] = + given Arbitrary[StellarLibrary] = Arbitrary(arbitrary[StellarLibrarySpectrum].map(StellarLibrary(_))) - implicit val cogStellarLibrary: Cogen[StellarLibrary] = + given Cogen[StellarLibrary] = Cogen[StellarLibrarySpectrum].contramap(_.librarySpectrum) - implicit val arbCoolStarModel: Arbitrary[CoolStarModel] = + given Arbitrary[CoolStarModel] = Arbitrary(arbitrary[CoolStarTemperature].map(CoolStarModel(_))) - implicit val cogCoolStarModel: Cogen[CoolStarModel] = + given Cogen[CoolStarModel] = Cogen[BigDecimal].contramap(_.temperature.temperature.value.value) - implicit val arbGalaxy: Arbitrary[Galaxy] = + given Arbitrary[Galaxy] = Arbitrary(arbitrary[GalaxySpectrum].map(Galaxy(_))) - implicit val cogGalaxy: Cogen[Galaxy] = + given Cogen[Galaxy] = Cogen[GalaxySpectrum].contramap(_.galaxySpectrum) - implicit val arbPlanet: Arbitrary[Planet] = + given Arbitrary[Planet] = Arbitrary(arbitrary[PlanetSpectrum].map(Planet(_))) - implicit val cogPlanet: Cogen[Planet] = + given Cogen[Planet] = Cogen[PlanetSpectrum].contramap(_.planetSpectrum) - implicit val arbQuasar: Arbitrary[Quasar] = + given Arbitrary[Quasar] = Arbitrary(arbitrary[QuasarSpectrum].map(Quasar(_))) - implicit val cogQuasar: Cogen[Quasar] = + given Cogen[Quasar] = Cogen[QuasarSpectrum].contramap(_.quasarSpectrum) - implicit val arbHIIRegion: Arbitrary[HIIRegion] = + given Arbitrary[HIIRegion] = Arbitrary(arbitrary[HIIRegionSpectrum].map(HIIRegion(_))) - implicit val cogHIIRegion: Cogen[HIIRegion] = + given Cogen[HIIRegion] = Cogen[HIIRegionSpectrum].contramap(_.hiiRegionSpectrum) - implicit val arbPlanetaryNebula: Arbitrary[PlanetaryNebula] = + given Arbitrary[PlanetaryNebula] = Arbitrary(arbitrary[PlanetaryNebulaSpectrum].map(PlanetaryNebula(_))) - implicit val cogPlanetaryNebula: Cogen[PlanetaryNebula] = + given Cogen[PlanetaryNebula] = Cogen[PlanetaryNebulaSpectrum].contramap(_.planetaryNebulaSpectrum) - implicit val arbPowerLaw: Arbitrary[PowerLaw] = + given Arbitrary[PowerLaw] = Arbitrary(arbitrary[BigDecimal].map(PowerLaw(_))) - implicit val cogPowerLaw: Cogen[PowerLaw] = + given Cogen[PowerLaw] = Cogen[BigDecimal].contramap(_.index) - implicit val arbBlackBody: Arbitrary[BlackBody] = + given Arbitrary[BlackBody] = Arbitrary( Gen .choose(1, 10000) .map(a => BlackBody(refineV[Positive](a).toOption.get.withUnit[Kelvin])) ) - implicit val cogBlackBody: Cogen[BlackBody] = + given Cogen[BlackBody] = Cogen[BigDecimal].contramap(_.temperature.value.value) - implicit val arbUserDefined: Arbitrary[UserDefined] = + given Arbitrary[UserDefined] = Arbitrary( arbitrary[NonEmptyMap[Wavelength, PosBigDecimal]].map(UserDefined(_)) ) - implicit val cogUserDefined: Cogen[UserDefined] = + given Cogen[UserDefined] = Cogen[Map[Wavelength, PosBigDecimal]].contramap(_.fluxDensities.toSortedMap) - implicit def arbSpectralDistribution[T]: Arbitrary[UnnormalizedSED] = + given Arbitrary[UnnormalizedSED] = Arbitrary( Gen.oneOf( arbitrary[StellarLibrary], @@ -111,7 +111,7 @@ trait ArbUnnormalizedSED { ) ) - implicit def cogSpectralDistribution[T]: Cogen[UnnormalizedSED] = + given Cogen[UnnormalizedSED] = Cogen[Either[ StellarLibrary, Either[ diff --git a/modules/tests/shared/src/test/scala/lucuma/core/math/dimensional/MeasureSuite.scala b/modules/tests/shared/src/test/scala/lucuma/core/math/dimensional/MeasureSuite.scala index 121a1cafa..ec41a079f 100644 --- a/modules/tests/shared/src/test/scala/lucuma/core/math/dimensional/MeasureSuite.scala +++ b/modules/tests/shared/src/test/scala/lucuma/core/math/dimensional/MeasureSuite.scala @@ -4,18 +4,18 @@ package lucuma.core.math.dimensional import cats.Eq -import cats.kernel.laws.discipline._ -import cats.syntax.all._ -import lucuma.core.math.BrightnessUnits._ +import cats.kernel.laws.discipline.* +import cats.syntax.all.* +import lucuma.core.math.BrightnessUnits.* import lucuma.core.math.dimensional.arb.ArbMeasure import lucuma.core.math.dimensional.arb.ArbUnits -import lucuma.core.util.arb.ArbEnumerated._ -import monocle.law.discipline._ -import org.scalacheck.Prop._ +import lucuma.core.util.arb.ArbEnumerated.* +import monocle.law.discipline.* +import org.scalacheck.Prop.* class MeasureSuite extends munit.DisciplineSuite { - import ArbMeasure._ - import ArbUnits._ + import ArbMeasure.given + import ArbUnits.* // Laws checkAll("Measure[BigDecimal]", EqTests[Measure[BigDecimal]].eqv) @@ -31,9 +31,9 @@ class MeasureSuite extends munit.DisciplineSuite { } test("Derived Display") { - import lucuma.core.math.units._ + import lucuma.core.math.units.* import lucuma.core.util.Display - import lucuma.core.syntax.display._ + import lucuma.core.syntax.display.* val m = UnitOfMeasure[ABMagnitude].withValue(BigDecimal(1.235)) diff --git a/modules/tests/shared/src/test/scala/lucuma/core/model/EmissionLineSuite.scala b/modules/tests/shared/src/test/scala/lucuma/core/model/EmissionLineSuite.scala index 447ad460d..65ad07f6c 100644 --- a/modules/tests/shared/src/test/scala/lucuma/core/model/EmissionLineSuite.scala +++ b/modules/tests/shared/src/test/scala/lucuma/core/model/EmissionLineSuite.scala @@ -7,7 +7,6 @@ import cats.data.NonEmptyMap import cats.implicits.* import cats.kernel.laws.discipline.* import cats.laws.discipline.arbitrary.* -import org.typelevel.cats.time.instantInstances import coulomb.* import coulomb.ops.algebra.cats.all.given import coulomb.syntax.* @@ -21,13 +20,15 @@ import lucuma.core.model.arb.ArbSpectralDefinition import lucuma.core.util.arb.ArbEnumerated import monocle.law.discipline.LensTests import munit.* +import org.typelevel.cats.time.instantInstances + import java.time.Instant final class EmissionLineSuite extends DisciplineSuite { import ArbEnumerated.* - import ArbEmissionLine.* + import ArbEmissionLine.given import ArbRefined.* - import ArbMeasure.* + import ArbMeasure.given import ArbSpectralDefinition.* import ArbQuantity.given diff --git a/modules/tests/shared/src/test/scala/lucuma/core/model/SourceProfileSuite.scala b/modules/tests/shared/src/test/scala/lucuma/core/model/SourceProfileSuite.scala index 5a22fd3a3..82d718c81 100644 --- a/modules/tests/shared/src/test/scala/lucuma/core/model/SourceProfileSuite.scala +++ b/modules/tests/shared/src/test/scala/lucuma/core/model/SourceProfileSuite.scala @@ -5,9 +5,8 @@ package lucuma.core.model import cats.Order.* import cats.data.NonEmptyMap -import cats.laws.discipline.arbitrary.* import cats.kernel.laws.discipline.* -import org.typelevel.cats.time.instantInstances +import cats.laws.discipline.arbitrary.* import coulomb.* import coulomb.syntax.* import eu.timepit.refined.cats.* @@ -26,19 +25,20 @@ import lucuma.core.util.arb.ArbCollection import lucuma.core.util.arb.ArbEnumerated import monocle.law.discipline.* import munit.* +import org.typelevel.cats.time.instantInstances -import scala.collection.immutable.SortedMap import java.time.Instant +import scala.collection.immutable.SortedMap final class SourceProfileSuite extends DisciplineSuite { import ArbAngle.* - import ArbEmissionLine.* + import ArbEmissionLine.given import ArbEnumerated.* - import ArbMeasure.* + import ArbMeasure.given import ArbRefined.* - import ArbSourceProfile.* - import ArbSpectralDefinition.* - import ArbUnnormalizedSED.* + import ArbSourceProfile.given + import ArbSpectralDefinition.given + import ArbUnnormalizedSED.given import ArbWavelength.* import ArbCollection.* diff --git a/modules/tests/shared/src/test/scala/lucuma/core/model/SpectralDefinitionSuite.scala b/modules/tests/shared/src/test/scala/lucuma/core/model/SpectralDefinitionSuite.scala index 1100e3718..6b312575d 100644 --- a/modules/tests/shared/src/test/scala/lucuma/core/model/SpectralDefinitionSuite.scala +++ b/modules/tests/shared/src/test/scala/lucuma/core/model/SpectralDefinitionSuite.scala @@ -7,7 +7,6 @@ import cats.Order.* import cats.data.NonEmptyMap import cats.kernel.laws.discipline.* import cats.laws.discipline.arbitrary.* -import org.typelevel.cats.time.instantInstances import coulomb.* import coulomb.syntax.* import eu.timepit.refined.cats.* @@ -25,18 +24,19 @@ import lucuma.core.util.arb.ArbCollection import lucuma.core.util.arb.ArbEnumerated import monocle.law.discipline.* import munit.* +import org.typelevel.cats.time.instantInstances -import scala.collection.immutable.SortedMap import java.time.Instant +import scala.collection.immutable.SortedMap final class SpectralDefinitionSuite extends DisciplineSuite { - import ArbUnnormalizedSED.* + import ArbUnnormalizedSED.given import ArbEnumerated.* import BrightnessUnits.* - import ArbSpectralDefinition.* + import ArbSpectralDefinition.given import ArbRefined.* - import ArbMeasure.* - import ArbEmissionLine.* + import ArbMeasure.given + import ArbEmissionLine.given import ArbCollection.* import ArbWavelength.* diff --git a/modules/tests/shared/src/test/scala/lucuma/core/model/TargetSuite.scala b/modules/tests/shared/src/test/scala/lucuma/core/model/TargetSuite.scala index 9ee3e04ea..324b84ea5 100644 --- a/modules/tests/shared/src/test/scala/lucuma/core/model/TargetSuite.scala +++ b/modules/tests/shared/src/test/scala/lucuma/core/model/TargetSuite.scala @@ -5,9 +5,9 @@ package lucuma.core.model import cats.Order.* import cats.data.NonEmptyMap +import cats.kernel.laws.discipline.* import cats.laws.discipline.arbitrary.* import eu.timepit.refined.cats.* -import org.typelevel.cats.time.instantInstances import eu.timepit.refined.scalacheck.string.* import lucuma.core.arb.* import lucuma.core.enums.Band @@ -19,11 +19,11 @@ import lucuma.core.util.arb.* import lucuma.core.util.laws.GidTests import monocle.law.discipline.* import munit.* -import cats.kernel.laws.discipline.* +import org.typelevel.cats.time.instantInstances final class TargetSuite extends DisciplineSuite { import ArbTarget.given - import ArbSourceProfile.* + import ArbSourceProfile.given import ArbSiderealTracking.given import ArbEphemerisKey.* import ArbParallax.* @@ -37,12 +37,12 @@ final class TargetSuite extends DisciplineSuite { import ArbEpoch.* import ArbCatalogInfo.* import Target.* - import ArbEmissionLine.* - import ArbSpectralDefinition.* + import ArbEmissionLine.given + import ArbSpectralDefinition.given import ArbAngle.* - import ArbUnnormalizedSED.* + import ArbUnnormalizedSED.given import ArbRefined.* - import ArbMeasure.* + import ArbMeasure.given import ArbCollection.* import ArbWavelength.* diff --git a/modules/tests/shared/src/test/scala/lucuma/core/model/UnnormalizedSEDSuite.scala b/modules/tests/shared/src/test/scala/lucuma/core/model/UnnormalizedSEDSuite.scala index 9fb7819f3..5fcb810e8 100644 --- a/modules/tests/shared/src/test/scala/lucuma/core/model/UnnormalizedSEDSuite.scala +++ b/modules/tests/shared/src/test/scala/lucuma/core/model/UnnormalizedSEDSuite.scala @@ -16,7 +16,7 @@ import munit.* final class UnnormalizedSEDSuite extends DisciplineSuite { import UnnormalizedSED.* - import ArbUnnormalizedSED.* + import ArbUnnormalizedSED.given import ArbEnumerated.* import ArbQuantity.given import ArbRefined.*