Sha256: d3954f9a8082c106ad85dc599f480c5ae48d7c72ce036509d369429a0e3fa363

Contents?: true

Size: 1.37 KB

Versions: 1

Compression:

Stored size: 1.37 KB

Contents

describe Gobstones::Parser, "command blocks" do

  it "should parse an empty block" do
    cmd_block = CmdBlock.empty

    expect('{}').to be_parsed_as(:command).and_return(cmd_block)
    expect('{     }').to be_parsed_as(:command).and_return(cmd_block)
  end

  it "should parse a block with one simple cmd" do
    cmd_block = CmdBlock.new [Skip.new]
    expect('{ Skip }').to be_parsed_as(:command).and_return(cmd_block)
  end

  it "should parse a block with many simple commands" do
    first = Poner.new Verde.new
    second = Boom.new "error"
    third = Mover.new Oeste.new
    cmd_block = CmdBlock.new [first, second, third]

    expect('{
      Poner(Verde)
      BOOM("error")
      Mover(Oeste)
     }').to be_parsed_as(:command).and_return(cmd_block)
  end

  it "should allow ; between commands" do
    first = Poner.new Verde.new
    second = Boom.new "error"
    third = Mover.new Oeste.new
    cmd_block = CmdBlock.new [first, second, third]

    expect('{Poner(Verde); BOOM("error");
      Mover(Oeste);
     }').to be_parsed_as(:command).and_return(cmd_block)
  end

  it "should parse a block with simple and complex commands" do
    first = ProcedureCall.new 'Proc', []
    second = IfCmd.new True.new, CmdBlock.empty
    cmd_block = CmdBlock.new [first, second]

    expect('{
      Proc()
      if (True) {}
     }').to be_parsed_as(:command).and_return(cmd_block)
  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

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