aboutsummaryrefslogtreecommitdiff
path: root/tests/src/main/scala/tests.scala
diff options
context:
space:
mode:
authorJon Pretty <jon.pretty@propensive.com>2017-10-30 19:25:07 +0100
committerJon Pretty <jon.pretty@propensive.com>2017-10-30 19:25:07 +0100
commit7b776425828d27b3112ad5bddafaa7564c326536 (patch)
treebe041b460d9fced354fa6a7dabd03d7ced185d5a /tests/src/main/scala/tests.scala
parent86c66ba93b5dc15301ac305fa28e24952e232613 (diff)
downloadmagnolia-7b776425828d27b3112ad5bddafaa7564c326536.tar.gz
magnolia-7b776425828d27b3112ad5bddafaa7564c326536.tar.bz2
magnolia-7b776425828d27b3112ad5bddafaa7564c326536.zip
Support for case objects
Diffstat (limited to 'tests/src/main/scala/tests.scala')
-rw-r--r--tests/src/main/scala/tests.scala91
1 files changed, 91 insertions, 0 deletions
diff --git a/tests/src/main/scala/tests.scala b/tests/src/main/scala/tests.scala
new file mode 100644
index 0000000..6bfa1bd
--- /dev/null
+++ b/tests/src/main/scala/tests.scala
@@ -0,0 +1,91 @@
+package magnolia.tests
+
+import magnolia._
+import estrapade._
+import contextual.data.scalac._
+import contextual.data.fqt._
+import contextual.data.txt._
+
+import scala.util._
+
+object Tests extends TestApp {
+
+ def tests() = {
+ import examples._
+
+ test("construct a Show product instance") {
+ import examples._
+ Show.generic[Person].show(Person("John Smith", 34))
+ }.assert(_ == """Person(name=John Smith,age=34)""")
+
+ test("construct a Show coproduct instance") {
+ import examples._
+ Show.generic[Person].show(Person("John Smith", 34))
+ }.assert(_ == "Person(name=John Smith,age=34)")
+
+ Show.generic[Tree]
+
+ test("serialize a Branch") {
+ import magnolia.examples._
+ implicitly[Show[Branch]].show(Branch(Leaf("LHS"), Leaf("RHS")))
+ }.assert(_ == "Branch(left=Leaf(value=LHS),right=Leaf(value=RHS))")
+
+ test("test equality false") {
+ import examples._
+ Eq.generic[Entity].equal(Person("John Smith", 34), Person("", 0))
+ }.assert(_ == false)
+
+ test("test equality true") {
+ import examples._
+ Eq.generic[Entity].equal(Person("John Smith", 34), Person("John Smith", 34))
+ }.assert(_ == true)
+
+ test("test branch equality true") {
+ import examples._
+ Eq.generic[Tree].equal(Branch(Leaf("one"), Leaf("two")), Branch(Leaf("one"), Leaf("two")))
+ }.assert(_ == true)
+
+ test("construct a default value") {
+ Default.generic[Entity].default
+ }.assert(_ == (Company(""): Entity))
+
+ test("construction of Show instance for Leaf") {
+ scalac"""
+ import magnolia.examples._
+ implicitly[Show[Leaf]]
+ """
+ }.assert(_ == (Returns(fqt"magnolia.examples.Show[magnolia.examples.Leaf]"): Compilation))
+
+ test("construction of Show instance for Tree") {
+ scalac"""
+ import magnolia.examples._
+ implicitly[Show[Tree]]
+ """
+ }.assert(_ == (Returns(fqt"magnolia.examples.Show[magnolia.examples.Tree]"): Compilation))
+
+ test("serialize a Leaf") {
+ implicitly[Show[Leaf]].show(Leaf("testing"))
+ }.assert(_ == "Leaf(value=testing)")
+
+ test("serialize a Branch as a Tree") {
+ implicitly[Show[Tree]].show(Branch(Leaf("LHS"), Leaf("RHS")))
+ }.assert(_ == "Branch(left=Leaf(value=LHS),right=Leaf(value=RHS))")
+
+ test("show error stack") {
+ scalac"""
+ import magnolia.examples._
+ case class Alpha(integer: Double)
+ case class Beta(alpha: Alpha)
+ Show.generic[Beta]
+ """
+ }.assert(_ == (TypecheckError(txt"""magnolia: could not find typeclass for type Double
+ | in parameter 'integer' of product type Alpha
+ | in parameter 'alpha' of product type Beta
+ |"""): Compilation))
+
+ //test("construct a decoder") {
+ //Decoder.generic[Tree].decode("string")
+ //}.assert(_ == (Leaf("something"): Tree))
+
+ }
+}