package Ġarrow . integrations . jackson . module Ċ Ċ import Ġarrow . core . Option Ċ import Ġarrow . syntax . function . pipe Ċ import Ġarrow . test . Unit Spec Ċ import Ġarrow . test . generators . option Ċ import Ġcom . fasterxml . jackson . databind . ObjectMapper Ċ import Ġcom . fasterxml . jackson . module . kotlin . jackson Type Ref Ċ import Ġcom . fasterxml . jackson . module . kotlin . register Kotlin Module Ċ import Ġio . kot lint est . assertions . json . should Match Json Ċ import Ġio . kot lint est . properties . Gen Ċ import Ġio . kot lint est . properties . assert All Ċ import Ġio . kot lint est . shouldBe Ċ Ċ class ĠOption Module Test Ġ: ĠUnit Spec () Ġ{ ĊĠ Ġprivate Ġval Ġmapper Ġ= ĠObjectMapper (). register Module ( Option Module ). register Kotlin Module () ĊĊĠ Ġinit Ġ{ ĊĠĠĠ Ġ" serializing ĠOption Ġshould Ġbe Ġthe Ġsame Ġas Ġserial izing Ġa Ġnullable Ġvalue " Ġ{ ĊĠĠĠĠĠ Ġassert All ( Gen . option ( Gen . one Of ( Gen . some Object (), ĠGen . int (), ĠGen . string (), ĠGen . bool ()))) Ġ{ Ġoption Ġ-> ĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġmapper . writeValue AsString ( option ) ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= Ġmapper . writeValue AsString ( option . or Null ()) ĊĊĠĠĠĠĠĠĠ Ġactual . should Match Json ( expected ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ" serializing ĠOption Ġand Ġthen Ġdeserialize Ġit Ġshould Ġbe Ġthe Ġsame Ġas Ġbefore Ġthe Ġde serialization " Ġ{ ĊĠĠĠĠĠ Ġassert All ( ĊĠĠĠĠĠĠĠ ĠGen . one Of ( ĊĠĠĠĠĠĠĠĠĠ ĠGen . option ( Gen . some Object ()). map Ġ{ Ġit Ġto Ġj ack son Type Ref < Option < Some Object >>() Ġ}, ĊĠĠĠĠĠĠĠĠĠ ĠGen . option ( Gen . int ()). map Ġ{ Ġit Ġto Ġj ack son Type Ref < Option < Int >>() Ġ}, ĊĠĠĠĠĠĠĠĠĠ ĠGen . option ( Gen . string ()). map Ġ{ Ġit Ġto Ġj ack son Type Ref < Option < String >>() Ġ}, ĊĠĠĠĠĠĠĠĠĠ ĠGen . option ( Gen . bool ()). map Ġ{ Ġit Ġto Ġj ack son Type Ref < Option < Boolean >>() Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠ Ġ) Ġ{ Ġ( option , Ġtype Reference ) Ġ-> ĊĠĠĠĠĠĠĠ Ġval Ġround Tri pped Ġ= Ġmapper . writeValue AsString ( option ). pipe Ġ{ Ġmapper . readValue < Option < *> >( it , Ġtype Reference ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġround Tri pped ĠshouldBe Ġoption ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ