mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
Move spec/rubyspec to spec/ruby for consistency
* Other ruby implementations use the spec/ruby directory. [Misc #13792] [ruby-core:82287] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59979 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
75bfc6440d
commit
1d15d5f080
4370 changed files with 0 additions and 0 deletions
51
spec/ruby/core/method/shared/call.rb
Normal file
51
spec/ruby/core/method/shared/call.rb
Normal file
|
@ -0,0 +1,51 @@
|
|||
describe :method_call, shared: true do
|
||||
it "invokes the method with the specified arguments, returning the method's return value" do
|
||||
m = 12.method("+")
|
||||
m.send(@method, 3).should == 15
|
||||
m.send(@method, 20).should == 32
|
||||
|
||||
m = MethodSpecs::Methods.new.method(:attr=)
|
||||
m.send(@method, 42).should == 42
|
||||
end
|
||||
|
||||
it "raises an ArgumentError when given incorrect number of arguments" do
|
||||
lambda {
|
||||
MethodSpecs::Methods.new.method(:two_req).send(@method, 1, 2, 3)
|
||||
}.should raise_error(ArgumentError)
|
||||
lambda {
|
||||
MethodSpecs::Methods.new.method(:two_req).send(@method, 1)
|
||||
}.should raise_error(ArgumentError)
|
||||
end
|
||||
|
||||
describe "for a Method generated by respond_to_missing?" do
|
||||
it "invokes method_missing with the specified arguments and returns the result" do
|
||||
@m = MethodSpecs::Methods.new
|
||||
meth = @m.method(:handled_via_method_missing)
|
||||
meth.send(@method, :argument).should == [:argument]
|
||||
end
|
||||
|
||||
it "invokes method_missing with the method name and the specified arguments" do
|
||||
@m = MethodSpecs::Methods.new
|
||||
meth = @m.method(:handled_via_method_missing)
|
||||
|
||||
@m.should_receive(:method_missing).with(:handled_via_method_missing, :argument)
|
||||
meth.send(@method, :argument)
|
||||
end
|
||||
|
||||
it "invokes method_missing dynamically" do
|
||||
@m = MethodSpecs::Methods.new
|
||||
meth = @m.method(:handled_via_method_missing)
|
||||
|
||||
def @m.method_missing(*); :changed; end
|
||||
meth.send(@method, :argument).should == :changed
|
||||
end
|
||||
|
||||
it "does not call the original method name even if it now exists" do
|
||||
@m = MethodSpecs::Methods.new
|
||||
meth = @m.method(:handled_via_method_missing)
|
||||
|
||||
def @m.handled_via_method_missing(*); :not_called; end
|
||||
meth.send(@method, :argument).should == [:argument]
|
||||
end
|
||||
end
|
||||
end
|
94
spec/ruby/core/method/shared/eql.rb
Normal file
94
spec/ruby/core/method/shared/eql.rb
Normal file
|
@ -0,0 +1,94 @@
|
|||
require File.expand_path('../../../../spec_helper', __FILE__)
|
||||
require File.expand_path('../../fixtures/classes', __FILE__)
|
||||
|
||||
describe :method_equal, shared: true do
|
||||
before :each do
|
||||
@m = MethodSpecs::Methods.new
|
||||
@m_foo = @m.method(:foo)
|
||||
@m2 = MethodSpecs::Methods.new
|
||||
@a = MethodSpecs::A.new
|
||||
end
|
||||
|
||||
it "returns true if methods are the same" do
|
||||
m2 = @m.method(:foo)
|
||||
|
||||
@m_foo.send(@method, @m_foo).should be_true
|
||||
@m_foo.send(@method, m2).should be_true
|
||||
end
|
||||
|
||||
it "returns true on aliased methods" do
|
||||
m_bar = @m.method(:bar)
|
||||
|
||||
m_bar.send(@method, @m_foo).should be_true
|
||||
end
|
||||
|
||||
it "returns true if the two core methods are aliases" do
|
||||
s = "hello"
|
||||
a = s.method(:size)
|
||||
b = s.method(:length)
|
||||
a.send(@method, b).should be_true
|
||||
end
|
||||
|
||||
it "returns false on a method which is neither aliased nor the same method" do
|
||||
m2 = @m.method(:zero)
|
||||
|
||||
@m_foo.send(@method, m2).should be_false
|
||||
end
|
||||
|
||||
it "returns false for a method which is not bound to the same object" do
|
||||
m2_foo = @m2.method(:foo)
|
||||
a_baz = @a.method(:baz)
|
||||
|
||||
@m_foo.send(@method, m2_foo).should be_false
|
||||
@m_foo.send(@method, a_baz).should be_false
|
||||
end
|
||||
|
||||
it "returns false if the two methods are bound to the same object but were defined independently" do
|
||||
m2 = @m.method(:same_as_foo)
|
||||
@m_foo.send(@method, m2).should be_false
|
||||
end
|
||||
|
||||
it "returns true if a method was defined using the other one" do
|
||||
MethodSpecs::Methods.send :define_method, :defined_foo, MethodSpecs::Methods.instance_method(:foo)
|
||||
m2 = @m.method(:defined_foo)
|
||||
@m_foo.send(@method, m2).should be_true
|
||||
end
|
||||
|
||||
it "returns false if comparing a method defined via define_method and def" do
|
||||
defn = @m.method(:zero)
|
||||
defined = @m.method(:zero_defined_method)
|
||||
|
||||
defn.send(@method, defined).should be_false
|
||||
defined.send(@method, defn).should be_false
|
||||
end
|
||||
|
||||
describe 'missing methods' do
|
||||
it "returns true for the same method missing" do
|
||||
miss1 = @m.method(:handled_via_method_missing)
|
||||
miss1bis = @m.method(:handled_via_method_missing)
|
||||
miss2 = @m.method(:also_handled)
|
||||
|
||||
miss1.send(@method, miss1bis).should be_true
|
||||
miss1.send(@method, miss2).should be_false
|
||||
end
|
||||
|
||||
it 'calls respond_to_missing? with true to include private methods' do
|
||||
@m.should_receive(:respond_to_missing?).with(:some_missing_method, true).and_return(true)
|
||||
@m.method(:some_missing_method)
|
||||
end
|
||||
end
|
||||
|
||||
it "returns false if the two methods are bound to different objects, have the same names, and identical bodies" do
|
||||
a = MethodSpecs::Eql.instance_method(:same_body)
|
||||
b = MethodSpecs::Eql2.instance_method(:same_body)
|
||||
a.send(@method, b).should be_false
|
||||
end
|
||||
|
||||
it "returns false if the argument is not a Method object" do
|
||||
String.instance_method(:size).send(@method, 7).should be_false
|
||||
end
|
||||
|
||||
it "returns false if the argument is an unbound version of self" do
|
||||
method(:load).send(@method, method(:load).unbind).should be_false
|
||||
end
|
||||
end
|
34
spec/ruby/core/method/shared/to_s.rb
Normal file
34
spec/ruby/core/method/shared/to_s.rb
Normal file
|
@ -0,0 +1,34 @@
|
|||
require "#{File.dirname __FILE__}/../../../spec_helper"
|
||||
require "#{File.dirname __FILE__}/../fixtures/classes"
|
||||
|
||||
describe :method_to_s, shared: true do
|
||||
before :each do
|
||||
@m = MethodSpecs::MySub.new.method :bar
|
||||
@string = @m.send(@method).sub(/0x\w+/, '0xXXXXXX')
|
||||
end
|
||||
|
||||
it "returns a String" do
|
||||
@m.send(@method).should be_kind_of(String)
|
||||
end
|
||||
|
||||
it "returns a String for methods defined with attr_accessor" do
|
||||
m = MethodSpecs::Methods.new.method :attr
|
||||
m.send(@method).should be_kind_of(String)
|
||||
end
|
||||
|
||||
it "returns a String containing 'Method'" do
|
||||
@string.should =~ /\bMethod\b/
|
||||
end
|
||||
|
||||
it "returns a String containing the method name" do
|
||||
@string.should =~ /\#bar/
|
||||
end
|
||||
|
||||
it "returns a String containing the Module the method is defined in" do
|
||||
@string.should =~ /MethodSpecs::MyMod/
|
||||
end
|
||||
|
||||
it "returns a String containing the Module the method is referenced from" do
|
||||
@string.should =~ /MethodSpecs::MySub/
|
||||
end
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue