Sha256: de3928ca8c3a91f2646e03510418aed74ea58f7d7f2f1437a15c52a14d73fe60

Contents?: true

Size: 1.03 KB

Versions: 4

Compression:

Stored size: 1.03 KB

Contents

require 'spec_helper'
require 'dentaku/ast/functions/sum'
require 'dentaku'

describe 'Dentaku::AST::Function::Sum' do
  it 'returns the sum of an array of Numeric values' do
    result = Dentaku('SUM(1, x, 1.8)', x: 2.3)
    expect(result).to eq(5.1)
  end

  it 'returns the sum of a single entry array of a Numeric value' do
    result = Dentaku('SUM(x)', x: 2.3)
    expect(result).to eq(2.3)
  end

  it 'returns the sum even if a String is passed' do
    result = Dentaku('SUM(1, x, 1.8)', x: '2.3')
    expect(result).to eq(5.1)
  end

  it 'returns the sum even if an array is passed' do
    result = Dentaku('SUM(1, x, 2.3)', x: [4, 5])
    expect(result).to eq(12.3)
  end

  it 'returns the sum of nested sums' do
    result = Dentaku('SUM(1, x, SUM(4, 5))', x: '2.3')
    expect(result).to eq(12.3)
  end

  context 'checking errors' do
    let(:calculator) { Dentaku::Calculator.new }

    it 'raises an error if no arguments are passed' do
      expect { calculator.evaluate!('SUM()') }.to raise_error(Dentaku::ArgumentError)
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
dentaku-3.3.4 spec/ast/sum_spec.rb
dentaku-3.3.3 spec/ast/sum_spec.rb
dentaku-3.3.2 spec/ast/sum_spec.rb
dentaku-3.3.1 spec/ast/sum_spec.rb