diff options
author | Jon Pretty <jon.pretty@propensive.com> | 2017-12-29 15:47:32 +0000 |
---|---|---|
committer | Jon Pretty <jon.pretty@propensive.com> | 2017-12-29 15:47:32 +0000 |
commit | 436c04954d6973aa60c59dc835bc3573b72b6bc2 (patch) | |
tree | 097d154d7787f548028e2cc02267bedaccc610e9 /tests/src/main | |
parent | e315da3704c39cd5f0760524b18b5839f363f423 (diff) | |
parent | 051042daf4569f48ff7062c70142df4fbd2e79b5 (diff) | |
download | magnolia-436c04954d6973aa60c59dc835bc3573b72b6bc2.tar.gz magnolia-436c04954d6973aa60c59dc835bc3573b72b6bc2.tar.bz2 magnolia-436c04954d6973aa60c59dc835bc3573b72b6bc2.zip |
Merge branch 'sirthias-md/rawconstruct'
Diffstat (limited to 'tests/src/main')
-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) |