/* Ċ Ġ* ĠCopyright Ġ 2 0 1 8 ĠOut fox , ĠInc . Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġio . out fo xx . sw if tp o et . test Ċ Ċ import Ġio . out fo xx . sw if tp o et . Code Writer Ċ import Ġio . out fo xx . sw if tp o et . OPTIONAL Ċ import Ġio . out fo xx . sw if tp o et . STRING Ċ import Ġio . out fo xx . sw if tp o et . TypeName Ċ import Ġio . out fo xx . sw if tp o et . parameter ized By Ċ import Ġorg . hamcrest . Core Matchers . equalTo Ċ import Ġorg . hamcrest . Matcher Assert . assertThat Ċ import Ġorg . junit . jupiter . api . DisplayName Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġjava . io . String Writer Ċ Ċ @ DisplayName (" Swift . Optional Ġtests ") Ċ class ĠOptional Tests Ġ{ ĊĊĠ Ġ@ DisplayName (" Gener ates Ġconcise Ġsyntax Ġ( e . g . ĠType ?) ") ĊĠ Ġ@ Test ĊĠ Ġfun Ġtest Gen Con c ise () Ġ{ ĊĊĠĠĠ Ġval Ġtype Ġ= ĠOPTIONAL . parameter ized By ( STRING ) ĊĊĠĠĠ Ġval Ġout Ġ= ĠString Writer () ĊĠĠĠ Ġtype . emit ( Code Writer ( out )) ĊĊĠĠĠ ĠassertThat ( out . toString (), ĠequalTo (" Swift . String ? ")) ĊĠ Ġ} ĊĊĠ Ġ@ DisplayName (" Gener ates Ġconcise Ġsyntax Ġfor Ġmultiple Ġdepth s ") ĊĠ Ġ@ Test ĊĠ Ġfun Ġtest Gen Con c ise Multiple () Ġ{ ĊĊĠĠĠ Ġval Ġtype Ġ= ĠOPTIONAL . parameter ized By ( STRING ). wrap Optional () ĊĊĠĠĠ Ġval Ġout Ġ= ĠString Writer () ĊĠĠĠ Ġtype . emit ( Code Writer ( out )) ĊĊĠĠĠ ĠassertThat ( out . toString (), ĠequalTo (" Swift . String ?? ")) ĊĠ Ġ} ĊĊĠ Ġ@ DisplayName (" wrap Optional / unwrap Optional Ġadds Ġmultiple Ġlayers ") ĊĠ Ġ@ Test ĊĠ Ġfun Ġtest Wrap Optional () Ġ{ ĊĊĠĠĠ Ġval Ġopt String Ġ= ĠOPTIONAL . parameter ized By ( STRING ) ĊĠĠĠ Ġval Ġprocessed Type Ġ= Ġopt String . wrap Optional (). unwrap Optional () ĊĊĠĠĠ ĠassertThat ( processed Type , ĠequalTo < TypeName >( opt String )) ĊĠ Ġ} ĊĊĠ Ġ@ DisplayName (" make Optional Ġadds Ġmultiple Ġlayers ") ĊĠ Ġ@ Test ĊĠ Ġfun Ġtest Make Optional () Ġ{ ĊĊĠĠĠ Ġval Ġopt String Ġ= ĠOPTIONAL . parameter ized By ( STRING ) ĊĠĠĠ Ġval Ġprocessed Type Ġ= Ġopt String . make Optional () ĊĊĠĠĠ ĠassertThat ( processed Type , ĠequalTo < TypeName >( opt String )) ĊĠ Ġ} ĊĊĠ Ġ@ DisplayName (" make Non Optional Ġremoves Ġmultiple Ġlayers ") ĊĠ Ġ@ Test ĊĠ Ġfun Ġtest Make Non Optional () Ġ{ ĊĊĠĠĠ Ġval Ġopt Opt String Ġ= ĠOPTIONAL . parameter ized By ( STRING ). wrap Optional () ĊĠĠĠ Ġval Ġprocessed Type Ġ= Ġopt Opt String . make Non Optional () ĊĊĠĠĠ ĠassertThat ( processed Type , ĠequalTo < TypeName >( STRING )) ĊĠ Ġ} Ċ } Ċ