From 2b7df372dbaf984631e41c6ef9dfb7155d9006d7 Mon Sep 17 00:00:00 2001 From: Laurent Sansonetti Date: Wed, 26 Sep 2012 14:40:56 +0200 Subject: [PATCH] add more tests for define_method --- test/test/spec/define_method_spec.rb | 51 ++++++++++++++++++++++++++++ test/test/spec/main_spec.rb | 17 ---------- 2 files changed, 51 insertions(+), 17 deletions(-) create mode 100644 test/test/spec/define_method_spec.rb diff --git a/test/test/spec/define_method_spec.rb b/test/test/spec/define_method_spec.rb new file mode 100644 index 00000000..c3f559e4 --- /dev/null +++ b/test/test/spec/define_method_spec.rb @@ -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 diff --git a/test/test/spec/main_spec.rb b/test/test/spec/main_spec.rb index e5e77b33..9fd4e818 100644 --- a/test/test/spec/main_spec.rb +++ b/test/test/spec/main_spec.rb @@ -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