Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions build.sbt
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,14 @@ lazy val root = project
, libraryDependencies ++=
Seq("org.scalacheck" %% "scalacheck" % "1.19.0" % "test")
)

ThisBuild / scalacOptions ++= Seq(
"-encoding", "utf8",
"-feature",
"-language:implicitConversions",
"-language:existentials",
"-language:strictEquality",
"-unchecked",
"-Werror",
"-deprecation"
)
8 changes: 5 additions & 3 deletions src/main/scala/id/UUID.scala
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ object UUID:
import JavaUUID.*

/** wrapper for a two character upper case country code */
case class CountryCode(underlying: String):
case class CountryCode(underlying: String) derives CanEqual:
assert(underlying.matches("[A-Z][A-Z]"), s"not a two character upper case string: $underlying")

def asBytes: Array[Byte] =
Expand Down Expand Up @@ -78,15 +78,15 @@ object UUID:
val msb = from.getMostSignificantBits & ISO3166Based.mask
UUID(msb + ISO3166Based.bits, encode(source, target)(from.getLeastSignificantBits))

enum Variant(val bits: Long):
enum Variant(val bits: Long) derives CanEqual:
val mask: Long = 0xeffff_ffff_ffff_fffL
case NCSBackwardsCompatible extends Variant(0x2111_1111_1111_1111L)
case LeachSalz extends Variant(0x5111_1111_1111_1111L)
case MicrosoftBackwardsCompatible extends Variant(0xD111_1111_1111_1111L)
case Reserved extends Variant(0xF111_1111_1111_1111L)


enum Version(val bits: Long):
enum Version(val bits: Long) derives CanEqual:
val mask: Long = 0xffff_ffff_ffff_0fffL
case TimeBased extends Version(0x0000_0000_0000_1000L)
case DCESecurityBased extends Version(0x0000_0000_0000_2000L)
Expand All @@ -101,6 +101,8 @@ object compat:

type JavaUUID = java.util.UUID

given CanEqual[JavaUUID, JavaUUID] = CanEqual.derived

object JavaUUID:

def apply(msb: Long, lsb: Long): JavaUUID =
Expand Down
4 changes: 2 additions & 2 deletions src/test/scala/id/JavaUUIDCompatibilityProps.scala
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,10 @@ object JavaUUIDCompatibilityProps extends Properties("uuid.compat"):
property("v3IsJavaUUIDCompatible - MD5HashBased") =
forAll(javaVersion3UUIDs)(isJavaUUIDVersion3Compatible)

import compat.*
import compat.{*, given}
import JavaUUID.*
import Variant.*
import Version.*
import compat.JavaUUID.*

def isJavaUUIDCompatible(javaUUID: JavaUUID): Boolean =
isJavaUUIDVersionCompatible(javaUUID) &&
Expand Down