diff options
author | Jon Pretty <jon.pretty@propensive.com> | 2017-12-28 12:01:25 +0000 |
---|---|---|
committer | Jon Pretty <jon.pretty@propensive.com> | 2017-12-28 12:01:25 +0000 |
commit | 038a0b1bf3c0f5db872bf1be289ff21f03cc6002 (patch) | |
tree | 949712e2583f76159cfaeb97b5c49e6583c7749b /tests/src/main/scala/tests.scala | |
parent | d4f51be01aba1ff32707a91d44f85272b7c2f562 (diff) | |
parent | 579cdb1281e7f3e16b13abc591c5e06b1aa32db5 (diff) | |
download | magnolia-038a0b1bf3c0f5db872bf1be289ff21f03cc6002.tar.gz magnolia-038a0b1bf3c0f5db872bf1be289ff21f03cc6002.tar.bz2 magnolia-038a0b1bf3c0f5db872bf1be289ff21f03cc6002.zip |
Merge branch 'md/rawconstruct' of https://github.com/sirthias/magnolia into sirthias-md/rawconstruct
Diffstat (limited to 'tests/src/main/scala/tests.scala')
-rw-r--r-- | tests/src/main/scala/tests.scala | 41 |
1 files changed, 40 insertions, 1 deletions
diff --git a/tests/src/main/scala/tests.scala b/tests/src/main/scala/tests.scala index e275dee..ca3cc71 100644 --- a/tests/src/main/scala/tests.scala +++ b/tests/src/main/scala/tests.scala @@ -1,13 +1,14 @@ package magnolia.tests import language.experimental.macros - import magnolia._ import estrapade._ import contextual.data.scalac._ import contextual.data.fqt._ import contextual.data.txt._ +import scala.util.control.NonFatal + sealed trait Tree[+T] case class Leaf[+L](value: L) extends Tree[L] case class Branch[+B](left: Tree[B], right: Tree[B]) extends Tree[B] @@ -237,6 +238,44 @@ object Tests extends TestApp { |""") } + test("patch a Person via a Patcher[Entity]") { + // these two implicits can be removed once https://github.com/propensive/magnolia/issues/58 is closed + implicit val stringPatcher = Patcher.forSingleValue[String] + implicit val intPatcher = Patcher.forSingleValue[Int] + + val person = Person("Bob", 42) + implicitly[Patcher[Entity]] + .patch(person, Seq(null, 21)) + }.assert(_ == Person("Bob", 21)) + + test("throw on an illegal patch attempt with field count mismatch") { + // these two implicits can be removed once https://github.com/propensive/magnolia/issues/58 is closed + implicit val stringPatcher = Patcher.forSingleValue[String] + implicit val intPatcher = Patcher.forSingleValue[Int] + + try { + val person = Person("Bob", 42) + implicitly[Patcher[Entity]] + .patch(person, Seq(null, 21, 'killer)) + } catch { + case NonFatal(e) => e.getMessage + } + }.assert(_ == "Cannot patch value `Person(Bob,42)`, expected 2 fields but got 3") + + test("throw on an illegal patch attempt with field type mismatch") { + // these two implicits can be removed once https://github.com/propensive/magnolia/issues/58 is closed + implicit val stringPatcher = Patcher.forSingleValue[String] + implicit val intPatcher = Patcher.forSingleValue[Int] + + try { + val person = Person("Bob", 42) + implicitly[Patcher[Entity]] + .patch(person, Seq(null, 'killer)) + } catch { + case NonFatal(e) => e.getMessage + } + }.assert(_ == "scala.Symbol cannot be cast to java.lang.Integer") + class ParentClass() { case class LocalClass(name: String) |