Sha256: 5bcd0246d598ddde4cb9c2ec9816c9bbeb9049f6f91c3a068f9107d2f9d909f8

Contents?: true

Size: 910 Bytes

Versions: 5

Compression:

Stored size: 910 Bytes

Contents

require 'spec_helper'
require 'dentaku/ast/node'
require 'dentaku/tokenizer'
require 'dentaku/parser'

describe Dentaku::AST::Node do
  it 'returns list of dependencies' do
    node = make_node('x + 5')
    expect(node.dependencies).to eq ['x']

    node = make_node('5 < x')
    expect(node.dependencies).to eq ['x']

    node = make_node('5 < 7')
    expect(node.dependencies).to eq []

    node = make_node('(y * 7)')
    expect(node.dependencies).to eq ['y']

    node = make_node('if(x > 5, y, z)')
    expect(node.dependencies).to eq ['x', 'y', 'z']

    node = make_node('if(x > 5, y, z)')
    expect(node.dependencies('x' => 7)).to eq ['y', 'z']
  end

  it 'returns unique list of dependencies' do
    node = make_node('x + x')
    expect(node.dependencies).to eq ['x']
  end

  private

  def make_node(expression)
    Dentaku::Parser.new(Dentaku::Tokenizer.new.tokenize(expression)).parse
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
dentaku-2.0.4 spec/ast/node_spec.rb
dentaku-2.0.3 spec/ast/node_spec.rb
dentaku-2.0.2 spec/ast/node_spec.rb
dentaku-2.0.1 spec/ast/node_spec.rb
dentaku-2.0.0 spec/ast/node_spec.rb