aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/xyz/driver/core/generators.scala
diff options
context:
space:
mode:
authorvlad <vlad@driver.xyz>2017-10-19 14:42:50 -0700
committervlad <vlad@driver.xyz>2017-10-19 14:42:50 -0700
commitc13a90f7dc6565e0beddcc6a61609d4e131f55ba (patch)
tree9d56f512986394f0bb3901ef09abaea809dae667 /src/main/scala/xyz/driver/core/generators.scala
parent2af63e7fb8b15568adaf2d9f0a6b395d6719fd71 (diff)
downloaddriver-core-c13a90f7dc6565e0beddcc6a61609d4e131f55ba.tar.gz
driver-core-c13a90f7dc6565e0beddcc6a61609d4e131f55ba.tar.bz2
driver-core-c13a90f7dc6565e0beddcc6a61609d4e131f55ba.zip
[RFC] Using "Refined" library (https://github.com/fthomas/refined) to allow defining entities with more precise types
Diffstat (limited to 'src/main/scala/xyz/driver/core/generators.scala')
-rw-r--r--src/main/scala/xyz/driver/core/generators.scala14
1 files changed, 12 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..f3913e5 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,19 @@ object generators {
def nextName[T](maxLength: Int = DefaultMaxLength): Name[T] = Name[T](nextString(maxLength))
- def nextUuid() = java.util.UUID.randomUUID
+ def nextUuid(): UUID = java.util.UUID.randomUUID
- def nextRevision[T]() = Revision[T](nextUuid().toString)
+ 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)