aboutsummaryrefslogtreecommitdiff
path: root/src/test
diff options
context:
space:
mode:
Diffstat (limited to 'src/test')
-rw-r--r--src/test/scala/CoproductTypeFormats.scala16
-rw-r--r--src/test/scala/FormatTests.scala2
-rw-r--r--src/test/scala/ProductTypeFormats.scala6
3 files changed, 17 insertions, 7 deletions
diff --git a/src/test/scala/CoproductTypeFormats.scala b/src/test/scala/CoproductTypeFormats.scala
index cdf0201..e20871c 100644
--- a/src/test/scala/CoproductTypeFormats.scala
+++ b/src/test/scala/CoproductTypeFormats.scala
@@ -28,12 +28,12 @@ class CoproductTypeFormats
"Nested parameter case class child" should behave like checkCoherence[Expr](
Plus(Value(42), One),
- """{"type":"Plus","lhs":{"type":"Value","x":42},"rhs":"One"}"""
+ """{"type":"Plus","lhs":{"type":"Value","x":42},"rhs":{"type":"One"}}"""
)
"Case object child" should behave like checkCoherence[Expr](
One,
- """"One""""
+ """{"type": "One"}"""
)
@gadt("kind")
@@ -45,13 +45,23 @@ class CoproductTypeFormats
"""{"kind":"If","type":"class"}"""
)
+ @gadt("""_`crazy type!`"""")
+ sealed abstract trait Crazy
+ case class CrazyType() extends Crazy
+
+ "GADT with special characters in type field" should behave like checkCoherence[
+ Crazy](
+ CrazyType(),
+ """{"_`crazy type!`\"": "CrazyType"}"""
+ )
+
sealed trait Enum
case object A extends Enum
case object B extends Enum
"Enum" should behave like checkCoherence[List[Enum]](
A :: B :: Nil,
- """["A", "B"]"""
+ """[{"type":"A"}, {"type":"B"}]"""
)
"Serializing as sealed trait an deserializing as child" should "work" in {
diff --git a/src/test/scala/FormatTests.scala b/src/test/scala/FormatTests.scala
index e29e49f..68a4765 100644
--- a/src/test/scala/FormatTests.scala
+++ b/src/test/scala/FormatTests.scala
@@ -5,7 +5,7 @@ import org.scalatest._
trait FormatTests { self: FlatSpec =>
- def checkCoherence[A: JsonFormat](a: A, expectedJson: String) = {
+ def checkCoherence[A: RootJsonFormat](a: A, expectedJson: String) = {
it should "serialize to the expected JSON value" in {
val expected: JsValue = expectedJson.parseJson
assert(a.toJson == expected)
diff --git a/src/test/scala/ProductTypeFormats.scala b/src/test/scala/ProductTypeFormats.scala
index 9755198..48f1bf1 100644
--- a/src/test/scala/ProductTypeFormats.scala
+++ b/src/test/scala/ProductTypeFormats.scala
@@ -31,16 +31,16 @@ class ProductTypeFormats
"Case object" should behave like checkCoherence(
D,
- """"D""""
+ "{}"
)
"Case object as parameter" should behave like checkCoherence(
E(D),
- """{"d":"D"}"""
+ """{"d":{}}"""
)
// custom format for F, that inverts the value of parameter x
- implicit val fFormat: JsonFormat[F] = new JsonFormat[F] {
+ implicit val fFormat: RootJsonFormat[F] = new RootJsonFormat[F] {
override def write(f: F): JsValue = JsObject("x" -> JsNumber(-f.x))
override def read(js: JsValue): F =
F(-js.asJsObject.fields("x").convertTo[Int])