diff options
author | Jon Pretty <jon.pretty@propensive.com> | 2017-11-30 19:47:19 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-11-30 19:47:19 +0100 |
commit | d4bd8d7c5605d1889be5c82ff475cfb53c9deed9 (patch) | |
tree | a8f9ae506a8cdf675949c4f0716ad45aec66b74b /tests/src | |
parent | d8fb2f5ca2edc1a34ed7831f06d5eca08ba4989c (diff) | |
parent | d88b15e99e2727558bb901fcc08398862f633c11 (diff) | |
download | magnolia-d4bd8d7c5605d1889be5c82ff475cfb53c9deed9.tar.gz magnolia-d4bd8d7c5605d1889be5c82ff475cfb53c9deed9.tar.bz2 magnolia-d4bd8d7c5605d1889be5c82ff475cfb53c9deed9.zip |
Merge branch 'master' into existentials
Diffstat (limited to 'tests/src')
-rw-r--r-- | tests/src/main/scala/tests.scala | 34 |
1 files changed, 31 insertions, 3 deletions
diff --git a/tests/src/main/scala/tests.scala b/tests/src/main/scala/tests.scala index bc33969..df4dfd6 100644 --- a/tests/src/main/scala/tests.scala +++ b/tests/src/main/scala/tests.scala @@ -1,13 +1,13 @@ 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._ - 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] @@ -55,9 +55,14 @@ sealed trait Box[+A] case class SimpleBox[+A](value: A) extends Box[A] case class LabelledBox[+A, L <: String](value: A, var label: L) extends Box[A] +case class Account(id: String, emails: String*) + +case class Portfolio(companies: Company*) + + object Tests extends TestApp { - def tests() = for (i <- 1 to 1000) { + def tests() = for (i <- 1 to 1) { import examples._ test("construct a Show product instance with alternative apply functions") { @@ -210,6 +215,7 @@ object Tests extends TestApp { Show.gen[Length].show(new Length(100)) }.assert(_ == "100") + // Corrupt being covariant in L <: Seq[Company] enables the derivation for Corrupt[String, _] test("show a Politician with covariant lobby") { Show.gen[Politician[String]].show(Corrupt("wall", Seq(Company("Alice Inc")))) @@ -224,5 +230,27 @@ object Tests extends TestApp { | in coproduct type magnolia.tests.Box[Int] |""") } + + test("show an Account") { + Show.gen[Account].show(Account("john_doe", "john.doe@yahoo.com", "john.doe@gmail.com")) + }.assert(_ == "Account(id=john_doe,emails=[john.doe@yahoo.com,john.doe@gmail.com])") + + test("construct a default Account") { + Default.gen[Account].default + }.assert(_ == Account("")) + + test("show a Portfolio of Companies") { + Show.gen[Portfolio].show(Portfolio(Company("Alice Inc"), Company("Bob & Co"))) + }.assert(_ == "Portfolio(companies=[Company(name=Alice Inc),Company(name=Bob & Co)])") + + test("sealed trait typeName should be complete and unchanged") { + TypeName.gen[Color].name + }.assert(_ == "magnolia.tests.Color") + + test("case class typeName should be complete and unchanged") { + implicit val stringTypeName: TypeName[String] = new TypeName[String] { def name = "" } + TypeName.gen[Fruit].name + }.assert(_ == "magnolia.tests.Fruit") + () } } |