/* Ċ Ġ* ĠFX GL Ġ- ĠJava FX ĠGame ĠLibrary . ĠThe ĠMIT ĠLicense Ġ( MIT ). Ċ Ġ* ĠCopyright Ġ( c ) ĠAl mas B Ġ( al mas lvl @ gmail . com ). Ċ Ġ* ĠSee ĠLICENSE Ġfor Ġdetails . Ċ Ġ*/ Ċ Ċ package Ġcom . al mas b . fx gl . script Ċ Ċ import Ġcom . al mas b . fx gl . app . FX GL Ċ import Ġcom . al mas b . fx gl . app . FX GL Mock Ċ import Ġorg . hamcrest . Core Matchers .` is ` Ċ import Ġorg . hamcrest . Matcher Assert . assertThat Ċ import Ġorg . junit . jupiter . api . Assertions .* Ċ import Ġorg . junit . jupiter . api . Before All Ċ import Ġorg . junit . jupiter . api . Test Ċ Ċ /** Ċ Ġ* Ċ Ġ* Ċ Ġ* Ġ@ author ĠAl mas ĠB aim ag amb et ov Ġ( al mas lvl @ gmail . com ) Ċ Ġ*/ Ċ class ĠJ ST est Ġ{ ĊĊĠĠĠ Ġprivate Ġval ĠJS _ DATA Ġ= Ġ" function Ġtest () Ġ{\ n " Ġ+ Ġ" ĠĠĠ Ġreturn Ġ\" J ST est Inline \"\ n " Ġ+ Ġ" }\ n " ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Before All ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static Ġfun Ġbefore () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFX GL Mock . mock () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Invoke Ġfunction Ġfrom Ġexternal Ġsource `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġjs Parser Ġ= ĠFX GL . get Asset Loader (). load Script (" test . js ") ĊĠĠĠĠĠĠĠ Ġval ĠreturnValue Ġ= Ġjs Parser . call < String >(" test ") ĊĊĠĠĠĠĠĠĠ ĠassertThat ( returnValue , Ġ` is ` (" J ST est ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Invoke Ġfunction Ġfrom Ġinternal Ġsource `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġjs Parser Ġ= ĠScript Factory . from Code ( JS _ DATA ) ĊĠĠĠĠĠĠĠ Ġval ĠreturnValue Ġ= Ġjs Parser . call < String >(" test ") ĊĊĠĠĠĠĠĠĠ ĠassertThat ( returnValue , Ġ` is ` (" J ST est Inline ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Fail Ġif Ġcannot Ġbe Ġparsed `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertThrows ( IllegalArgumentException :: class . java , Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠScript Factory . from Code (" bl a - bl a - blah () Ġfunction ") ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Each Ġscript Ġhas Ġits Ġscope `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcode Ġ= Ġ" var Ġi Ġ= Ġ 3 4 5 ; Ġfunction Ġset ( value ) Ġ{ Ġi Ġ= Ġvalue ; Ġ} Ġfunction Ġget () Ġ{ Ġreturn Ġi ; Ġ}" ĊĊĠĠĠĠĠĠĠ Ġval Ġscript 1 Ġ= ĠScript Factory . from Code ( code ) ĊĠĠĠĠĠĠĠ Ġval Ġscript 2 Ġ= ĠScript Factory . from Code ( code ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( script 1 . call < Int >(" get "), Ġ` is `( 3 4 5 )) ĊĠĠĠĠĠĠĠ ĠassertThat ( script 2 . call < Int >(" get "), Ġ` is `( 3 4 5 )) ĊĊĠĠĠĠĠĠĠ Ġscript 1 . call < Void >(" set ", Ġ 9 9 9 ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( script 1 . call < Int >(" get "), Ġ` is `( 9 9 9 )) ĊĠĠĠĠĠĠĠ ĠassertThat ( script 2 . call < Int >(" get "), Ġ` is `( 3 4 5 )) ĊĊĠĠĠĠĠĠĠ Ġscript 2 . call < Void >(" set ", Ġ- 2 2 2 ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( script 1 . call < Int >(" get "), Ġ` is `( 9 9 9 )) ĊĠĠĠĠĠĠĠ ĠassertThat ( script 2 . call < Int >(" get "), Ġ` is ` (- 2 2 2 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Has Ġfunction `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġscript 1 Ġ= ĠScript Factory . from Code ( JS _ DATA ) ĊĊĠĠĠĠĠĠĠ ĠassertFalse ( script 1 . has Function (" hello ")) ĊĠĠĠĠĠĠĠ ĠassertTrue ( script 1 . has Function (" test ")) ĊĠĠĠ Ġ} Ċ }