diff --git a/src/test/scala/com/fasterxml/jackson/module/scala/deser/AnyValDeserializerTest.scala b/src/test/scala/com/fasterxml/jackson/module/scala/deser/AnyValDeserializerTest.scala new file mode 100644 index 00000000..35a883e5 --- /dev/null +++ b/src/test/scala/com/fasterxml/jackson/module/scala/deser/AnyValDeserializerTest.scala @@ -0,0 +1,37 @@ +package com.fasterxml.jackson.module.scala.deser + +import com.fasterxml.jackson.module.scala.deser.AnyValDeserializerTest.DoubleAnyValHolder +import com.fasterxml.jackson.module.scala.{DefaultScalaModule, JacksonModule} + +object AnyValDeserializerTest { + case class DoubleAnyVal(underlying: Double) extends AnyVal + case class DoubleAnyValHolder(value: DoubleAnyVal) + + case class BigIntAnyVal(underlying: BigInt) extends AnyVal + case class BigIntAnyValHolder(value: BigIntAnyVal) + case class BigIntOptionAnyValHolder(value: Option[BigIntAnyVal]) +} + +class AnyValDeserializerTest extends DeserializerTest { + import AnyValDeserializerTest._ + + lazy val module: JacksonModule = DefaultScalaModule + + behavior of "AnyVal" + + it should "deserialize an Double AnyVal" in { + val mapper = newMapper + val expected = DoubleAnyVal(42) + mapper.readValue("""{"underlying":42.0}""", classOf[DoubleAnyVal]) shouldEqual expected + mapper.readValue("""{"value":42.0}""", classOf[DoubleAnyValHolder]) shouldEqual DoubleAnyValHolder(expected) + } + + it should "deserialize an BigInt AnyVal" in { + val mapper = newMapper + val expected = BigIntAnyVal(42) + mapper.readValue("""{"underlying":42}""", classOf[BigIntAnyVal]) shouldEqual expected + mapper.readValue("""{"value":42}""", classOf[BigIntAnyValHolder]) shouldEqual BigIntAnyValHolder(expected) + //mapper.readValue("""{"value":{"underlying":42}}""", classOf[BigIntOptionAnyValHolder]) shouldEqual + //BigIntOptionAnyValHolder(Some(expected)) + } +}