package Ġcom . iz et tle . w rench . service Ċ Ċ import Ġcom . iz et tle . w rench . service . helper . Inv ok ator Ċ import Ġcom . iz et tle . w rench . service . helper . Inv ok ator . Inv ok ation Ċ import Ġcom . iz et tle . w rench . service . helper . K Test Interface Ċ import Ġorg . junit . Assert . assertEquals Ċ import Ġorg . junit . Assert . fail Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Test Ċ import Ġjava . util .* Ċ Ċ class ĠK Value Processor Test Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġprocessor : ĠValue Processor ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠ Ġprocessor Ġ= ĠValue Processor () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ( expected Ġ= ĠNullPointerException :: class ) ĊĠĠĠ Ġfun ĠgetValue _ Null Method _ Should Throws () Ġ{ ĊĠĠĠĠĠĠĠ Ġprocessor . getValue ( null , ĠarrayOf ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun ĠgetValue _ Missing Annotation _ Should Throw () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinvok ations Ġ= ĠArrays . asList ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInv ok ator . invoke ( K Test Interface :: class . java ) Ġ{ Ġi Ġ-> Ġi . int ReturnType Missing DefaultValue Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInv ok ator . invoke ( K Test Interface :: class . java ) Ġ{ Ġi Ġ-> Ġi . string ReturnType Missing DefaultValue Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInv ok ator . invoke ( K Test Interface :: class . java ) Ġ{ Ġi Ġ-> Ġi . boolean ReturnType Missing DefaultValue Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( inv ok ation Ġin Ġinvok ations ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprocessor . getValue ( inv ok ation . method , Ġinvok ation . args ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfail ( inv ok ation . method . name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIllegalArgumentException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun ĠgetValue _ Present Annotation On Method _ Should ReturnValue () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinvok ations Ġ= ĠHashMap < Inv ok ation , ĠAny >() ĊĠĠĠĠĠĠĠ Ġinvok ations [ Inv ok ator . invoke ( K Test Interface :: class . java ) Ġ{ Ġi Ġ-> Ġi . int ReturnType Ġ}] Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġinvok ations [ Inv ok ator . invoke ( K Test Interface :: class . java ) Ġ{ Ġi Ġ-> Ġi . string ReturnType Ġ}] Ġ= Ġ" getString ReturnType " ĊĠĠĠĠĠĠĠ Ġinvok ations [ Inv ok ator . invoke ( K Test Interface :: class . java ) Ġ{ Ġi Ġ-> Ġi . boolean ReturnType Ġ}] Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠ Ġfor Ġ(( inv ok ation , Ġexpected ) Ġin Ġinvok ations ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ` object ` Ġ= Ġprocessor . getValue ( inv ok ation . method , Ġinvok ation . args ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( expected , Ġ` object `) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun ĠgetValue _ Present Annotation On Method _ Null Args _ Should ReturnValue () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinvok ations Ġ= ĠHashMap < Inv ok ation , ĠAny >() ĊĠĠĠĠĠĠĠ Ġinvok ations [ Inv ok ator . invoke ( K Test Interface :: class . java ) Ġ{ Ġi Ġ-> Ġi . int ReturnType Ġ}] Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġinvok ations [ Inv ok ator . invoke ( K Test Interface :: class . java ) Ġ{ Ġi Ġ-> Ġi . string ReturnType Ġ}] Ġ= Ġ" getString ReturnType " ĊĠĠĠĠĠĠĠ Ġinvok ations [ Inv ok ator . invoke ( K Test Interface :: class . java ) Ġ{ Ġi Ġ-> Ġi . boolean ReturnType Ġ}] Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠ Ġfor Ġ(( inv ok ation , Ġexpected ) Ġin Ġinvok ations ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ` object ` Ġ= Ġprocessor . getValue ( inv ok ation . method , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( expected , Ġ` object `) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }