diff options
Diffstat (limited to 'spec/ruby/core/exception/no_method_error_spec.rb')
-rw-r--r-- | spec/ruby/core/exception/no_method_error_spec.rb | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/spec/ruby/core/exception/no_method_error_spec.rb b/spec/ruby/core/exception/no_method_error_spec.rb new file mode 100644 index 0000000000..cf3fe58b1d --- /dev/null +++ b/spec/ruby/core/exception/no_method_error_spec.rb @@ -0,0 +1,59 @@ +require File.expand_path('../../../spec_helper', __FILE__) +require File.expand_path('../fixtures/common', __FILE__) + +describe "NoMethodError.new" do + it "allows passing method args" do + NoMethodError.new("msg","name","args").args.should == "args" + end + + it "does not require a name" do + NoMethodError.new("msg").message.should == "msg" + end +end + +describe "NoMethodError#args" do + it "returns an empty array if the caller method had no arguments" do + begin + NoMethodErrorSpecs::NoMethodErrorB.new.foo + rescue Exception => e + e.args.should == [] + end + end + + it "returns an array with the same elements as passed to the method" do + begin + a = NoMethodErrorSpecs::NoMethodErrorA.new + NoMethodErrorSpecs::NoMethodErrorB.new.foo(1,a) + rescue Exception => e + e.args.should == [1,a] + e.args[1].object_id.should == a.object_id + end + end +end + +describe "NoMethodError#message" do + it "for an undefined method match /undefined method/" do + begin + NoMethodErrorSpecs::NoMethodErrorD.new.foo + rescue Exception => e + e.should be_kind_of(NoMethodError) + end + end + + it "for an protected method match /protected method/" do + begin + NoMethodErrorSpecs::NoMethodErrorC.new.a_protected_method + rescue Exception => e + e.should be_kind_of(NoMethodError) + end + end + + it "for private method match /private method/" do + begin + NoMethodErrorSpecs::NoMethodErrorC.new.a_private_method + rescue Exception => e + e.should be_kind_of(NoMethodError) + e.message.match(/private method/).should_not == nil + end + end +end |