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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
|
# encoding: utf-8
require 'spec_helper'
describe Equalizer::Methods, '#eql?' do
subject { object.eql?(other) }
let(:object) { described_class.new(true) }
let(:described_class) do
Class.new do
include Equalizer::Methods
attr_reader :boolean
def initialize(boolean)
@boolean = boolean
end
def cmp?(comparator, other)
boolean.send(comparator, other.boolean)
end
end
end
context 'with the same object' do
let(:other) { object }
it { should be(true) }
it 'is symmetric' do
should eql(other.eql?(object))
end
end
context 'with an equivalent object' do
let(:other) { object.dup }
it { should be(true) }
it 'is symmetric' do
should eql(other.eql?(object))
end
end
context 'with an equivalent object of a subclass' do
let(:other) { Class.new(described_class).new(true) }
it { should be(false) }
it 'is symmetric' do
should eql(other.eql?(object))
end
end
context 'with a different object' do
let(:other) { described_class.new(false) }
it { should be(false) }
it 'is symmetric' do
should eql(other.eql?(object))
end
end
end
|