diff options
author | Vlad Uspensky <v.uspenskiy@icloud.com> | 2017-10-20 14:38:42 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-10-20 14:38:42 -0700 |
commit | 0cb06d70bd91e1e6a4ab9d97851ef9db7aaedfd6 (patch) | |
tree | dd0d66174b6294251570ce24e8bd7b864beb561a /src/main/scala/xyz/driver/core/generators.scala | |
parent | fa6716e0a3223fa0b15966f6bdfe5464e26d8fc2 (diff) | |
parent | ba2c214d2f8f9a1ba6d8265c55476a5281b8fd22 (diff) | |
download | driver-core-0cb06d70bd91e1e6a4ab9d97851ef9db7aaedfd6.tar.gz driver-core-0cb06d70bd91e1e6a4ab9d97851ef9db7aaedfd6.tar.bz2 driver-core-0cb06d70bd91e1e6a4ab9d97851ef9db7aaedfd6.zip |
Merge pull request #76 from drivergroup/refinedv1.5.1
[RFC] Using "Refined" library (https://github.com/fthomas/refined) to…
Diffstat (limited to 'src/main/scala/xyz/driver/core/generators.scala')
-rw-r--r-- | src/main/scala/xyz/driver/core/generators.scala | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/src/main/scala/xyz/driver/core/generators.scala b/src/main/scala/xyz/driver/core/generators.scala index 9242fd9..e6eb654 100644 --- a/src/main/scala/xyz/driver/core/generators.scala +++ b/src/main/scala/xyz/driver/core/generators.scala @@ -1,12 +1,16 @@ package xyz.driver.core import java.math.MathContext +import java.util.UUID import xyz.driver.core.time.{Time, TimeRange} import xyz.driver.core.date.Date import scala.reflect.ClassTag import scala.util.Random +import eu.timepit.refined.refineV +import eu.timepit.refined.api.Refined +import eu.timepit.refined.collection._ object generators { @@ -35,13 +39,22 @@ object generators { def nextName[T](maxLength: Int = DefaultMaxLength): Name[T] = Name[T](nextString(maxLength)) - def nextUuid() = java.util.UUID.randomUUID + def nextNonEmptyName[T](maxLength: Int = DefaultMaxLength): NonEmptyName[T] = + NonEmptyName[T](nextNonEmptyString(maxLength)) - def nextRevision[T]() = Revision[T](nextUuid().toString) + def nextUuid(): UUID = java.util.UUID.randomUUID + + def nextRevision[T](): Revision[T] = Revision[T](nextUuid().toString) def nextString(maxLength: Int = DefaultMaxLength): String = (oneOf[Char](StringLetters) +: arrayOf(oneOf[Char](StringLetters), maxLength - 1)).mkString + def nextNonEmptyString(maxLength: Int = DefaultMaxLength): String Refined NonEmpty = { + refineV[NonEmpty]( + (oneOf[Char](StringLetters) +: arrayOf(oneOf[Char](StringLetters), maxLength - 1)).mkString + ).right.get + } + def nextOption[T](value: => T): Option[T] = if (nextBoolean()) Option(value) else None def nextPair[L, R](left: => L, right: => R): (L, R) = (left, right) |