Sha256: 2182f8e62e594707cdd971aa3b8d530fd6f07ef56df64b184add5d0a475d3b86

Contents?: true

Size: 1.08 KB

Versions: 4

Compression:

Stored size: 1.08 KB

Contents

require 'spec_helper'
module Gisele::Language::Syntax
  describe BoolExpr, "to_ast" do

    it 'is correctly extended by Sexpr' do
      ast("true", :bool_expr).should be_a(Gisele::Language::AST::BoolExpr)
    end

    it 'returns expected ast on simple expressions' do
      expected = \
        [:bool_expr, [:bool_and, [:var_ref, "diagKnown"], [:var_ref, "platLow"]]]
      ast("diagKnown and platLow", :bool_expr).should eq(expected)
    end

    it 'respects priorities' do
      expected = [:bool_expr,
        [:bool_or, [:bool_and, [:var_ref, "diagKnown"], [:var_ref, "platLow"]], [:var_ref, "platHigh"]]]
      ast("diagKnown and platLow or platHigh", :bool_expr).should eq(expected)
    end

    it 'supports double negations' do
      expected = [:bool_expr, [:bool_not, [:bool_not, [:var_ref, "diagKnown"]]]]
      ast("not not(diagKnown)", :bool_expr).should eq(expected)
    end

    it 'makes boolean literals explicit' do
      ast("true",  :bool_expr).should eq([:bool_expr, [:bool_lit, true]])
      ast("false", :bool_expr).should eq([:bool_expr, [:bool_lit, false]])
    end

  end
end

Version data entries

4 entries across 4 versions & 2 rubygems

Version Path
gisele-language-0.6.0 spec/language/syntax/to_ast/test_bool_expr.rb
gisele-language-0.5.1 spec/language/syntax/to_ast/test_bool_expr.rb
gisele-language-0.5.0 spec/language/syntax/to_ast/test_bool_expr.rb
gisele-0.5.0 spec/unit/language/syntax/to_ast/test_bool_expr.rb