Sha256: 11b57e5817577d21ec2d67ec23d52421d212cdfc7612539e6f90b32955f72951
Contents?: true
Size: 1.64 KB
Versions: 1
Compression:
Stored size: 1.64 KB
Contents
describe Gobstones::Parser, "function definitions" do it "should parse a function without args and a single return" do args = VarTuple.new [] func_return = ReturnFromFunction.new [42.to_gbs_num] func_def = Function.new 'just42', args, CmdBlock.new([]), func_return expect('function just42() { return (42) }'). to be_parsed_as(:definition).and_return(func_def) end it "should parse a function with some args" do first_arg = VarName.new 'firstArg' second_arg = VarName.new 'secondArg' third_arg = VarName.new 'thirdArg' args = VarTuple.new [first_arg, second_arg, third_arg] body = return_st = ReturnFromFunction.new [Verde.new, PuedeMover.new(Norte.new)] func_def = Function.new 'myCoolFunction', args, CmdBlock.new([]), return_st expect('function myCoolFunction (firstArg, secondArg, thirdArg) { return (Verde, puedeMover(Norte)) }').to be_parsed_as(:definition).and_return(func_def) end it "should parse a function with some statements" do args = VarTuple.new [VarName.new('arg')] body = CmdBlock.new [Poner.new(Verde.new)] return_st = ReturnFromFunction.new [True.new] func_def = Function.new 'myFunc', args, body, return_st expect('function myFunc(arg) { Poner(Verde) return (True) }').to be_parsed_as(:definition).and_return(func_def) end it "should not parse a function without a valid identifier" do expect('function MyWrongFunc() { return(True) }'). to be_parsed_as(:definition).and_fail end it "should not parse a function without a return statement" do expect('function myFuncWithoutReturn() { }'). to be_parsed_as(:definition).and_fail end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
gobstones-0.0.1.1 | spec/parser/function_definitions_spec.rb |