aboutsummaryrefslogtreecommitdiff
path: root/src/test/scala/com/drivergrp/core/TimeTest.scala
diff options
context:
space:
mode:
authorvlad <vlad@drivergrp.com>2016-09-09 15:15:04 -0700
committervlad <vlad@drivergrp.com>2016-09-09 15:15:04 -0700
commit135c38f390da1a2faf983d9b2b2f0fea6a5e74b5 (patch)
tree37090c7f7eec45cf581538e42385c413a15fd237 /src/test/scala/com/drivergrp/core/TimeTest.scala
parent968a702c359cd1de3359109edda6af5dd26fc74a (diff)
downloaddriver-core-135c38f390da1a2faf983d9b2b2f0fea6a5e74b5.tar.gz
driver-core-135c38f390da1a2faf983d9b2b2f0fea6a5e74b5.tar.bz2
driver-core-135c38f390da1a2faf983d9b2b2f0fea6a5e74b5.zip
Scalacheck properties check inside of scalatest + code formatting
Diffstat (limited to 'src/test/scala/com/drivergrp/core/TimeTest.scala')
-rw-r--r--src/test/scala/com/drivergrp/core/TimeTest.scala30
1 files changed, 29 insertions, 1 deletions
diff --git a/src/test/scala/com/drivergrp/core/TimeTest.scala b/src/test/scala/com/drivergrp/core/TimeTest.scala
index e6cca45..b928413 100644
--- a/src/test/scala/com/drivergrp/core/TimeTest.scala
+++ b/src/test/scala/com/drivergrp/core/TimeTest.scala
@@ -3,11 +3,18 @@ package com.drivergrp.core
import java.util.TimeZone
import com.drivergrp.core.time.{Time, _}
+import org.scalacheck.{Arbitrary, Gen}
import org.scalatest.{FlatSpec, Matchers}
+import org.scalatest.prop.Checkers
+import org.scalacheck.Arbitrary._
+import org.scalacheck.Prop.BooleanOperators
import scala.concurrent.duration._
-class TimeTest extends FlatSpec with Matchers {
+class TimeTest extends FlatSpec with Matchers with Checkers {
+
+ implicit val arbitraryDuration = Arbitrary[Duration](Gen.chooseNum(0L, 9999999999L).map(_.milliseconds))
+ implicit val arbitraryTime = Arbitrary[Time](Gen.chooseNum(0L, 9999999999L).map(millis => Time(millis)))
"Time" should "have correct methods to compare" in {
@@ -15,14 +22,24 @@ class TimeTest extends FlatSpec with Matchers {
Time(123L).isAfter(Time(123L)) should be(false)
Time(123L).isAfter(Time(234L)) should be(false)
+ check((a: Time, b: Time) => (a.millis > b.millis) ==> a.isAfter(b))
+
Time(234L).isBefore(Time(123L)) should be(false)
Time(123L).isBefore(Time(123L)) should be(false)
Time(123L).isBefore(Time(234L)) should be(true)
+
+ check { (a: Time, b: Time) =>
+ (a.millis < b.millis) ==> a.isBefore(b)
+ }
}
it should "not modify time" in {
Time(234L).millis should be(234L)
+
+ check { millis: Long =>
+ Time(millis).millis == millis
+ }
}
it should "support arithmetic with scala.concurrent.duration" in {
@@ -30,12 +47,23 @@ class TimeTest extends FlatSpec with Matchers {
Time(123L).advanceBy(0 minutes).millis should be(123L)
Time(123L).advanceBy(1 second).millis should be(123L + Second)
Time(123L).advanceBy(4 days).millis should be(123L + 4 * Days)
+
+ check { (time: Time, duration: Duration) =>
+ time.advanceBy(duration).millis == (time.millis + duration.toMillis)
+ }
}
it should "have ordering defined correctly" in {
Seq(Time(321L), Time(123L), Time(231L)).sorted should
contain theSameElementsInOrderAs Seq(Time(123L), Time(231L), Time(321L))
+
+ check { times: List[Time] =>
+ times.sorted.sliding(2).filter(_.size == 2).forall {
+ case Seq(a, b) =>
+ a.millis <= b.millis
+ }
+ }
}
it should "reset to the start of the period, e.g. month" in {