/* Ċ Ġ* ĠCopyright Ġ 2 0 2 1 ĠMar cin ĠBu k ow ie ck i . Ċ Ġ* ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense Ġthat Ġcan Ġbe Ġfound Ġin Ġthe ĠLICENSE Ġfile . Ċ Ġ*/ Ċ Ċ package Ġio . vac uum . ins pe ctions . got est Ċ Ċ import Ġcom . go ide . psi . Go File Ċ import Ġcom . go ide . psi . Go Function Or Method Declaration Ċ import Ġcom . go ide . psi . impl . Go Element Factory Ċ import Ġcom . intellij . openapi . vfs . Virtual File Ċ import Ġcom . intellij . psi . Psi Manager Ċ Ċ /** Ċ Ġ* Ġ@ author ĠMar cin ĠBu k ow ie ck i Ċ Ġ*/ Ċ class ĠExisting UnitTest Creator ( ĊĠĠĠ Ġprivate Ġval Ġexisting File : ĠVirtual File , ĊĠĠĠ Ġprivate Ġval Ġsource File : ĠGo File , ĊĠĠĠ Ġprivate Ġval Ġunit Test FunctionName : ĠString Ċ ) Ġ: ĠUnit Test Creator Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġapply Test () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġproject Ġ= Ġsource File . project ĊĠĠĠĠĠĠĠ ĠPsi Manager . getInstance ( source File . project ). find File ( existing File )?. let Ġ{ Ġpsi File Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgo File Ġ= Ġpsi File Ġas ? ĠGo File Ġ?: Ġreturn ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġgo File . add ( Go Element Factory . create NewLine ( project , Ġ 2 )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġfunction Or Method Ġ= Ġfind Function Or Method ( go File , Ġunit Test FunctionName ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( function Or Method Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠpackageName Ġ= Ġsource File . packageName ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcreated Ġ= ĠGo Element Factory . create File FromText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproject , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Text ( packageName Ġ?: Ġreturn , Ġunit Test FunctionName ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( go File . packageName Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgo File . add ( Go Element Factory . create Package Clause ( project , ĠpackageName )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgo File . add ( Go Element Factory . create NewLine ( project )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfunction Or Method Ġ= Ġcreated . functions . first OrNull () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfunction Or Method ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġadded Function Ġ= Ġgo File . add After ( it , Ġgo File . last Child ) Ġas ĠGo Function Or Method Declaration ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfocus On Created Function ( project , Ġadded Function , Ġexisting File ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfind Function Or Method ( go File : ĠGo File , Ġname : ĠString ): ĠGo Function Or Method Declaration ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfound Function Ġ= Ġgo File . functions . first OrNull Ġ{ Ġfn Ġ-> Ġfn . name Ġ!= Ġnull Ġ&& Ġfn . name . equals ( name ) Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfound Function Ġ?: Ġgo File . methods . first OrNull Ġ{ Ġm Ġ-> Ġm . name Ġ!= Ġnull Ġ&& Ġm . name . equals ( name ) Ġ} ĊĠĠĠ Ġ} Ċ } Ċ