diff options
Diffstat (limited to 'spec/ruby/shared')
-rw-r--r-- | spec/ruby/shared/complex/Complex.rb | 12 | ||||
-rw-r--r-- | spec/ruby/shared/complex/hash.rb | 16 | ||||
-rw-r--r-- | spec/ruby/shared/fiber/resume.rb | 11 | ||||
-rw-r--r-- | spec/ruby/shared/hash/key_error.rb | 25 |
4 files changed, 39 insertions, 25 deletions
diff --git a/spec/ruby/shared/complex/Complex.rb b/spec/ruby/shared/complex/Complex.rb index 15feb65754..0bed5c1a36 100644 --- a/spec/ruby/shared/complex/Complex.rb +++ b/spec/ruby/shared/complex/Complex.rb @@ -35,7 +35,7 @@ describe :kernel_Complex, shared: true do end end - describe "when passed [Integer]" do + describe "when passed [Integer/Float]" do it "returns a new Complex number with 0 as the imaginary component" do # Guard against the Mathn library conflicts_with :Prime do @@ -62,7 +62,7 @@ describe :kernel_Complex, shared: true do it "needs to be reviewed for spec completeness" end - describe "when passed an Objectc which responds to #to_c" do + describe "when passed an Object which responds to #to_c" do it "returns the passed argument" do obj = Object.new; def obj.to_c; 1i end Complex(obj).should == Complex(0, 1) @@ -130,4 +130,12 @@ describe :kernel_Complex, shared: true do lambda { Complex.send(@method, 0, :sym) }.should raise_error(TypeError) end end + + describe "when passed nil" do + it "raises TypeError" do + lambda { Complex(nil) }.should raise_error(TypeError, "can't convert nil into Complex") + lambda { Complex(0, nil) }.should raise_error(TypeError, "can't convert nil into Complex") + lambda { Complex(nil, 0) }.should raise_error(TypeError, "can't convert nil into Complex") + end + end end diff --git a/spec/ruby/shared/complex/hash.rb b/spec/ruby/shared/complex/hash.rb deleted file mode 100644 index 26ca59aeaf..0000000000 --- a/spec/ruby/shared/complex/hash.rb +++ /dev/null @@ -1,16 +0,0 @@ -require File.expand_path('../../../spec_helper', __FILE__) - -describe :complex_hash, shared: true do - it "is static" do - Complex(1).hash.should == Complex(1).hash - Complex(1, 0).hash.should == Complex(1).hash - Complex(1, 1).hash.should == Complex(1, 1).hash - end - - it "is different for different instances" do - Complex(1, 2).hash.should_not == Complex(1, 1).hash - Complex(2, 1).hash.should_not == Complex(1, 1).hash - - Complex(1, 2).hash.should_not == Complex(2, 1).hash - end -end diff --git a/spec/ruby/shared/fiber/resume.rb b/spec/ruby/shared/fiber/resume.rb index 058ef4e15a..e2d30d781b 100644 --- a/spec/ruby/shared/fiber/resume.rb +++ b/spec/ruby/shared/fiber/resume.rb @@ -4,19 +4,16 @@ describe :fiber_resume, shared: true do fiber.send(@method).should == :fiber end - it "raises a FiberError if the Fiber tries to resume itself" do - fiber = Fiber.new { fiber.resume } - -> { fiber.resume }.should raise_error(FiberError, /double resume/) - end - it "raises a FiberError if invoked from a different Thread" do fiber = Fiber.new { 42 } Thread.new do -> { - fiber.resume + fiber.send(@method) }.should raise_error(FiberError) end.join - fiber.resume.should == 42 + + # Check the Fiber can still be used + fiber.send(@method).should == 42 end it "passes control to the beginning of the block on first invocation" do diff --git a/spec/ruby/shared/hash/key_error.rb b/spec/ruby/shared/hash/key_error.rb new file mode 100644 index 0000000000..061c88c483 --- /dev/null +++ b/spec/ruby/shared/hash/key_error.rb @@ -0,0 +1,25 @@ +describe :key_error, shared: true do + it "raises a KeyError" do + -> { + @method.call(@object, 'foo') + }.should raise_error(KeyError) + end + + ruby_version_is "2.5" do + it "sets the Hash as the receiver of KeyError" do + -> { + @method.call(@object, 'foo') + }.should raise_error(KeyError) { |err| + err.receiver.should equal(@object) + } + end + + it "sets the unmatched key as the key of KeyError" do + -> { + @method.call(@object, 'foo') + }.should raise_error(KeyError) { |err| + err.key.to_s.should == 'foo' + } + end + end +end |