Sha256: b5a5947d62e1250ceaa0b238c78116ff6133139526311d4d30f00a81f77406fa

Contents?: true

Size: 1.14 KB

Versions: 4

Compression:

Stored size: 1.14 KB

Contents

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

    it 'arranges when clauses as expected' do
      expr = <<-CASE_ST.strip
        case
        when good
          Task1
        when bad
          Task2
        end
      CASE_ST
      when_clause1 = ast("when good Task1", :when_clause)
      when_clause2 = ast("when bad Task2", :when_clause)
      expected = [:case_st, nil, when_clause1, when_clause2]
      ast(expr, :case_st).should eq(expected)
    end

    it 'puts the else clause at the end' do
      expr = <<-CASE_ST.strip
        case
        when good
          Task1
        else
          Task2
        end
      CASE_ST
      when_clause = ast("when good Task1", :when_clause)
      else_clause = ast("else Task2", :else_clause)
      expected = [:case_st, nil, when_clause, else_clause]
      ast(expr, :case_st).should eq(expected)
    end

    it 'supports an optional variable name' do
      expr = <<-CASE_ST.strip
        case someVariable
        when good
          Task1
        end
      CASE_ST
      expected = [:var_ref, "someVariable"]
      ast(expr, :case_st)[1].should eq(expected)
    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_case_st.rb
gisele-language-0.5.1 spec/language/syntax/to_ast/test_case_st.rb
gisele-language-0.5.0 spec/language/syntax/to_ast/test_case_st.rb
gisele-0.5.0 spec/unit/language/syntax/to_ast/test_case_st.rb