package Ġno . nav . pens jon . bre v . template . dsl Ċ Ċ import Ġcom . nat pr y ce . ham k rest . assertion . assertThat Ċ import Ġcom . nat pr y ce . ham k rest . equalTo Ċ import Ġno . nav . pens jon . bre v . template .* Ċ import Ġno . nav . pens jon . bre v . template . base . P ens jon Lat ex Ċ import Ġno . nav . pens jon . bre v . template . dsl . expression .* Ċ import Ġorg . junit . jupiter . api .* Ċ Ċ class ĠShow If Test Ġ{ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` create Template Ġadds Ġshow If `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= ĠLetter Template ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" test ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= ĠlistOf ( n yn ors k T it tel ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbase Ġ= ĠP ens jon Lat ex , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġletter DataType Ġ= ĠSome Dto :: class , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlanguage Ġ= Ġlanguages ( Language . N yn ors k ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġletter Metadata Ġ= Ġtest Letter Metadata , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoutline Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠElement . Conditional ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpredicate Ġ= ĠExpression . From Scope ( Expression Scope < Some Dto , Ġ* >:: argument ). select ( Some Dto :: pens jon In nv il get ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow If Ġ= ĠlistOf ( new Text ( Language . N yn ors k Ġto Ġ" j adda ")), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Else Ġ= ĠlistOf ( new Text ( Language . N yn ors k Ġto Ġ" ne ida ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġcreate Template ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" test ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbase Ġ= ĠP ens jon Lat ex , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġletter DataType Ġ= ĠSome Dto :: class , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlanguages Ġ= Ġn yn ors k T it tel . languages , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġletter Metadata Ġ= Ġtest Letter Metadata , ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle . add ( n yn ors k T it tel ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoutline Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow If ( argument (). select ( Some Dto :: pens jon In nv il get )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext ( Language . N yn ors k Ġto Ġ" j adda ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġor Show Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext ( Language . N yn ors k Ġto Ġ" ne ida ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertThat ( expected , ĠequalTo ( actual )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` or Show If Ġadds Ġa Ġconditional Ġelement Ġas Ġelse `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexpr Scope Ġ= ĠExpression . From Scope ( Expression Scope < Some Dto , Ġ* >:: argument ) ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= ĠLetter Template ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" test ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= ĠlistOf ( n yn ors k T it tel ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbase Ġ= ĠP ens jon Lat ex , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġletter DataType Ġ= ĠSome Dto :: class , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlanguage Ġ= Ġlanguages ( Language . N yn ors k ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġletter Metadata Ġ= Ġtest Letter Metadata , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoutline Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠElement . Conditional ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpredicate Ġ= Ġexpr Scope . select ( Some Dto :: pens jon In nv il get ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow If Ġ= ĠlistOf ( new Text ( Language . N yn ors k Ġto Ġ" j adda ")), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Else Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠElement . Conditional ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpredicate Ġ= Ġexpr Scope . select ( Some Dto :: name ) ĠequalTo Ġ" Test ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow If Ġ= ĠlistOf ( new Text ( Language . N yn ors k Ġto Ġ" ne ida J oda ")), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Else Ġ= Ġempty List () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġcreate Template ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" test ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbase Ġ= ĠP ens jon Lat ex , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġletter DataType Ġ= ĠSome Dto :: class , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlanguages Ġ= Ġn yn ors k T it tel . languages , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġletter Metadata Ġ= Ġtest Letter Metadata , ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle . add ( n yn ors k T it tel ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoutline Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow If ( argument (). select ( Some Dto :: pens jon In nv il get )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext ( Language . N yn ors k Ġto Ġ" j adda ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. or Show If ( argument (). select ( Some Dto :: name ) ĠequalTo Ġ" Test ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext ( Language . N yn ors k Ġto Ġ" ne ida J oda ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertThat ( expected , ĠequalTo ( actual )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` final Ġor Show Ġn ests Ġas Ġshow Or Ġin Ġinner - most Ġconditional Ġelement `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexpr Scope Ġ= ĠExpression . From Scope ( Expression Scope < Some Dto , Ġ* >:: argument ) ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= ĠLetter Template ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" test ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= ĠlistOf ( n yn ors k T it tel ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbase Ġ= ĠP ens jon Lat ex , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġletter DataType Ġ= ĠSome Dto :: class , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlanguage Ġ= Ġlanguages ( Language . N yn ors k ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġletter Metadata Ġ= Ġtest Letter Metadata , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoutline Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠElement . Conditional ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpredicate Ġ= Ġexpr Scope . select ( Some Dto :: pens jon In nv il get ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow If Ġ= ĠlistOf ( new Text ( Language . N yn ors k Ġto Ġ" j adda ")), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Else Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠElement . Conditional ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpredicate Ġ= Ġexpr Scope . select ( Some Dto :: name ) ĠequalTo Ġ" Test ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow If Ġ= ĠlistOf ( new Text ( Language . N yn ors k Ġto Ġ" ne ida J oda ")), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Else Ġ= ĠlistOf ( new Text ( Language . N yn ors k Ġto Ġ" ne ida ")), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġcreate Template ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" test ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbase Ġ= ĠP ens jon Lat ex , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġletter DataType Ġ= ĠSome Dto :: class , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlanguages Ġ= Ġn yn ors k T it tel . languages , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġletter Metadata Ġ= Ġtest Letter Metadata , ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle . add ( n yn ors k T it tel ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoutline Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow If ( argument (). select ( Some Dto :: pens jon In nv il get )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext ( Language . N yn ors k Ġto Ġ" j adda ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. or Show If ( argument (). select ( Some Dto :: name ) ĠequalTo Ġ" Test ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext ( Language . N yn ors k Ġto Ġ" ne ida J oda ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġor Show Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext ( Language . N yn ors k Ġto Ġ" ne ida ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertThat ( expected , ĠequalTo ( actual )) ĊĠĠĠ Ġ} Ċ Ċ }