Sha256: e3bbd3fb1817c380964b4bdb29814270f27ce952bb9927f2c3f3fe4d7a75763f

Contents?: true

Size: 1.08 KB

Versions: 1

Compression:

Stored size: 1.08 KB

Contents

describe Gobstones::Parser, "while statements" do

  it "should parse a statement with a simple boolean and an empty block" do
    while_cmd = WhileCmd.new True.new, CmdBlock.empty

    expect('while (True) {}').to be_parsed_as(:command).and_return(while_cmd)
    expect('while (True) {
    }').to be_parsed_as(:command).and_return(while_cmd)
    expect('while (True)
      {}').to be_parsed_as(:command).and_return(while_cmd)
  end

  it "should parse a statement with a simple boolean and a block with commands" do
    cmd_block = CmdBlock.new [Poner.new(Verde.new), Skip.new]
    while_cmd = WhileCmd.new False.new, cmd_block

    expect('while(False){Poner(Verde); Skip}').
      to be_parsed_as(:command).and_return(while_cmd)
  end

  it "should parse a statement with a complex boolean expression" do
    and_expr = And.new VarName.new('a'), False.new
    exp = Or.new PuedeMover.new(Norte.new), ParenthesesExpr.new(and_expr)
    while_cmd = WhileCmd.new exp, CmdBlock.empty

    expect('while (puedeMover(Norte) || (a && False)) {}').
      to be_parsed_as(:command).and_return(while_cmd)
  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
gobstones-0.0.1.1 spec/parser/while_command_spec.rb