summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2003-11-27 19:45:17 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2003-11-27 19:45:17 +0000
commita017b0cc8aea236600d47ff04cd829f84499f414 (patch)
treea5e275d170fa3f353fe037167fdc981cddcd0d84 /test
parent4148ae45cf820258788c8b847125214dd66160aa (diff)
* test/ruby/test_proc.rb (test_arity): added.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@5044 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test')
-rw-r--r--test/ruby/test_proc.rb52
1 files changed, 39 insertions, 13 deletions
diff --git a/test/ruby/test_proc.rb b/test/ruby/test_proc.rb
index 2076f7bbac..99e2a4c7e9 100644
--- a/test/ruby/test_proc.rb
+++ b/test/ruby/test_proc.rb
@@ -4,21 +4,24 @@ $KCODE = 'none'
class TestProc < Test::Unit::TestCase
def test_proc
- $proc = proc{|i| i}
- assert_equal(2, $proc.call(2))
- assert_equal(3, $proc.call(3))
+ p1 = proc{|i| i}
+ assert_equal(2, p1.call(2))
+ assert_equal(3, p1.call(3))
- $proc = proc{|i| i*2}
- assert_equal(4, $proc.call(2))
- assert_equal(6, $proc.call(3))
+ p1 = proc{|i| i*2}
+ assert_equal(4, p1.call(2))
+ assert_equal(6, p1.call(3))
+
+ p2 = nil
+ x=0
proc{
iii=5 # nested local variable
- $proc = proc{|i|
+ p1 = proc{|i|
iii = i
}
- $proc2 = proc {
- $x = iii # nested variables shared by procs
+ p2 = proc {
+ x = iii # nested variables shared by procs
}
# scope of nested variables
assert(defined?(iii))
@@ -37,9 +40,32 @@ class TestProc < Test::Unit::TestCase
dyna_var_check
break
}
- $x=0
- $proc.call(5)
- $proc2.call
- assert_equal(5, $x)
+ p1.call(5)
+ p2.call
+ assert_equal(5, x)
+ end
+
+ def assert_arity(n)
+ meta = class << self; self; end
+ meta.class_eval {define_method(:foo, Proc.new)}
+ assert_equal(n, method(:foo).arity)
+ end
+
+ def test_arity
+ assert_equal(-1, proc{}.arity)
+ assert_equal(0, proc{||}.arity)
+ assert_equal(1, proc{|x|}.arity)
+ assert_equal(2, proc{|x, y|}.arity)
+ assert_equal(-2, proc{|x, *y|}.arity)
+ assert_equal(-1, proc{|*x|}.arity)
+ assert_equal(-1, proc{|*|}.arity)
+
+ assert_arity(-1) {}
+ assert_arity(0) {||}
+ assert_arity(1) {|x|}
+ assert_arity(2) {|x, y|}
+ assert_arity(-2) {|x, *y|}
+ assert_arity(-1) {|*x|}
+ assert_arity(-1) {|*|}
end
end