2008-05-18 06:22:34 +02:00
|
|
|
require 'abstract_unit'
|
2007-12-21 08:48:59 +01:00
|
|
|
require "fixtures/person"
|
|
|
|
require "fixtures/street_address"
|
|
|
|
|
|
|
|
class BaseEqualityTest < Test::Unit::TestCase
|
|
|
|
def setup
|
|
|
|
@new = Person.new
|
|
|
|
@one = Person.new(:id => 1)
|
|
|
|
@two = Person.new(:id => 2)
|
|
|
|
@street = StreetAddress.new(:id => 2)
|
|
|
|
end
|
|
|
|
|
|
|
|
def test_should_equal_self
|
|
|
|
assert @new == @new, '@new == @new'
|
|
|
|
assert @one == @one, '@one == @one'
|
|
|
|
end
|
|
|
|
|
|
|
|
def test_shouldnt_equal_new_resource
|
|
|
|
assert @new != @one, '@new != @one'
|
|
|
|
assert @one != @new, '@one != @new'
|
|
|
|
end
|
|
|
|
|
|
|
|
def test_shouldnt_equal_different_class
|
|
|
|
assert @two != @street, 'person != street_address with same id'
|
|
|
|
assert @street != @two, 'street_address != person with same id'
|
|
|
|
end
|
|
|
|
|
|
|
|
def test_eql_should_alias_equals_operator
|
|
|
|
assert_equal @new == @new, @new.eql?(@new)
|
|
|
|
assert_equal @new == @one, @new.eql?(@one)
|
|
|
|
|
|
|
|
assert_equal @one == @one, @one.eql?(@one)
|
|
|
|
assert_equal @one == @new, @one.eql?(@new)
|
|
|
|
|
|
|
|
assert_equal @one == @street, @one.eql?(@street)
|
|
|
|
end
|
|
|
|
|
|
|
|
def test_hash_should_be_id_hash
|
|
|
|
[@new, @one, @two, @street].each do |resource|
|
|
|
|
assert_equal resource.id.hash, resource.hash
|
|
|
|
end
|
|
|
|
end
|
2009-02-04 21:26:08 +01:00
|
|
|
|
|
|
|
def test_with_prefix_options
|
|
|
|
assert_equal @one == @one, @one.eql?(@one)
|
|
|
|
assert_equal @one == @one.dup, @one.eql?(@one.dup)
|
|
|
|
new_one = @one.dup
|
|
|
|
new_one.prefix_options = {:foo => 'bar'}
|
|
|
|
assert_not_equal @one, new_one
|
|
|
|
end
|
|
|
|
|
2007-12-21 08:48:59 +01:00
|
|
|
end
|