aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorJon Pretty <jon.pretty@propensive.com>2017-11-30 19:47:19 +0100
committerGitHub <noreply@github.com>2017-11-30 19:47:19 +0100
commitd4bd8d7c5605d1889be5c82ff475cfb53c9deed9 (patch)
treea8f9ae506a8cdf675949c4f0716ad45aec66b74b /tests
parentd8fb2f5ca2edc1a34ed7831f06d5eca08ba4989c (diff)
parentd88b15e99e2727558bb901fcc08398862f633c11 (diff)
downloadmagnolia-d4bd8d7c5605d1889be5c82ff475cfb53c9deed9.tar.gz
magnolia-d4bd8d7c5605d1889be5c82ff475cfb53c9deed9.tar.bz2
magnolia-d4bd8d7c5605d1889be5c82ff475cfb53c9deed9.zip
Merge branch 'master' into existentials
Diffstat (limited to 'tests')
-rw-r--r--tests/src/main/scala/tests.scala34
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")
+ ()
}
}