/* Ċ Ġ* ĠCopyright Ġ 2 0 0 0 - 2 0 1 9 ĠJetBrains Ġs . r . o . ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense Ġthat Ġcan Ġbe Ġfound Ġin Ġthe ĠLICENSE Ġfile . Ċ Ġ*/ Ċ Ċ package Ġorg . jetbrains . r . r interop Ċ Ċ import Ġcom . intellij . execution . process . Process OutputType Ċ import Ġcom . intellij . test Framework . Platform TestUtil Ċ import Ġjunit . framework . TestCase Ċ import Ġorg . jetbrains . concurrency . Async Promise Ċ import Ġorg . jetbrains . r . blocking Get And Dispatch Events Ċ Ċ class ĠR Debugger TestHelper ( r Interop : ĠR Interop ) Ġ{ ĊĠ Ġprivate Ġvar Ġpromise Ġ= ĠAsync Promise < Boolean >() ĊĊĠ Ġinit Ġ{ ĊĠĠĠ Ġr Interop . async Events Start Processing () ĊĠĠĠ Ġval Ġtext Promise Ġ= ĠAsync Promise < Unit >() ĊĠĠĠ Ġr Interop . add Async Events Listener ( object Ġ: ĠR Interop . Async Events Listener Ġ{ ĊĠĠĠĠĠ Ġoverride Ġfun Ġon Prompt ( isDebug : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġpromise . set Result ( isDebug ) ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġoverride Ġfun Ġon Text ( text : ĠString , Ġtype : ĠProcess OutputType ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( READY _ STR Ġin Ġtext ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġpromise Ġ= ĠAsync Promise < Boolean >() ĊĠĠĠĠĠĠĠĠĠ Ġtext Promise . set Result ( Unit ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}) ĊĠĠĠ Ġinvoke And Wait ( false ) Ġ{ ĊĠĠĠĠĠ Ġr Interop . repl Execute (" cat ('$ READY _ STR \\ n ') ") ĊĠĠĠĠĠ Ġtext Promise . blocking Get ( DEFAULT _ TIMEOUT ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġfun Ġ< R > Ġinvoke And Wait ( expected Debug : ĠBoolean ? Ġ= Ġnull , Ġf : Ġ() Ġ-> ĠR ): ĠR Ġ{ ĊĠĠĠ ĠPlatform TestUtil . dispatch All Events In Ide EventQueue () ĊĠĠĠ Ġval Ġresult Ġ= Ġf () ĊĠĠĠ Ġval Ġis Debug Ġ= Ġpromise . blocking Get And Dispatch Events ( DEFAULT _ TIMEOUT ) ĊĠĠĠ Ġif Ġ( expected Debug Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠ ĠTestCase . assertEquals ( expected Debug , Ġis Debug ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġpromise Ġ= ĠAsync Promise () ĊĠĠĠ Ġreturn Ġresult ĊĠ Ġ} ĊĊĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠ Ġprivate Ġconst Ġval ĠDEFAULT _ TIMEOUT Ġ= Ġ 3 0 0 0 ĊĠĠĠ Ġprivate Ġconst Ġval ĠREAD Y _ STR Ġ= Ġ"__ READY __ " ĊĠ Ġ} Ċ } Ċ