package Ġl abe lex tractor . method name Ċ Ċ import ĠKotlin Psi Required Test Ċ import Ġast miner . common . split To Sub tokens Ċ import Ġcom . intellij . openapi . application . Read Action Ċ import Ġcom . intellij . psi . util . Psi Tree Util Ċ import Ġl abe lex tractor . MethodName Label Extractor Ċ import Ġl abe lex tractor . MethodName Label Extractor . Companion . METHOD _ NAME Ċ import Ġorg . junit . Assert Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . junit . jupiter . params . Parameterized Test Ċ import Ġorg . junit . jupiter . params . provider . Value Source Ċ import Ġpsi . node Properties . token Ċ Ċ internal Ġclass ĠKotlin MethodName Label Extractor Test Ġ: ĠKotlin Psi Required Test (" Kotlin Methods ") Ġ{ ĊĊĠĠĠ Ġprivate Ġval ĠmethodName Label Extractor Ġ= ĠMethod Name Label Extractor () ĊĊĠĠĠ Ġ@ Parameterized Test ĊĠĠĠ Ġ@ Value Source ( strings Ġ= Ġ[ simple Method , Ġmethod With Recursion ]) ĊĠĠĠ Ġfun Ġ` test Ġkotlin Ġmethod Ġname Ġextraction `( methodName : ĠString ) Ġ= ĠRead Action . run < Exception > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpsi Root Ġ= Ġget Method ( methodName ) ĊĠĠĠĠĠĠĠ Ġval ĠmethodName Extract ed Ġ= ĠmethodName Label Extractor . handle Tree ( psi Root , Ġhandler ) ĊĠĠĠĠĠĠĠ Ġval ĠmethodName Normalized Ġ= Ġsplit To Sub tokens ( methodName ). join ToString ("| ") ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( methodName Normalized , ĠmethodName Extract ed ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` test Ġkotlin Ġno Ġrecursion Ġno Ġmask `() Ġ= ĠRead Action . run < Exception > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpsi Root Ġ= Ġget Method ( large Method ) ĊĠĠĠĠĠĠĠ ĠmethodName Label Extractor . extract Label ( psi Root , Ġhandler ) ĊĠĠĠĠĠĠĠ Ġval Ġhidden Nodes Ġ= ĠPsi Tree Util . collect Elements ( psi Root ) Ġ{ Ġit . token Ġ== ĠMETHOD _ NAME Ġ} ĊĠĠĠĠĠĠĠ Ġ// ĠSince Ġthere Ġis Ġno Ġrecursion Ġin Ġthe Ġfunction , Ġonly Ġthe Ġmethod Ġname Ġitself Ġshould Ġbe Ġmasked . ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( 1 , Ġhidden Nodes . size ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` test Ġkotlin Ġmethod Ġname Ġhiding `() Ġ= ĠRead Action . run < Exception > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpsi Root Ġ= Ġget Method ( method With Recursion ) ĊĠĠĠĠĠĠĠ Ġval ĠmethodName Normalized Ġ= Ġsplit To Sub tokens ( method With Recursion ). join ToString ("| ") ĊĠĠĠĠĠĠĠ ĠmethodName Label Extractor . extract Label ( psi Root , Ġhandler ) ĊĠĠĠĠĠĠĠ Ġval Ġhidden Nodes Ġ= ĠPsi Tree Util . collect Elements ( psi Root ) Ġ{ Ġit . token Ġ== ĠMETHOD _ NAME Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġnon Hidden Nodes Ġ= ĠPsi Tree Util . collect Elements ( psi Root ) Ġ{ Ġit . token Ġ== ĠmethodName Normalized Ġ} ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( 2 , Ġhidden Nodes . size ) ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( 1 , Ġnon Hidden Nodes . size ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` test Ġdot Ġcall Ġwith Ġsame Ġname Ġno Ġmask ing `() Ġ= ĠRead Action . run < Exception > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpsi Root Ġ= Ġget Method ( dot Call Method ) ĊĠĠĠĠĠĠĠ ĠmethodName Label Extractor . extract Label ( psi Root , Ġhandler ) ĊĠĠĠĠĠĠĠ Ġval Ġhidden Nodes Ġ= ĠPsi Tree Util . collect Elements ( psi Root ) Ġ{ Ġit . token Ġ== ĠMETHOD _ NAME Ġ} ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( 1 , Ġhidden Nodes . size ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval Ġsimple Method Ġ= Ġ" small Method " ĊĠĠĠĠĠĠĠ Ġconst Ġval Ġlarge Method Ġ= Ġ" large Method " ĊĠĠĠĠĠĠĠ Ġconst Ġval Ġmethod With Recursion Ġ= Ġ" recursive Method " ĊĠĠĠĠĠĠĠ Ġconst Ġval Ġdot Call Method Ġ= Ġ" size Of " ĊĠĠĠ Ġ} Ċ } Ċ