summaryrefslogtreecommitdiff
path: root/spec/rubyspec/core/comparable/equal_value_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/rubyspec/core/comparable/equal_value_spec.rb')
-rw-r--r--spec/rubyspec/core/comparable/equal_value_spec.rb139
1 files changed, 0 insertions, 139 deletions
diff --git a/spec/rubyspec/core/comparable/equal_value_spec.rb b/spec/rubyspec/core/comparable/equal_value_spec.rb
deleted file mode 100644
index 2bc22771b4..0000000000
--- a/spec/rubyspec/core/comparable/equal_value_spec.rb
+++ /dev/null
@@ -1,139 +0,0 @@
-require File.expand_path('../../../spec_helper', __FILE__)
-require File.expand_path('../fixtures/classes', __FILE__)
-
-describe "Comparable#==" do
- a = b = nil
- before :each do
- a = ComparableSpecs::Weird.new(0)
- b = ComparableSpecs::Weird.new(10)
- end
-
- it "returns true if other is the same as self" do
- (a == a).should == true
- (b == b).should == true
- end
-
- it "calls #<=> on self with other and returns true if #<=> returns 0" do
- a.should_receive(:<=>).once.and_return(0)
- (a == b).should == true
- end
-
- it "calls #<=> on self with other and returns true if #<=> returns 0.0" do
- a.should_receive(:<=>).once.and_return(0.0)
- (a == b).should == true
- end
-
- it "returns false if calling #<=> on self returns a positive Integer" do
- a.should_receive(:<=>).once.and_return(1)
- (a == b).should == false
- end
-
- it "returns false if calling #<=> on self returns a negative Integer" do
- a.should_receive(:<=>).once.and_return(-1)
- (a == b).should == false
- end
-
- context "when #<=> returns nil" do
- before :each do
- a.should_receive(:<=>).once.and_return(nil)
- end
-
- it "returns false" do
- (a == b).should be_false
- end
- end
-
- context "when #<=> returns nor nil neither an Integer" do
- before :each do
- a.should_receive(:<=>).once.and_return("abc")
- end
-
- ruby_version_is ""..."2.3" do
- it "returns false" do
- (a == b).should be_false
- end
- end
-
- ruby_version_is "2.3" do
- it "raises an ArgumentError" do
- lambda { (a == b) }.should raise_error(ArgumentError)
- end
- end
- end
-
- context "when #<=> raises an exception" do
- context "if it is a StandardError" do
- before :each do
- a.should_receive(:<=>).once.and_raise(StandardError)
- end
-
- ruby_version_is ""..."2.3" do
- # Behaviour confirmed by MRI test suite
- it "returns false" do
- (a == b).should be_false
- end
- end
-
- ruby_version_is "2.3" do
- it "lets it go through" do
- lambda { (a == b) }.should raise_error(StandardError)
- end
- end
- end
-
- context "if it is a subclass of StandardError" do
- # TypeError < StandardError
- before :each do
- a.should_receive(:<=>).once.and_raise(TypeError)
- end
-
- ruby_version_is ""..."2.3" do
- it "returns false" do
- (a == b).should be_false
- end
- end
-
- ruby_version_is "2.3" do
- it "lets it go through" do
- lambda { (a == b) }.should raise_error(TypeError)
- end
- end
- end
-
- it "lets it go through if it is not a StandardError" do
- a.should_receive(:<=>).once.and_raise(Exception)
- lambda { (a == b) }.should raise_error(Exception)
- end
- end
-
- context "when #<=> is not defined" do
- before :each do
- @a = ComparableSpecs::WithoutCompareDefined.new
- @b = ComparableSpecs::WithoutCompareDefined.new
- end
-
- it "returns true for identical objects" do
- @a.should == @a
- end
-
- it "returns false and does not recurse infinitely" do
- @a.should_not == @b
- end
- end
-
- context "when #<=> calls super" do
- before :each do
- @a = ComparableSpecs::CompareCallingSuper.new
- @b = ComparableSpecs::CompareCallingSuper.new
- end
-
- it "returns true for identical objects" do
- @a.should == @a
- end
-
- it "calls the defined #<=> only once for different objects" do
- @a.should_not == @b
- @a.calls.should == 1
- end
- end
-end