diff options
Diffstat (limited to 'shared/src/test')
-rw-r--r-- | shared/src/test/scala/OptionFieldTests.scala | 53 | ||||
-rw-r--r-- | shared/src/test/scala/ProductTypeFormatTests.scala | 17 |
2 files changed, 53 insertions, 17 deletions
diff --git a/shared/src/test/scala/OptionFieldTests.scala b/shared/src/test/scala/OptionFieldTests.scala new file mode 100644 index 0000000..8cabf25 --- /dev/null +++ b/shared/src/test/scala/OptionFieldTests.scala @@ -0,0 +1,53 @@ +package spray.json + +import org.scalatest._ + +class OptionFieldTests + extends FlatSpec + with FormatTests { + + case class Opt(x: Option[Int]) + + object HideNull extends DerivedJsonProtocol { + override def printNull = false + implicit val optFmt = jsonFormat[Opt] + } + + object ShowNull extends DerivedJsonProtocol { + override def printNull = true + implicit val optFmt = jsonFormat[Opt] + } + + + "Option fields with some value" should behave like checkRoundtrip( + Opt(Some(2)), + """{"x":2}""" + )(HideNull.optFmt) + + "Option fields with some value (show null)" should behave like checkRoundtrip( + Opt(Some(2)), + """{"x":2}""" + )(ShowNull.optFmt) + + "Option fields with null value" should behave like checkRoundtrip( + Opt(None), + """{}""" + )(HideNull.optFmt) + + "Option fields with null value (show null)" should behave like checkRoundtrip( + Opt(None), + """{"x":null}""" + )(ShowNull.optFmt) + + "Option fields with undefined value" should "deserialize" in { + import HideNull._ + assert("{}".parseJson.convertTo[Opt] == Opt(None)) + } + + "Option fields with undefined value (show null)" should "deserialize" in { + import ShowNull._ + assert("{}".parseJson.convertTo[Opt] == Opt(None)) + } + +} + diff --git a/shared/src/test/scala/ProductTypeFormatTests.scala b/shared/src/test/scala/ProductTypeFormatTests.scala index 4c979c0..a869ac5 100644 --- a/shared/src/test/scala/ProductTypeFormatTests.scala +++ b/shared/src/test/scala/ProductTypeFormatTests.scala @@ -73,23 +73,6 @@ class ProductTypeFormatTests """{"h": {"x":true}}""" ) - case class Opt(x: Option[Int]) - implicit val optFmt = jsonFormat[Opt] - - "Option fields with some value" should behave like checkRoundtrip( - Opt(Some(2)), - """{"x":2}""" - ) - - "Option fields with null value" should behave like checkRoundtrip( - Opt(None), - """{"x":null}""" - ) - - "Option fields with undefined value" should "deserialize" in { - assert("{}".parseJson.convertTo[Opt] == Opt(None)) - } - case class Typed[T](t: T) implicit def typed[T: JsonFormat] = jsonFormat[Typed[T]] |