Skip to content

Commit

Permalink
update anyval tests
Browse files Browse the repository at this point in the history
  • Loading branch information
pjfanning committed Jul 23, 2024
1 parent 9222455 commit 6739dc4
Show file tree
Hide file tree
Showing 4 changed files with 85 additions and 2 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
package tools.jackson.module.scala.deser

import tools.jackson.module.scala.{DefaultScalaModule, JacksonModule}

import scala.util.Properties.versionNumberString

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)
if (!versionNumberString.startsWith("2.11")) {
// see https://github.com/FasterXML/jackson-module-scala/pull/675
mapper.readValue("""{"value":{"underlying":42}}""", classOf[BigIntOptionAnyValHolder]) shouldEqual
BigIntOptionAnyValHolder(Some(expected))
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package tools.jackson.module.scala.ser

import tools.jackson.module.scala.BaseFixture

import scala.util.Properties.versionNumberString

object AnyValSerializerTest {
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])
}

//see AnyVal2SerializerTest for cases that only work with Scala2 and Scala3.3 but not earlier versions of Scala3
class AnyValSerializerTest extends BaseFixture {
import AnyValSerializerTest._

behavior of "AnyVal"

it should "serialize an Double AnyVal" in { mapper =>
val value = DoubleAnyVal(42)
mapper.writeValueAsString(value) shouldBe """{"underlying":42.0}"""
mapper.writeValueAsString(DoubleAnyValHolder(value)) shouldBe """{"value":42.0}"""
}

it should "serialize an BigInt AnyVal" in { mapper =>
val value = BigIntAnyVal(42)
mapper.writeValueAsString(value) shouldBe """{"underlying":42}"""
mapper.writeValueAsString(BigIntAnyValHolder(value)) shouldBe """{"value":42}"""
if (!versionNumberString.startsWith("2.11")) {
// see https://github.com/FasterXML/jackson-module-scala/pull/675
mapper.writeValueAsString(BigIntOptionAnyValHolder(Some(value))) shouldBe """{"value":{"underlying":42}}"""
}
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,8 @@ class AnyValDeserializerTest extends DeserializerTest {
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))
// see https://github.com/FasterXML/jackson-module-scala/pull/675
// mapper.readValue("""{"value":{"underlying":42}}""", classOf[BigIntOptionAnyValHolder]) shouldEqual
// BigIntOptionAnyValHolder(Some(expected))
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ object AnyValSerializerTest {

case class BigIntAnyVal(underlying: BigInt) extends AnyVal
case class BigIntAnyValHolder(value: BigIntAnyVal)
case class BigIntOptionAnyValHolder(value: Option[BigIntAnyVal])
}

//see AnyVal2SerializerTest for cases that only work with Scala2 and Scala3.3 but not earlier versions of Scala3
Expand All @@ -26,6 +27,8 @@ class AnyValSerializerTest extends BaseFixture {
val value = BigIntAnyVal(42)
mapper.writeValueAsString(value) shouldBe """{"underlying":42}"""
mapper.writeValueAsString(BigIntAnyValHolder(value)) shouldBe """{"value":42}"""
// see https://github.com/FasterXML/jackson-module-scala/pull/675
// mapper.writeValueAsString(BigIntOptionAnyValHolder(Some(value))) shouldBe """{"value":{"underlying":42}}"""
}

}

0 comments on commit 6739dc4

Please sign in to comment.