mirror of
https://github.com/zhigang1992/RubyMotion.git
synced 2026-04-01 09:31:20 +08:00
add more tests for define_method
This commit is contained in:
51
test/test/spec/define_method_spec.rb
Normal file
51
test/test/spec/define_method_spec.rb
Normal 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
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user