aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKseniya Tomskikh <ktomskikh@driver.xyz>2018-10-09 14:13:59 +0800
committerKseniya Tomskikh <ktomskikh@driver.xyz>2018-10-09 14:13:59 +0800
commitf5d0b038457ed9d01687f0949e22e08a6b116066 (patch)
tree7cf495e9fb4605dc3cf987def23bd00629217411
parentde97eebf217f9e934decdb80bc840b9e1365a890 (diff)
downloaddriver-core-f5d0b038457ed9d01687f0949e22e08a6b116066.tar.gz
driver-core-f5d0b038457ed9d01687f0949e22e08a6b116066.tar.bz2
driver-core-f5d0b038457ed9d01687f0949e22e08a6b116066.zip
Added more tests
-rw-r--r--src/test/scala/xyz/driver/core/CoreTest.scala77
1 files changed, 77 insertions, 0 deletions
diff --git a/src/test/scala/xyz/driver/core/CoreTest.scala b/src/test/scala/xyz/driver/core/CoreTest.scala
index f448d24..1cd7a7c 100644
--- a/src/test/scala/xyz/driver/core/CoreTest.scala
+++ b/src/test/scala/xyz/driver/core/CoreTest.scala
@@ -1,6 +1,7 @@
package xyz.driver.core
import java.io.ByteArrayOutputStream
+import java.util.UUID
import org.mockito.Mockito._
import org.scalatest.mockito.MockitoSugar
@@ -64,6 +65,82 @@ class CoreTest extends FlatSpec with Matchers with MockitoSugar {
(xid: Id[X]) should be(zid: Id[Z])
}
+ "UuidId" should "have equality and ordering working correctly" in {
+ val uuidId1 = UuidId[String](UUID.fromString("ceec8358-cfa4-4e62-b601-1ba1f615f22f"))
+ val uuidId2 = UuidId[String](UUID.fromString("1e761cbe-a5e0-4570-a503-818d14a2b322"))
+ val uuidId3 = UuidId[String](UUID.fromString("326b2342-78b3-4ad4-8cbc-115e74019c39"))
+ val uuidId4 = UuidId[String](UUID.fromString("46e38513-2117-45d9-a5df-1d899052fbb6"))
+
+ (uuidId1 === UuidId[String](UUID.fromString("ceec8358-cfa4-4e62-b601-1ba1f615f22f"))) should be(true)
+ (uuidId1 === uuidId2) should be(false)
+ (uuidId2 === uuidId1) should be(false)
+
+ val ids = Seq(uuidId1, uuidId4, uuidId3, uuidId2)
+ val sorted = Seq(uuidId1, uuidId2, uuidId3, uuidId4)
+
+ ids.sorted should contain theSameElementsInOrderAs sorted
+ }
+
+ it should "have type-safe conversions" in {
+ final case class X(id: UuidId[X])
+ final case class Y(id: UuidId[Y])
+ final case class Z(id: UuidId[Z])
+
+ implicit val xy = UuidId.Mapper[X, Y]
+ implicit val yz = UuidId.Mapper[Y, Z]
+
+ // Test that implicit conversions work correctly
+ val x = X(UuidId(UUID.fromString("00000000-0000-0000-0000-00000000")))
+ val y = Y(x.id)
+ val z = Z(y.id)
+ val y2 = Y(z.id)
+ val x2 = X(y2.id)
+ (x2 === x) should be(true)
+ (y2 === y) should be(true)
+
+ // Test that type inferrence for explicit conversions work correctly
+ val yid = y.id
+ val xid = xy(yid)
+ val zid = yz(yid)
+ (xid: UuidId[X]) should be(zid: UuidId[Z])
+ }
+
+ "NumericId" should "have equality and ordering working correctly" in {
+
+ (NumericId[Long](1234213) === NumericId[Long](1234213)) should be(true)
+ (NumericId[Long](1234213) === NumericId[Long](213414)) should be(false)
+ (NumericId[Long](213414) === NumericId[Long](1234213)) should be(false)
+
+ val ids = Seq(NumericId[Long](4), NumericId[Long](3), NumericId[Long](2), NumericId[Long](1))
+ val sorted = Seq(NumericId[Long](1), NumericId[Long](2), NumericId[Long](3), NumericId[Long](4))
+
+ ids.sorted should contain theSameElementsInOrderAs sorted
+ }
+
+ it should "have type-safe conversions" in {
+ final case class X(id: NumericId[X])
+ final case class Y(id: NumericId[Y])
+ final case class Z(id: NumericId[Z])
+
+ implicit val xy = NumericId.Mapper[X, Y]
+ implicit val yz = NumericId.Mapper[Y, Z]
+
+ // Test that implicit conversions work correctly
+ val x = X(NumericId(0))
+ val y = Y(x.id)
+ val z = Z(y.id)
+ val y2 = Y(z.id)
+ val x2 = X(y2.id)
+ (x2 === x) should be(true)
+ (y2 === y) should be(true)
+
+ // Test that type inferrence for explicit conversions work correctly
+ val yid = y.id
+ val xid = xy(yid)
+ val zid = yz(yid)
+ (xid: NumericId[X]) should be(zid: NumericId[Z])
+ }
+
"Name" should "have equality and ordering working correctly" in {
(Name[String]("foo") === Name[String]("foo")) should be(true)