Sha256: fdf1e32e7636515c5aa30116e6e000cb4db3657139f2561b36287902f1e6c6d5

Contents?: true

Size: 1.2 KB

Versions: 1

Compression:

Stored size: 1.2 KB

Contents

# encoding: utf-8

require 'spec_helper'

describe Function::Predicate::Enumerable, '#call' do
  subject { object.call(tuple) }

  let(:described_class) { Class.new(Function) { include Function::Binary } }
  let(:header)          { Relation::Header.coerce([ [ :id, Integer ] ])    }
  let(:tuple)           { Tuple.new(header, [ 1 ])                         }

  before do
    described_class.class_eval { include Function::Predicate::Enumerable }
  end

  context 'with an enumerable of non-callable objects' do
    let(:object) { described_class.new(header[:id], [ 1 ]) }

    it 'sends the left and right value to self.class.call' do
      response = mock('#call response')
      described_class.should_receive(:call).with(1, [ 1 ]).and_return(response)
      should equal(response)
    end
  end

  context 'with an enumerable of callable objects' do
    let(:callable) { proc { 1 }                                     }
    let(:object)   { described_class.new(header[:id], [ callable ]) }

    it 'sends the left and right value to self.class.call' do
      response = mock('#call response')
      described_class.should_receive(:call).with(1, [ 1 ]).and_return(response)
      should equal(response)
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
axiom-0.1.0 spec/unit/axiom/function/predicate/enumerable/call_spec.rb