diff options
author | vlad <vlad@drivergrp.com> | 2016-07-19 15:01:30 -0400 |
---|---|---|
committer | vlad <vlad@drivergrp.com> | 2016-07-19 15:01:30 -0400 |
commit | 979ff9e765e3c08501cbd00354a87013853fe796 (patch) | |
tree | c5d41ed99759c3bf97ba4ef9162aeb68ed4c29f8 /src/main/scala/com/drivergrp/core/generators.scala | |
parent | 8d45c2ec5e8abc63046c610109471cc3fa7bfaa2 (diff) | |
download | driver-core-979ff9e765e3c08501cbd00354a87013853fe796.tar.gz driver-core-979ff9e765e3c08501cbd00354a87013853fe796.tar.bz2 driver-core-979ff9e765e3c08501cbd00354a87013853fe796.zip |
Unit tests for core code and bug fixes
Diffstat (limited to 'src/main/scala/com/drivergrp/core/generators.scala')
-rw-r--r-- | src/main/scala/com/drivergrp/core/generators.scala | 32 |
1 files changed, 23 insertions, 9 deletions
diff --git a/src/main/scala/com/drivergrp/core/generators.scala b/src/main/scala/com/drivergrp/core/generators.scala index 6055cd0..a564374 100644 --- a/src/main/scala/com/drivergrp/core/generators.scala +++ b/src/main/scala/com/drivergrp/core/generators.scala @@ -12,12 +12,14 @@ object generators { import random._ private val DefaultMaxLength = 100 + private val StringLetters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ ".toSet - def nextId[T](): Id[T] = Id[T](nextLong()) + def nextId[T](): Id[T] = Id[T](scala.math.abs(nextLong())) def nextName[T](maxLength: Int = DefaultMaxLength): Name[T] = Name[T](nextString(maxLength)) - def nextString(maxLength: Int = DefaultMaxLength) = random.nextString(maxLength) + def nextString(maxLength: Int = DefaultMaxLength): String = + (oneOf[Char](StringLetters) +: arrayOf(oneOf[Char](StringLetters), maxLength - 1)).mkString def nextOption[T](value: => T): Option[T] = if (nextBoolean) Option(value) else None @@ -27,23 +29,35 @@ object generators { def nextTime(): Time = Time(math.abs(nextLong() % System.currentTimeMillis)) - def nextTimeRange(): TimeRange = TimeRange(nextTime(), nextTime()) + def nextTimeRange(): TimeRange = { + val oneTime = nextTime() + val anotherTime = nextTime() + + TimeRange(Time(scala.math.min(oneTime.millis, anotherTime.millis)), + Time(scala.math.max(oneTime.millis, anotherTime.millis))) + } def nextBigDecimal(multiplier: Double = 1000000.00, precision: Int = 2): BigDecimal = BigDecimal(multiplier * nextDouble, new MathContext(precision)) - def oneOf[T](items: Seq[T]): T = items(nextInt(items.size)) + def oneOf[T](items: T*): T = oneOf(items.toSet) + + def oneOf[T](items: Set[T]): T = items.toSeq(nextInt(items.size)) def arrayOf[T: ClassTag](generator: => T, maxLength: Int = DefaultMaxLength): Array[T] = - Array.fill(maxLength)(generator) + Array.fill(nextInt(maxLength))(generator) - def seqOf[T](generator: => T, maxLength: Int = DefaultMaxLength): Seq[T] = Seq.fill(maxLength)(generator) + def seqOf[T](generator: => T, maxLength: Int = DefaultMaxLength): Seq[T] = + Seq.fill(nextInt(maxLength))(generator) - def vectorOf[T](generator: => T, maxLength: Int = DefaultMaxLength): Vector[T] = Vector.fill(maxLength)(generator) + def vectorOf[T](generator: => T, maxLength: Int = DefaultMaxLength): Vector[T] = + Vector.fill(nextInt(maxLength))(generator) - def listOf[T](generator: => T, maxLength: Int = DefaultMaxLength): List[T] = List.fill(maxLength)(generator) + def listOf[T](generator: => T, maxLength: Int = DefaultMaxLength): List[T] = + List.fill(nextInt(maxLength))(generator) - def setOf[T](generator: => T, maxLength: Int = DefaultMaxLength): Set[T] = seqOf(generator, maxLength).toSet + def setOf[T](generator: => T, maxLength: Int = DefaultMaxLength): Set[T] = + seqOf(generator, nextInt(maxLength)).toSet def mapOf[K, V](maxLength: Int, keyGenerator: => K, valueGenerator: => V): Map[K, V] = seqOf(nextPair(keyGenerator, valueGenerator), maxLength).toMap |