Sha256: 1b43c9b0394b79578a4592e8cd4dc1d10a2190d7c08549cc232141a40602b29f

Contents?: true

Size: 1013 Bytes

Versions: 3

Compression:

Stored size: 1013 Bytes

Contents

describe Ace::Compiler do
  let :file do
    <<-DOC
    %{
      test
    %}

    %require "#{VERSION}"
    %language "ruby"

    %terminal NUMBER
    %terminal SEMICOLON ";"
    %terminal ADD "+"
    %terminal LPAREN "("
    %terminal RPAREN ")"

    %%

    s: e
    e: t ADD e
    t: NUMBER | LPAREN e RPAREN

    %%

    hello
    DOC
  end

  let :tokens do
    Ace::Scanner.scan(file)
  end

  let :compiler do
    Ace::Compiler.new(tokens)
  end

  subject do
    compiler.compile
    compiler
  end

  its(:body) { should =~ /test/  }
  its(:body) { should =~ /hello/ }
  its(:options) { should have_key :type }

  it "should have the proper terminals" do
    expect(subject.options[:terminals].map(&:first)).to eq [:NUMBER,
      :SEMICOLON, :ADD, :LPAREN, :RPAREN]
  end

  context "with an unmatched version" do
    let :file do "%require \"0.0.0\"\n%%\n%%\n" end

    it "should raise an error" do
      expect {
        subject
      }.to raise_error(Ace::IncompatibleVersionError)
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
antelope-0.2.0 spec/antelope/ace/compiler_spec.rb
antelope-0.1.11 spec/antelope/ace/compiler_spec.rb
antelope-0.1.10 spec/antelope/ace/compiler_spec.rb