// ĠCopyright Ġ 2 0 2 1 ĠCode ĠIntelligence ĠGmbH Ċ // Ċ // Ġ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 Ġcom . code _ int elligence . j az zer . instrument or Ċ Ċ import Ġcom . code _ int elligence . j az zer . api . Method Hook Ċ import Ġorg . junit . Test Ċ import Ġkotlin . test . assertEquals Ċ import Ġkotlin . test . assert Fails With Ċ Ċ class ĠHook Validation Test Ġ{ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Valid Hooks () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġhooks Ġ= ĠHooks . load Hooks ( set Of ( Valid Hook Mocks :: class . java . name )). first (). hooks ĊĠĠĠĠĠĠĠ ĠassertEquals ( 6 , Ġhooks . size ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Invalid Hooks () Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( method Ġin ĠInvalid Hook Mocks :: class . java . methods ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( method . is Annotation Present ( Method Hook :: class . java )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert Fails With < IllegalArgumentException >(" Expected Ġ${ method . name } Ġto Ġbe Ġan Ġinvalid Ġhook ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmethod Hook Ġ= Ġmethod . declared Annotations . first () Ġas ĠMethod Hook ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHook . create And Verify Hook ( method , Ġmethod Hook , Ġmethod Hook . target ClassName ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ