/* Ċ Ġ* ĠCopyright Ġ 2 0 1 0 - 2 0 1 9 ĠJetBrains Ġs . r . o . Ġand ĠKotlin ĠProgramming ĠLanguage Ġcontributors . Ċ Ġ* ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense Ġthat Ġcan Ġbe Ġfound Ġin Ġthe Ġlicense / LICENSE . txt Ġfile . Ċ Ġ*/ Ċ Ċ package Ġorg . jetbrains . kotlin . idea . parameter Info Ċ Ċ import Ġcom . intellij . code Insight . hint . Show Parameter Info Context Ċ import Ġcom . intellij . code Insight . hint . Show Parameter Info Handler Ċ import Ġcom . intellij . openapi . util . io . File Util Ċ import Ġcom . intellij . psi . Psi Document Manager Ċ import Ġcom . intellij . psi . Psi Element Ċ import Ġcom . intellij . psi . Psi WhiteSpace Ċ import Ġcom . intellij . test Framework . Light Project Descriptor Ċ import Ġcom . intellij . test Framework . fixtures . Light Code Insight Fixture TestCase Ċ import Ġcom . intellij . util . Path Util Ċ import Ġorg . jetbrains . kotlin . idea . Kotlin Language Ċ import Ġorg . jetbrains . kotlin . idea . test . Sdk And Mock Library Project Descriptor Ċ import Ġorg . jetbrains . kotlin . idea . test . Plugin TestCase Base Ċ import Ġorg . jetbrains . kotlin . idea . test . Project Descriptor With Std lib Sources Ċ import Ġorg . jetbrains . kotlin . lexer . Kt Tokens Ċ import Ġorg . jetbrains . kotlin . psi . Kt File Ċ import Ġorg . jetbrains . kotlin . psi . psi Util . all Children Ċ import Ġorg . jetbrains . kotlin . test . In Text Directives Utils Ċ import Ġorg . jetbrains . kotlin . test . Kotlin TestUtils Ċ import Ġorg . junit . Assert Ċ import Ġjava . io . File Ċ Ċ abstract Ġclass ĠAbstract Parameter Info Test Ġ: ĠLight Code Insight Fixture TestCase () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġget Project Descriptor (): ĠLight Project Descriptor Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġroot Ġ= ĠKotlin TestUtils . get Tests Root ( this :: class . java ) ĊĠĠĠĠĠĠĠ Ġif Ġ( root . contains (" Lib ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠS dk And Mock Library Project Descriptor ("$ root / shared Lib ", Ġtrue , Ġtrue , Ġfalse , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠProject Descriptor With Std lib Sources . INSTANCE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . setUp () ĊĠĠĠĠĠĠĠ Ġmy Fixture . testData Path Ġ= ĠPlugin TestCase Base . get TestData Path Base () Ġ+ Ġ"/ parameter Info " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġfun Ġdo Test ( fileName : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġprefix Ġ= ĠFile Util . getName Without Extension ( Path Util . get FileName ( fileName )) ĊĠĠĠĠĠĠĠ Ġval Ġmain File Ġ= ĠFile ( File Util . to System Dependent Name ( fileName )) ĊĠĠĠĠĠĠĠ Ġmain File . parent File ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. list Files Ġ{ Ġ_, Ġname Ġ-> Ġname . startsWith ("$ prefix .") Ġ&& Ġname Ġ!= Ġmain File . name Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. forEach Ġ{ Ġmy Fixture . configure By File ( File Util . to System In dependent Name ( it . path )) Ġ} ĊĊĠĠĠĠĠĠĠ Ġmy Fixture . configure By File ( fileName ) ĊĊĠĠĠĠĠĠĠ Ġval Ġfile Ġ= Ġmy Fixture . file Ġas ĠK t File ĊĠĠĠĠĠĠĠ Ġval Ġlast Child Ġ= Ġfile . all Children . filter Ġ{ Ġit Ġ! is ĠPsi WhiteSpace Ġ}. last () ĊĠĠĠĠĠĠĠ Ġval Ġexpected Result Text Ġ= Ġwhen Ġ( last Child . node . elementType ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠK t Tokens . BLOCK _ COMMENT Ġ-> Ġlast Child . text . substring ( 2 , Ġlast Child . text . length Ġ- Ġ 2 ). trim () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠK t Tokens . EOL _ COMMENT Ġ-> Ġlast Child . text . substring ( 2 ). trim () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġerror (" Unexpected Ġlast Ġfile Ġchild ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġcontext Ġ= ĠShow Parameter Info Context ( editor , Ġproject , Ġfile , Ġeditor . caret Model . offset , Ġ- 1 , Ġtrue ) ĊĊĠĠĠĠĠĠĠ Ġval Ġhandlers Ġ= ĠShow Parameter Info Handler . get Handlers ( project , ĠKotlin Language . INSTANCE ) !! ĊĠĠĠĠĠĠĠ Ġval Ġhandler Ġ= Ġhandlers . first OrNull Ġ{ Ġit . findElement For Parameter Info ( context ) Ġ!= Ġnull Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġerror (" Could Ġnot Ġfind Ġparameter Ġinfo Ġhandler ") ĊĊĠĠĠĠĠĠĠ Ġval Ġmock Create Parameter Info Context Ġ= ĠMock Create Parameter Info Context ( file , Ġmy Fixture ) ĊĠĠĠĠĠĠĠ Ġval Ġparameter Owner Ġ= Ġhandler . findElement For Parameter Info ( mock Create Parameter Info Context ) Ġas ĠPsi Element ĊĊĠĠĠĠĠĠĠ Ġval Ġtext To Type Ġ= ĠIn Text Directives Utils . find String With Prefixes ( file . text , Ġ"// ĠTYPE :") ĊĠĠĠĠĠĠĠ Ġif Ġ( text To Type Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmy Fixture . type ( text To Type ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPsi Document Manager . getInstance ( project ). commit All Documents () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// to Ġupdate Ġcurrent Ġparameter Ġindex ĊĠĠĠĠĠĠĠ Ġval Ġupdate Context Ġ= ĠMock Update Parameter Info Context ( file , Ġmy Fixture ) ĊĠĠĠĠĠĠĠ Ġval Ġelement For Updating Ġ= Ġhandler . findElement For Updating Parameter Info ( update Context ) ĊĠĠĠĠĠĠĠ Ġif Ġ( element For Updating Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . update Parameter Info ( element For Updating , Ġupdate Context ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġparameter Info UI Context Ġ= ĠMock Parameter Info UI Context ( parameter Owner , Ġupdate Context . current Parameter ) ĊĊĠĠĠĠĠĠĠ Ġmock Create Parameter Info Context . items To Show ?. forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . update UI ( it , Ġparameter Info UI Context ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( expected Result Text , Ġparameter Info UI Context . result Text ) ĊĠĠĠ Ġ} Ċ } Ċ