package Ġcom . shop runner . b ale en . kotlin Ċ Ċ import Ġcom . shop runner . b ale en . B ale en . describe As Ċ import Ġcom . shop runner . b ale en . types . StringType Ċ import Ġorg . assertj . core . api . Assertions . assertThat Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . junit . jupiter . api . Test Instance Ċ import Ġjava . io . String Writer Ċ Ċ @ Test Instance ( Test Instance . Lifecycle . PER _ CLASS ) Ċ internal Ġclass ĠData ClassGenerator With Aliases Test Ġ{ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` test Ġsimple Ġmodel Ġwith ĠString Type `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmodel Ġ= Ġ" Model ". describe As ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Space Ġ= Ġ" com . shop runner . b ale en . kotlin . test ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmarkdown Description Ġ= Ġ" Test ĠModel " ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" field 1 ". type ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= ĠString Type (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmarkdown Description Ġ= Ġ" Test Ġfield Ġ 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaliases Ġ= ĠarrayOf (" f 1 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" field 2 ". type ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= ĠString Type (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmarkdown Description Ġ= Ġ" Test Ġfield Ġ 2 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaliases Ġ= ĠarrayOf (" f 2 ", Ġ" key ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġexpected Data Class Str Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Ġcom . shop runner . b ale en . kotlin . test ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġcom . shop runner . b ale en .` annotation `. Alias ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġcom . shop runner . b ale en .` annotation `. Data Description ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġkotlin . String ĊĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠTest ĠModel ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Data Description ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġdata Ġclass ĠModel ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠTest Ġfield Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Alias (" f 1 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġval Ġfield 1 : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠTest Ġfield Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Alias ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" f 2 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" key " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġval Ġfield 2 : ĠString ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĊĠĠĠĠĠĠĠ Ġval Ġdata Class Specs Ġ= ĠData ClassGenerator . encode ( model ) ĊĠĠĠĠĠĠĠ Ġval ĠoutputStream Ġ= ĠString Writer () ĊĠĠĠĠĠĠĠ Ġdata Class Specs [ model ] !!. writeTo ( output Stream ) ĊĠĠĠĠĠĠĠ Ġval Ġoutput Str Ġ= ĠoutputStream . toString () ĊĊĠĠĠĠĠĠĠ ĠassertThat ( data Class Specs ). has Size ( 1 ) ĊĠĠĠĠĠĠĠ Ġ// ĠassertThat ( output Str ). isEqualTo Ign oring Whitespace ( expected Data Class Str ) ĊĠĠĠĠĠĠĠ ĠassertThat ( output Str ). isEqualTo ( expected Data Class Str ) ĊĠĠĠ Ġ} Ċ } Ċ