/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 7 ĠPat rick ĠS che i be Ċ Ġ* Ċ Ġ* Ġ ĠPermission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy Ċ Ġ* Ġ Ġof Ġthis Ġsoftware Ġand Ġassociated Ġdocumentation Ġfiles Ġ( the Ġ" Software "), Ġto Ġdeal Ċ Ġ* Ġ Ġin Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ġwithout Ġlimitation Ġthe Ġrights Ċ Ġ* Ġ Ġto Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġand / or Ġsell Ċ Ġ* Ġ Ġcopies Ġof Ġthe ĠSoftware , Ġand Ġto Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis Ċ Ġ* Ġ Ġfurnished Ġto Ġdo Ġso , Ġsubject Ġto Ġthe Ġfollowing Ġconditions : Ċ Ġ* Ċ Ġ* Ġ ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ċ Ġ* Ġ Ġall Ġcopies Ġor Ġsubstantial Ġportions Ġof Ġthe ĠSoftware . Ċ Ġ* Ċ Ġ* ĠĠ ĠTHE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR Ċ Ġ* Ġ ĠIMPLIED , ĠINCLUDING ĠBUT ĠNOT ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , Ċ Ġ* Ġ ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE Ċ Ġ* Ġ ĠAUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER Ċ Ġ* Ġ ĠLIABILITY , ĠWHETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , ĠARISING ĠFROM , Ċ Ġ* Ġ ĠOUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER ĠDEALINGS ĠIN Ċ Ġ* Ġ ĠTHE ĠSOFTWARE . Ċ Ġ* Ċ Ġ*/ Ċ Ċ package Ġde . hal ir ut an . mat hematic a . lang . resolve Ċ Ċ import Ġcom . intellij . openapi . util . Text Range Ċ import Ġjunit . framework . TestCase Ċ Ċ /** Ċ Ġ* ĠTests Ġif Ġlocal Ġvariables Ġare Ġresolved Ġcorrectly Ċ Ġ* Ġ@ author Ġpat rick Ġ( 2 0 . 0 7 . 1 7 ). Ċ Ġ*/ Ċ class ĠLocal Variable Resolve TestCase Ġ: ĠAbstract Resolve Test () Ġ{ ĊĊĠ Ġprivate Ġval Ġmodule Like Ġ= Ġmap Of ( ĊĠĠĠĠĠ Ġ" Module [{ x }, Ġ< ref > x ]" Ġto ĠText Range . create ( 8 , Ġ 9 ), ĊĠĠĠĠĠ Ġ" Module [{ x , y , z }, ĠModule [{ x }, Ġy + < ref > x ]] " Ġto ĠText Range . create ( 2 4 , Ġ 2 5 ), ĊĠĠĠĠĠ Ġ// Ġthe Ġsecond Ġx Ġshould Ġrefer Ġto Ġthe Ġoutside Ġx ĊĠĠĠĠĠ Ġ" Module [{ x }, Module [{ x Ġ= Ġ< ref > x }, Ġy + x ]] " Ġto ĠText Range . create ( 8 , Ġ 9 ) ĊĠ Ġ) ĊĊĠ Ġprivate Ġval Ġcompile Like Ġ= Ġmap Of ( ĊĠĠĠĠĠ Ġ" Compile [ var , ĠSin [ var ] Ġ+ Ġ< ref > var ]; " Ġto ĠText Range . create ( 8 , Ġ 1 1 ), ĊĠĠĠĠĠ Ġ" Compile [{{ x , Ġ_ Real , Ġ 0 }, Ġ{ y , Ġ_ Integer , Ġ 1 }}, Ġx + < ref > y ]" Ġto ĠText Range . create ( 2 5 , Ġ 2 6 ), ĊĠĠĠĠĠ Ġ" Compile [{{ x , Ġ_ Real }, Ġy , Ġ{ z , Ġ_ Real , Ġ 0 }}, Ġx + < ref > y + z Ġ] " Ġto ĠText Range . create ( 2 1 , Ġ 2 2 ) ĊĠ Ġ) ĊĊĠ Ġprivate Ġval Ġrule Delayed Like Ġ= Ġmap Of ( ĊĠĠĠĠĠ Ġ"{ test _, Ġtest _} Ġ:> Ġ< ref > test " Ġto ĠText Range . create ( 1 , Ġ 5 ), ĊĠĠĠĠĠ Ġ" Hold Complete [ Return Packet [{ expr _ Ġ:> Ġexpr _} ]] Ġ:> ĠHold Complete [< ref > expr ]" Ġto ĠText Range . create ( 2 7 , Ġ 3 1 ) ĊĠ Ġ) ĊĊĠ Ġprivate Ġval Ġfunction Like Ġ= Ġmap Of ( ĊĠĠĠĠĠ Ġ" Function [{ val , Ġkey }, Ġval Ġ+ Ġ< ref > key ]" Ġto ĠText Range . create ( 1 5 , Ġ 1 8 ), ĊĠĠĠĠĠ Ġ" Function [ val , Ġ< ref > val ]" Ġto ĠText Range . create ( 9 , Ġ 1 2 ) ĊĊĠ Ġ) ĊĊĠ Ġfun Ġtest Module () Ġ{ ĊĠĠĠ Ġfor Ġ(( key , Ġvalue ) Ġin Ġmodule Like ) Ġ{ ĊĠĠĠĠĠ Ġval Ġpsi Reference Ġ= Ġconfigure By File Text ( key ) ĊĠĠĠĠĠ Ġval Ġresolve Ġ= Ġpsi Reference . resolve () ĊĠĠĠĠĠ ĠTestCase . assertNotNull ( resolve ) ĊĠĠĠĠĠ ĠTestCase . assertEquals ( value , Ġresolve ?. text Range ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġfun Ġtest Compile () Ġ{ ĊĠĠĠ Ġfor Ġ(( key , Ġvalue ) Ġin Ġcompile Like ) Ġ{ ĊĠĠĠĠĠ Ġval Ġref Ġ= Ġconfigure By File Text ( key ) ĊĠĠĠĠĠ Ġval Ġresolve Ġ= Ġref . resolve () ĊĠĠĠĠĠ ĠTestCase . assertNotNull ( resolve ) ĊĠĠĠĠĠ ĠTestCase . assertEquals ( value , Ġresolve ?. text Range ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġfun Ġtest Rule Delayed () Ġ{ ĊĠĠĠ Ġfor Ġ(( key , Ġvalue ) Ġin Ġrule Delayed Like ) Ġ{ ĊĠĠĠĠĠ Ġval Ġref Ġ= Ġconfigure By File Text ( key ) ĊĠĠĠĠĠ Ġval Ġresolve Ġ= Ġref . resolve () ĊĠĠĠĠĠ ĠTestCase . assertNotNull ( resolve ) ĊĠĠĠĠĠ ĠTestCase . assertEquals ( value , Ġresolve ?. text Range ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġfun Ġtest Function () Ġ{ ĊĠĠĠ Ġfor Ġ(( key , Ġvalue ) Ġin Ġfunction Like ) Ġ{ ĊĠĠĠĠĠ Ġval Ġref Ġ= Ġconfigure By File Text ( key ) ĊĠĠĠĠĠ Ġval Ġresolve Ġ= Ġref . resolve () ĊĠĠĠĠĠ ĠTestCase . assertNotNull ( resolve ) ĊĠĠĠĠĠ ĠTestCase . assertEquals ( value , Ġresolve ?. text Range ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊ Ċ } Ċ