/* Ċ Ġ* Ġ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 . de compiler . text Builder Ċ Ċ import Ġcom . intellij . openapi . module . Module Ċ import Ġcom . intellij . openapi . roots . Library Order Entry Ċ import Ġcom . intellij . openapi . roots . Module Root Manager Ċ import Ġcom . intellij . openapi . roots . Order Root Type Ċ import Ġcom . intellij . openapi . vfs . Virtual File Ċ import Ġcom . intellij . psi . Psi File Ċ import Ġcom . intellij . util . indexing . FileContent Impl Ċ import Ġcom . intellij . util . io . exists Ċ import Ġcom . intellij . util . io . read Text Ċ import Ġorg . jetbrains . kotlin . idea . de compiler . class File . Kotlin Cls Stub Builder Ċ import Ġorg . jetbrains . kotlin . idea . de compiler . class File . Kt Cls File Ċ import Ġorg . jetbrains . kotlin . idea . de compiler . stub Builder . serialize ToString Ċ import Ġorg . jetbrains . kotlin . psi . Kt Psi Factory Ċ import Ġorg . jetbrains . kotlin . psi . stubs . elements . Kt File Stub Builder Ċ import Ġorg . junit . Assert Ċ import Ġjava . nio . file . Paths Ċ import Ġkotlin . test . assertTrue Ċ Ċ abstract Ġclass ĠAbstract De compiled Text Test ( base Directory : ĠString ) Ġ: ĠAbstract De compiled Text Base Test ( base Directory ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval ĠCUSTOM _ PACKAGE _ FILE Ġ= Ġ" package . txt " ĊĊĠĠĠ Ġoverride Ġfun ĠfileName (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtest Name Ġ= Ġget Test Name ( false ) ĊĠĠĠĠĠĠĠ Ġreturn Ġ"$ test Name /$ test Name . kt " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetFile To De compile (): ĠVirtual File Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠclassName Ġ= Ġget Test Name ( false ) ĊĊĠĠĠĠĠĠĠ Ġval Ġcustom Package File Ġ= ĠPaths . get ( mock Sources Base . absolute Path , ĠclassName , ĠCUSTOM _ PACKAGE _ FILE ) ĊĠĠĠĠĠĠĠ Ġval Ġtest File Package Ġ= Ġcustom Package File . take If Ġ{ Ġit . exists () Ġ} ?. read Text ()?. trim End () Ġ?: ĠTEST _ PACKAGE ĊĊĠĠĠĠĠĠĠ Ġreturn ĠgetClass File ( test File Package , ĠclassName , Ġmodule !! ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcheck Stub Consistency ( file : ĠVirtual File , Ġde compiled Text : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfile With De compiled Text Ġ= ĠK t Psi Factory ( project ). create File ( de compiled Text ) ĊĠĠĠĠĠĠĠ Ġval Ġstub Tree From De compiled Text Ġ= ĠK t File Stub Builder (). build Stub Tree ( file With De compiled Text ) ĊĠĠĠĠĠĠĠ Ġval Ġexpected Text Ġ= Ġstub Tree From De compiled Text . serialize ToString () ĊĊĠĠĠĠĠĠĠ Ġval Ġfile Stub Ġ= ĠKotlin Cls Stub Builder (). build File Stub ( FileContent Impl . create By File ( file )) !! ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( expected Text , Ġfile Stub . serialize ToString ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcheck Psi File ( psi File : ĠPsi File ) Ġ= ĊĠĠĠĠĠĠĠ ĠassertTrue ( psi File Ġis ĠK t Cls File , Ġ" Expecting Ġde compiled Ġkotlin Ġfile , Ġwas : Ġ" Ġ+ Ġpsi File :: class . java ) ĊĊĠĠĠ Ġoverride Ġfun Ġtext ToCheck ( psi File : ĠPsi File ) Ġ= Ġpsi File . text Ċ } Ċ Ċ abstract Ġclass ĠAbstract Common De compiled Text Test Ġ: ĠAbstract De compiled Text Test ("/ de compiler / de compiled Text ") Ċ Ċ abstract Ġclass ĠAbstract Jvm De compiled Text Test Ġ: ĠAbstract De compiled Text Test ("/ de compiler / de compiled Text Jvm ") Ċ Ċ fun Ġfind Test Library Root ( module : ĠModule ): ĠVirtual File ? Ġ{ ĊĠĠĠ Ġfor Ġ( order Entry Ġin ĠModule Root Manager . getInstance ( module ). order Entries ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( order Entry Ġis ĠLibrary Order Entry ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġorder Entry . get Files ( Order Root Type . CLASSES )[ 0 ] ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġnull Ċ } Ċ Ċ fun ĠgetClass File ( ĊĠĠĠ ĠpackageName : ĠString , ĊĠĠĠ ĠclassName : ĠString , ĊĠĠĠ Ġmodule : ĠModule Ċ ): ĠVirtual File Ġ{ ĊĠĠĠ Ġval Ġroot Ġ= Ġfind Test Library Root ( module ) !! ĊĠĠĠ Ġval Ġpackage Dir Ġ= Ġroot . find File By RelativePath ( packageName . replace (".", Ġ"/ ")) !! ĊĠĠĠ Ġreturn Ġpackage Dir . find Child ("$ className . class ") !! Ċ }