package Ġorg . carbon čĊč Ċ import Ġorg . carbon . syntax . wrap Integer č Ċ import Ġorg . junit . Test čĊč Ċ /** čĊ Ġ* Ġ@ author ĠE than čĊ Ġ*/ č Ċ class ĠCompiler Tests Ġ{ čĊĠĠĠ Ġ@ Test čĊĠĠĠ Ġfun Ġbasic Definition () Ġ{ čĊĠĠĠĠĠĠĠ Ġenv Test (" A = 3 ", Ġ" A ", Ġwrap Integer ( 3 )) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ@ Test čĊĠĠĠ Ġfun Ġbasic Derived Variable () Ġ{ čĊĠĠĠĠĠĠĠ Ġenv Test (" A = 3 ĠB = A + 2 ", Ġ" B ", Ġwrap Integer ( 5 )) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ@ Test čĊĠĠĠ Ġfun Ġidentifier With Number () Ġ{ čĊĠĠĠĠĠĠĠ Ġenv Test (" Var 1 Ġ= Ġ 2 ", Ġ" Var 1 ", Ġwrap Integer ( 2 )) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ@ Test čĊĠĠĠ Ġfun Ġout Of Order Dependencies () Ġ{ čĊĠĠĠĠĠĠĠ Ġenv Test (""" čĊĠĠĠĠĠĠĠĠĠĠĠ ĠC Ġ= ĠA Ġ+ ĠB čĊĠĠĠĠĠĠĠĠĠĠĠ ĠA Ġ= Ġ 1 čĊĠĠĠĠĠĠĠĠĠĠĠ ĠB Ġ= Ġ 2 čĊĠĠĠĠĠĠĠ Ġ"" ", Ġ" C ", Ġwrap Integer ( 3 )) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ@ Test čĊĠĠĠ Ġfun Ġdot Not ation () Ġ{ čĊĠĠĠĠĠĠĠ Ġ// ĠA Ġlittle Ġstrange Ġto Ġdo Ġit Ġwith Ġan Ġin fix Ġoperator , Ġbut Ġit Ġshould Ġwork Ġany ways čĊĠĠĠĠĠĠĠ Ġexpr Test (" 1 . +( 1 )", Ġwrap Integer ( 2 )) čĊĠĠĠĠĠĠĠ Ġexpr Test (" 3 4 . +( 5 7 )", Ġwrap Integer ( 9 1 )) čĊĠĠĠĠĠĠĠ Ġexpr Test ("- 3 4 . +( 5 7 )", Ġwrap Integer ( 2 3 )) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ@ Test čĊĠĠĠ Ġfun Ġdots On Both Side s () Ġ{ čĊĠĠĠĠĠĠĠ Ġenv Test (""" čĊĠĠĠĠĠĠĠĠĠĠĠ ĠT Ġ= Ġ{ ĠMember Ġ= Ġ{ Integer Ġ= Ġ 1 }() Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ ĠA Ġ= ĠT () čĊĠĠĠĠĠĠĠĠĠĠĠ ĠB Ġ= ĠT () čĊĠĠĠĠĠĠĠĠĠĠĠ ĠR Ġ= ĠA . Member . Integer Ġ+ ĠB . Member . Integer čĊĠĠĠĠĠĠĠ Ġ"" ", Ġ" R ", Ġwrap Integer ( 2 )) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ@ Test čĊĠĠĠ Ġfun Ġnested Scopes () Ġ{ čĊĠĠĠĠĠĠĠ Ġenv Test (""" čĊĠĠĠĠĠĠĠĠĠĠĠ ĠE Ġ= Ġ 5 čĊĠĠĠĠĠĠĠĠĠĠĠ ĠA Ġ= Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠC Ġ= ĠE , čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠB Ġ= Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠD Ġ= ĠC , čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ ĠR Ġ= ĠA (). B . D čĊĠĠĠĠĠĠĠ Ġ"" ", Ġ" R ", Ġwrap Integer ( 5 )) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ@ Test čĊĠĠĠ Ġfun Ġgu ards () Ġ{ čĊĠĠĠĠĠĠĠ Ġenv Test (""" čĊĠĠĠĠĠĠĠĠĠĠĠ ĠChoice ( A : Integer ) Ġ| ĠA Ġ< Ġ 0 Ġ= Ġ 4 čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ= Ġ 5 čĊĠĠĠĠĠĠĠĠĠĠĠ ĠOption 1 Ġ= ĠChoice (- 2 ) čĊĠĠĠĠĠĠĠ Ġ"" ", Ġ" Option 1 ", Ġwrap Integer ( 4 )) čĊčĊĠĠĠĠĠĠĠ Ġenv Test (""" čĊĠĠĠĠĠĠĠĠĠĠĠ ĠChoice ( A : Integer ) Ġ| ĠA Ġ< Ġ 0 Ġ= Ġ 4 čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ= Ġ 5 čĊĠĠĠĠĠĠĠĠĠĠĠ ĠOption 2 Ġ= ĠChoice ( 3 ) čĊĠĠĠĠĠĠĠ Ġ"" ", Ġ" Option 2 ", Ġwrap Integer ( 5 )) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ@ Test ( expected Ġ= ĠCompilation Exception :: class ) čĊĠĠĠ Ġfun Ġbad Implicit ly Named Arg Fails () Ġ{ čĊĠĠĠĠĠĠĠ Ġtest Eval (""" čĊĠĠĠĠĠĠĠĠĠĠĠ ĠF ( Not A Type ) Ġ= ĠNot A Type čĊĠĠĠĠĠĠĠĠĠĠĠ ĠF ( 2 ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ") čĊĠĠĠ Ġ} č Ċ }