summaryrefslogtreecommitdiff
path: root/spec/ruby/core/enumerable/sum_spec.rb
blob: 77b66bc1ec0d6e6bc1a391215944037fc1c4cacf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
require_relative '../../spec_helper'
require_relative 'fixtures/classes'

ruby_version_is '2.4' do
  describe 'Enumerable#sum' do
    before :each do
      @enum = Object.new.to_enum
      class << @enum
        def each
          yield 0
          yield(-1)
          yield 2
          yield 2/3r
        end
      end
    end

    it 'returns amount of the elements with taking an argument as the initial value' do
      @enum.sum(10).should == 35/3r
    end

    it 'gives 0 as a default argument' do
      @enum.sum.should == 5/3r
    end

    it 'takes a block to transform the elements' do
      @enum.sum { |element| element * 2 }.should == 10/3r
    end
  end
end