diff --git a/src/test/scala/com/fasterxml/jackson/module/scala/ser/CaseClassSerializerTest.scala b/src/test/scala/com/fasterxml/jackson/module/scala/ser/CaseClassSerializerTest.scala index 6dc1d665..b056c7b4 100644 --- a/src/test/scala/com/fasterxml/jackson/module/scala/ser/CaseClassSerializerTest.scala +++ b/src/test/scala/com/fasterxml/jackson/module/scala/ser/CaseClassSerializerTest.scala @@ -62,8 +62,14 @@ case class PrivateDefaultFields( case class ClassWithUnitField(field: Unit, intField: Int) case class ClassWithOnlyUnitField(field: Unit) +object CaseClassSerializerTest { + case class BigDecimalHolder(bigDecimal: BigDecimal) +} + class CaseClassSerializerTest extends SerializerTest { + import CaseClassSerializerTest._ + case class NestedClass(field: String) def module = DefaultScalaModule @@ -207,4 +213,15 @@ class CaseClassSerializerTest extends SerializerTest { serialize(GeneratedDefaultArgumentClass()) shouldEqual "{}" } + it should "serialize BigDecimalHolder" in { + serialize(BigDecimalHolder(BigDecimal("123.456"))) shouldEqual """{"bigDecimal":123.456}""" + } + + it should "serialize BigDecimalHolder (JsonFormat.Shape.STRING)" in { + val mapper = newMapper + mapper.configOverride(classOf[BigDecimal]) + .setFormat(JsonFormat.Value.forShape(JsonFormat.Shape.STRING)) + serialize(BigDecimalHolder(BigDecimal("123.456")), mapper) shouldEqual """{"bigDecimal":"123.456"}""" + } + } diff --git a/src/test/scala/com/fasterxml/jackson/module/scala/ser/NumberSerializerTest.scala b/src/test/scala/com/fasterxml/jackson/module/scala/ser/NumberSerializerTest.scala new file mode 100644 index 00000000..d36d4639 --- /dev/null +++ b/src/test/scala/com/fasterxml/jackson/module/scala/ser/NumberSerializerTest.scala @@ -0,0 +1,33 @@ +package com.fasterxml.jackson.module.scala.ser + +import com.fasterxml.jackson.annotation.JsonFormat +import com.fasterxml.jackson.module.scala.{DefaultScalaModule, JacksonModule} + +class NumberSerializerTest extends SerializerTest { + + val module: JacksonModule = DefaultScalaModule + + "NumberSerializer" should "serialize BigDecimal as a number" in { + serialize(BigDecimal("123.456")) shouldBe "123.456" + } + + it should "serialize BigDecimal as a number (JsonFormat.Shape.STRING)" in { + val mapper = newMapper + mapper.configOverride(classOf[BigDecimal]) + .setFormat(JsonFormat.Value.forShape(JsonFormat.Shape.STRING)) + serialize(BigDecimal("123.456"), mapper) shouldBe """"123.456"""" + } + + it should "serialize BigInt as a number" in { + serialize(BigInt("12345678901234567890")) shouldBe "12345678901234567890" + } + + it should "serialize Int as a number" in { + serialize(42) shouldBe "42" + } + + it should "serialize Long as a number" in { + serialize(12345678901234L) shouldBe "12345678901234" + } + +}