package Ġorg . carbon . objects . validation Ċ Ċ import Ġio . kot lint est . should Throw Ċ import Ġorg . carbon . objects . validation . evaluation . Evaluation Ċ import Ġorg . carbon . objects . validation . input . Illegal Max Input Ċ import Ġorg . carbon . objects . validation . input . Illegal Min Input Ċ import Ġorg . carbon . objects . validation . input . Illegal With In Input Ċ import Ġorg . carbon . objects . validation . input . Input Ċ import Ġorg . carbon . objects . validation . template . Expected Ċ import Ġorg . junit . jupiter . params . Parameterized Test Ċ import Ġorg . junit . jupiter . params . provider . Method Source Ċ import Ġkotlin . reflect . K Class Ċ Ċ /** Ċ Ġ* Ġ@ author ĠS oda Ġ 2 0 1 8 / 1 0 / 0 8 . Ċ Ġ*/ Ċ class ĠExpression Guard Test Ġ{ ĊĠĠĠ Ġclass ĠThrow Expected Ġ: ĠExpected < Throw Expected >() Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġself : ĠThrow Expected ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ= Ġthis ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġassert ( describe : ĠString , Ġeval Exp : Ġ() Ġ-> ĠEvaluation ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ------------------------------------------------ -- ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ$ describe ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ------------------------------------------------ -- ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpect Ġthrows ĠâĹ ı ï½ŀ * Ġ${ type . simple Name } ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Throw ( eval Exp ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġvar Ġassert Throw : Ġ( eval : Ġ() Ġ-> ĠEvaluation ) Ġ-> ĠUnit Ġ= Ġ{} ĊĠĠĠĠĠĠĠ Ġvar Ġtype : ĠK Class < *> Ġ= ĠException :: class ĊĊĠĠĠĠĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: ĠThrowable > Ġthrows (): ĠThrow Expected Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= ĠT :: class ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Throw Ġ= Ġ{ Ġit Ġ-> Ġshould Throw < T >( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Suppress (" unused ") ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġdata () Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcase ("[ il legal ] Ġschema Ġdefinition Ġuse Ġillegal Ġmin ")( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIllegal Min Input (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠThrow Expected (). throws < IllegalArgumentException > ()), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcase ("[ il legal ] Ġschema Ġdefinition Ġuse Ġillegal Ġmax ")( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIllegal Max Input (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠThrow Expected (). throws < IllegalArgumentException > ()), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcase ("[ il legal ] Ġschema Ġdefinition Ġuse Ġillegal Ġwithin ")( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIllegal With In Input (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠThrow Expected (). throws < IllegalArgumentException >()) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġcase : Ġ( describe : ĠString ) Ġ-> Ġ( input : ĠInput , Ġexpected : ĠExpected <* >) Ġ-> ĠArray < Any > Ġ= Ġ{ Ġdescribe Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġinput , Ġexpected Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( describe , Ġinput , Ġexpected ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Parameterized Test ( name Ġ= Ġ" Expression ĠGuard ĠTest [{ index }] Ġ{ 0 }") ĊĠĠĠ Ġ@ Method Source (" data ") ĊĠĠĠ Ġfun Ġvalidate ( describe : ĠString , Ġinput : ĠInput , Ġexpected : ĠExpected <* >) Ġ{ ĊĠĠĠĠĠĠĠ Ġexpected . assert ( describe , Ġinput :: try Validate ) ĊĠĠĠ Ġ} Ċ } Ċ