Sha256: e57eb0cb2849e53c0bf23c468609acafc021728fc96ce9fdaf12b545f3fd5804
Contents?: true
Size: 1.09 KB
Versions: 2
Compression:
Stored size: 1.09 KB
Contents
require 'spec_helper' module Gisele::Language describe AST do describe 'ast' do it 'returns a node' do node = [:unit_def].extend(AST::Node) AST.node(node).object_id.should eq(node.object_id) end it 'coerces an array' do AST.node([:unit_def]).should eq([:unit_def]) AST.node([:unit_def]).should be_a(AST::UnitDef) end it 'falls back to Node' do AST.node([:nosuchnode]).should eq([:nosuchnode]) AST.node([:nosuchnode]).should be_a(AST::Node) end it 'applies coercions recursively' do source = [:unit_def, [:hello, "world"]] AST.node(source).should eq(source) AST.node(source).last.should be_a(AST::Node) end it 'raises unless a ast node array' do lambda{ AST.node("foo") }.should raise_error(ArgumentError, /foo/) lambda{ AST.node(nil) }.should raise_error(ArgumentError, /nil/) lambda{ AST.node([]) }.should raise_error(ArgumentError, /\[\]/) lambda{ AST.node(["foo"]) }.should raise_error(ArgumentError, /foo/) end end # .ast end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
gisele-0.4.0 | spec/unit/language/test_ast.rb |
gisele-0.3.0 | spec/unit/language/test_ast.rb |