package Ġcom . mat tm ik . rap ira . objects Ċ Ċ import Ġcom . mat tm ik . rap ira . Environment Ċ import Ġcom . mat tm ik . rap ira . antlr . R ap ira Parser Ċ import Ġcom . mat tm ik . rap ira . args . Argument Ċ import Ġcom . mat tm ik . rap ira . args . In Argument Ċ import Ġcom . mat tm ik . rap ira . args . InOut Argument Ċ import Ġcom . mat tm ik . rap ira . control . Callable Return Exception Ċ import Ġcom . mat tm ik . rap ira . errors . Illegal ArgumentError Ċ import Ġcom . mat tm ik . rap ira . errors . Illegal ReturnValue Error Ċ import Ġcom . mat tm ik . rap ira . errors . Incorrect Argument Count Error Ċ import Ġcom . mat tm ik . rap ira . params . Param Type Ċ import Ġcom . mat tm ik . rap ira . params . Parameter Ċ import Ġcom . mat tm ik . rap ira . visitor s . Statement Visitor Ċ import Ġio . kot est . assertions . throw ables . should Throw Ċ import Ġio . kot est . core . spec . style . Word Spec Ċ import Ġio . kot est . matchers . null s . shouldBe Null Ċ import Ġio . mock k . every Ċ import Ġio . mock k . mock k Ċ import Ġio . mock k . mock k Constructor Ċ import Ġio . mock k . un mock k Constructor Ċ Ċ class ĠProcedure Test Ġ: ĠWord Spec ({ ĊĊĠĠĠ Ġfun Ġmake Procedure Params ( var arg Ġparam Names : ĠString ) Ġ= ĊĠĠĠĠĠĠĠ Ġparam Names . map Ġ{ Ġparam Name Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠParameter ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠParam Type . InOut , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparam Name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ" call " Ġshould Ġ{ ĊĠĠĠĠĠĠĠ Ġbefore Test Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmock k Constructor ( Statement Visitor :: class ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġafter Test Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġun mock k Constructor ( Statement Visitor :: class ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" throw Ġexception Ġwhen Ġparam Ġand Ġargument Ġcount Ġdiffer " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmock Variable Context Ġ= Ġmock k < R ap ira Parser . Variable Context > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Ġ= Ġmock k () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstop Ġ= Ġmock k () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparams Ġ= Ġmake Procedure Params (" param 1 ", Ġ" param 2 ", Ġ" param 3 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġarguments Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIn Out Argument ( mock Variable Context ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIn Out Argument ( mock Variable Context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprocedure Ġ= ĠProcedure ( null , Ġnull , Ġparams ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġshould Throw < Incorrect Argument Count Error > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprocedure . call ( Environment (), Ġarguments , Ġmock k ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" throw Ġexception Ġwhen Ġparam Ġand Ġargument Ġtype Ġdo Ġnot Ġmatch " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmock Expression Context Ġ= Ġmock k < R ap ira Parser . Expression Context > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Ġ= Ġmock k () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstop Ġ= Ġmock k () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparams Ġ= Ġmake Procedure Params (" param 1 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġarguments Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIn Argument ( mock Expression Context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprocedure Ġ= ĠProcedure ( null , Ġnull , Ġparams ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġshould Throw < Illegal ArgumentError > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprocedure . call ( Environment (), Ġarguments , Ġmock k ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" throw Ġexception Ġwhen ĠCallable Return Exception Ġholds Ġnon - null Ġvalue " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparams Ġ= Ġempty List < Parameter >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġarguments Ġ= Ġempty List < Argument >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmock Statements Ġ= Ġmock k < R ap ira Parser . St mts Context >( relax ed Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠreturnValue Ġ= ĠText (" Hello , Ġworld !") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġany Construct ed < Statement Visitor >(). visit ( any ()) Ġ} Ġthrows ĠCallable Return Exception ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠreturnValue Ġ= ĠreturnValue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoken Ġ= Ġmock k () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġshould Throw < Illegal ReturnValue Error > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProcedure ( null , Ġmock Statements , Ġparams ). call ( Environment (), Ġarguments , Ġmock k ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" return Ġwhen ĠCallable Return Exception Ġholds Ġnull Ġvalue " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparams Ġ= Ġempty List < Parameter >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġarguments Ġ= Ġempty List < Argument >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmock Statements Ġ= Ġmock k < R ap ira Parser . St mts Context >( relax ed Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġany Construct ed < Statement Visitor >(). visit ( any ()) Ġ} Ġthrows ĠCallable Return Exception ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠreturnValue Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoken Ġ= Ġmock k () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠProcedure ( null , Ġmock Statements , Ġparams ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. call ( Environment (), Ġarguments , Ġmock k ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. shouldBe Null () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ" toString " ĠWhen Ġ{ ĊĠĠĠĠĠĠĠ Ġ" procedure Ġis Ġnamed " Ġshould Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" return Ġuser Ġfriendly Ġrepresentation " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProcedure (" foo ") Ġshould Convert ToString Ġ" proc [\" foo \"] " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" procedure Ġis Ġun named " Ġshould Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" return Ġuser Ġfriendly Ġrepresentation " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProcedure () Ġshould Convert ToString Ġ" proc " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }) Ċ