/* Ċ Ġ* ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠMIT Ġlicense Ġthat Ġcan Ġbe Ċ Ġ* Ġfound Ġin Ġthe ĠLICENSE Ġfile . Ċ Ġ* Ċ Ġ* ĠOrigin ally Ġfrom Ġint ellij - rust Ċ Ġ*/ Ċ Ċ package Ġorg . elm . workspace Ċ Ċ import Ġcom . intellij . openapi . application . run Write Action Ċ import Ġcom . intellij . openapi . vfs . Virtual File Ċ import Ġcom . intellij . openapi . vfs . new vfs . events . V FileContent ChangeEvent Ċ import Ġcom . intellij . openapi . vfs . new vfs . events . V File Create Event Ċ import Ġcom . intellij . openapi . vfs . new vfs . events . V File Delete Event Ċ import Ġcom . intellij . openapi . vfs . new vfs . events . V File Event Ċ import Ġorg . elm . lang . Elm TestBase ĊĊ Ċ class ĠEl m Project Watcher Test : ĠEl m TestBase () Ġ{ ĊĊĊĠĠĠ Ġprivate Ġvar Ġcounter Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġwatcher : ĠEl m Project Watcher ĊĊĊĠĠĠ Ġoverride Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . setUp () ĊĠĠĠĠĠĠĠ Ġwatcher Ġ= ĠEl m Project Watcher Ġ{ Ġcounter ++ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun Ġ` test Ġdetect s Ġa Ġchange Ġinvol ving Ġelm Ġjson Ġproject Ġmanifest Ġfile `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġv File Ġ= Ġnew Virtual File ( Elm Tool chain . EL M _ JSON ) ĊĠĠĠĠĠĠĠ Ġwatcher . check Triggered ( new Create Event ( v File )) ĊĠĠĠĠĠĠĠ Ġwatcher . check Triggered ( new ChangeEvent ( v File )) ĊĠĠĠĠĠĠĠ Ġwatcher . check Triggered ( new Delete Event ( v File )) ĊĠĠĠĠĠĠĠ Ġrun Write Action Ġ{ Ġv File . delete ( this ) Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ// ĠTODO Ġ[ drop Ġ 0 . 1 8 ] Ġremove Ġthis Ġtest ĊĠĠĠ Ġfun Ġ` test Ġdetect s Ġa Ġchange Ġinvol ving Ġlegacy Ġelm Ġjson Ġproject Ġmanifest Ġfile `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġv File Ġ= Ġnew Virtual File ( Elm Tool chain . EL M _ LEG ACY _ JSON ) ĊĠĠĠĠĠĠĠ Ġwatcher . check Triggered ( new Create Event ( v File )) ĊĠĠĠĠĠĠĠ Ġwatcher . check Triggered ( new ChangeEvent ( v File )) ĊĠĠĠĠĠĠĠ Ġwatcher . check Triggered ( new Delete Event ( v File )) ĊĠĠĠĠĠĠĠ Ġrun Write Action Ġ{ Ġv File . delete ( this ) Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun Ġ` test Ġignores Ġfiles Ġother Ġthan Ġelm Ġjson `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġv File Ġ= Ġnew Virtual File (" foo . json ") ĊĠĠĠĠĠĠĠ Ġwatcher . check Not Triggered ( new Create Event ( v File )) ĊĠĠĠĠĠĠĠ Ġwatcher . check Not Triggered ( new ChangeEvent ( v File )) ĊĠĠĠĠĠĠĠ Ġwatcher . check Not Triggered ( new Delete Event ( v File )) ĊĠĠĠĠĠĠĠ Ġrun Write Action Ġ{ Ġv File . delete ( this ) Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun ĠEl m Project Watcher . check Triggered ( event : ĠV File Event ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġold Ġ= Ġcounter ĊĠĠĠĠĠĠĠ Ġafter ( listOf ( event )) ĊĠĠĠĠĠĠĠ Ġcheck ( counter Ġ== Ġold Ġ+ Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Watcher Ġignored Ġ$ event " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun ĠEl m Project Watcher . check Not Triggered ( event : ĠV File Event ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġold Ġ= Ġcounter ĊĠĠĠĠĠĠĠ Ġafter ( listOf ( event )) ĊĠĠĠĠĠĠĠ Ġcheck ( counter Ġ== Ġold ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Watcher Ġshould Ġhave Ġignored Ġ$ event " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġnew Create Event ( v File : ĠVirtual File ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠV File Create Event ( null , Ġv File . parent , Ġv File . name , Ġfalse , Ġnull , Ġnull , Ġtrue , Ġfalse ) ĊĊĊĠĠĠ Ġprivate Ġfun Ġnew ChangeEvent ( v File : ĠVirtual File ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠV FileContent ChangeEvent ( null , Ġv File , Ġv File . modification Stamp Ġ- Ġ 1 , Ġv File . modification Stamp , Ġtrue ) ĊĊĊĠĠĠ Ġprivate Ġfun Ġnew Delete Event ( v File : ĠVirtual File ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠV File Delete Event ( null , Ġv File , Ġtrue ) ĊĊĊĠĠĠ Ġprivate Ġfun Ġnew Virtual File ( name : ĠString ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmy Fixture . temp Dir Fixture . create File (" proj - watcher /$ name ") Ċ }