add more tests for define_method

This commit is contained in:
Laurent Sansonetti
2012-09-26 14:40:56 +02:00
parent 2a8c923989
commit 2b7df372db
2 changed files with 51 additions and 17 deletions

View File

@@ -0,0 +1,51 @@
class TestDefineMethod
define_method :test1 { 42 }
define_method :test2 { |x| x + 100 }
define_method :test3 { |x, y| x + y }
define_method :test4 { |*ary| ary.inject(0) { |m, x| m + x } }
end
describe "define_method" do
it "defines pure-Ruby methods" do
obj = TestDefineMethod.new
obj.test1.should == 42
obj.test2(42).should == 142
obj.test3(40, 2).should == 42
obj.test4(10, 10, 10, 10, 1, 1).should == 42
end
end
module TestDefineModuleExtendSelfBefore
define_method :foo { 42 }
extend self
end
describe "define_method" do
it "defines methods that are copied upon before module inclusion" do
TestDefineModuleExtendSelfBefore.foo.should == 42
end
end
module TestDefineModuleExtendSelfAfter
extend self
define_method :foo { 42 }
end
describe "define_method" do
it "defines methods that are copied upon after module inclusion" do
TestDefineModuleExtendSelfAfter.foo.should == 42
end
end
module TestDefineMethodAlias
define_method :test { 42 }
alias_method :test2, :test
end
describe "define_method" do
it "defines methods that are copied upon aliasing" do
obj = TestDefineMethodAlias.new
obj.test.should == 42
obj.test2.should == 42
end
end

View File

@@ -220,20 +220,3 @@ describe "Properties implemented using forwarders" do
mr.maxPlayers.should == 42
end
end
class TestDefineMethod
define_method :test1 { 42 }
define_method :test2 { |x| x + 100 }
define_method :test3 { |x, y| x + y }
define_method :test4 { |*ary| ary.inject(0) { |m, x| m + x } }
end
describe "define_method" do
it "can be used to define pure-Ruby methods" do
obj = TestDefineMethod.new
obj.test1.should == 42
obj.test2(42).should == 142
obj.test3(40, 2).should == 42
obj.test4(10, 10, 10, 10, 1, 1).should == 42
end
end