|
| 1 | +package com.fasterxml.jackson.module.scala.deser |
| 2 | + |
| 3 | +import com.fasterxml.jackson.module.scala.deser.AnyValDeserializerTest.DoubleAnyValHolder |
| 4 | +import com.fasterxml.jackson.module.scala.{DefaultScalaModule, JacksonModule} |
| 5 | + |
| 6 | +object AnyValDeserializerTest { |
| 7 | + case class DoubleAnyVal(underlying: Double) extends AnyVal |
| 8 | + case class DoubleAnyValHolder(value: DoubleAnyVal) |
| 9 | + |
| 10 | + case class BigIntAnyVal(underlying: BigInt) extends AnyVal |
| 11 | + case class BigIntAnyValHolder(value: BigIntAnyVal) |
| 12 | + case class BigIntOptionAnyValHolder(value: Option[BigIntAnyVal]) |
| 13 | +} |
| 14 | + |
| 15 | +class AnyValDeserializerTest extends DeserializerTest { |
| 16 | + import AnyValDeserializerTest._ |
| 17 | + |
| 18 | + lazy val module: JacksonModule = DefaultScalaModule |
| 19 | + |
| 20 | + behavior of "AnyVal" |
| 21 | + |
| 22 | + it should "deserialize an Double AnyVal" in { |
| 23 | + val mapper = newMapper |
| 24 | + val expected = DoubleAnyVal(42) |
| 25 | + mapper.readValue("""{"underlying":42.0}""", classOf[DoubleAnyVal]) shouldEqual expected |
| 26 | + mapper.readValue("""{"value":42.0}""", classOf[DoubleAnyValHolder]) shouldEqual DoubleAnyValHolder(expected) |
| 27 | + } |
| 28 | + |
| 29 | + it should "deserialize an BigInt AnyVal" in { |
| 30 | + val mapper = newMapper |
| 31 | + val expected = BigIntAnyVal(42) |
| 32 | + mapper.readValue("""{"underlying":42}""", classOf[BigIntAnyVal]) shouldEqual expected |
| 33 | + mapper.readValue("""{"value":42}""", classOf[BigIntAnyValHolder]) shouldEqual BigIntAnyValHolder(expected) |
| 34 | + //mapper.readValue("""{"value":{"underlying":42}}""", classOf[BigIntOptionAnyValHolder]) shouldEqual |
| 35 | + //BigIntOptionAnyValHolder(Some(expected)) |
| 36 | + } |
| 37 | +} |
0 commit comments