ruby-changes:44384
From: nobu <ko1@a...>
Date: Thu, 20 Oct 2016 16:59:48 +0900 (JST)
Subject: [ruby-changes:44384] nobu:r56457 (trunk): test_proc.rb: improve curry tests
nobu 2016-10-20 16:59:44 +0900 (Thu, 20 Oct 2016) New Revision: 56457 https://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=56457 Log: test_proc.rb: improve curry tests * test/ruby/test_proc.rb (test_curry): split. * test/ruby/test_proc.rb (test_curry_passed_block): simplify the assertion. * test/ruby/test_proc.rb (test_curry_with_trace): run all curry tests. Modified files: trunk/test/ruby/test_proc.rb Index: test/ruby/test_proc.rb =================================================================== --- test/ruby/test_proc.rb (revision 56456) +++ test/ruby/test_proc.rb (revision 56457) @@ -246,37 +246,47 @@ class TestProc < Test::Unit::TestCase https://github.com/ruby/ruby/blob/trunk/test/ruby/test_proc.rb#L246 assert_equal([false, false], m.call, "#{bug8341} nested without block") end - def test_curry + def test_curry_proc b = proc {|x, y, z| (x||0) + (y||0) + (z||0) } assert_equal(6, b.curry[1][2][3]) assert_equal(6, b.curry[1, 2][3, 4]) assert_equal(6, b.curry(5)[1][2][3][4][5]) assert_equal(6, b.curry(5)[1, 2][3, 4][5]) assert_equal(1, b.curry(1)[1]) + end + def test_curry_proc_splat b = proc {|x, y, z, *w| (x||0) + (y||0) + (z||0) + w.inject(0, &:+) } assert_equal(6, b.curry[1][2][3]) assert_equal(10, b.curry[1, 2][3, 4]) assert_equal(15, b.curry(5)[1][2][3][4][5]) assert_equal(15, b.curry(5)[1, 2][3, 4][5]) assert_equal(1, b.curry(1)[1]) + end + def test_curry_lambda b = lambda {|x, y, z| (x||0) + (y||0) + (z||0) } assert_equal(6, b.curry[1][2][3]) assert_raise(ArgumentError) { b.curry[1, 2][3, 4] } assert_raise(ArgumentError) { b.curry(5) } assert_raise(ArgumentError) { b.curry(1) } + end + def test_curry_lambda_splat b = lambda {|x, y, z, *w| (x||0) + (y||0) + (z||0) + w.inject(0, &:+) } assert_equal(6, b.curry[1][2][3]) assert_equal(10, b.curry[1, 2][3, 4]) assert_equal(15, b.curry(5)[1][2][3][4][5]) assert_equal(15, b.curry(5)[1, 2][3, 4][5]) assert_raise(ArgumentError) { b.curry(1) } + end + def test_curry_no_arguments b = proc { :foo } assert_equal(:foo, b.curry[]) + end + def test_curry_given_blocks b = lambda {|x, y, &blk| blk.call(x + y) }.curry b = b.call(2) { raise } b = b.call(3) {|x| x + 4 } @@ -330,16 +340,11 @@ class TestProc < Test::Unit::TestCase https://github.com/ruby/ruby/blob/trunk/test/ruby/test_proc.rb#L340 assert_equal(fib, [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]) end - def test_curry_from_knownbug + def test_curry_passed_block a = lambda {|x, y, &b| b } b = a.curry[1] - assert_equal(:ok, - if b.call(2){} == nil - :ng - else - :ok - end, 'moved from btest/knownbug, [ruby-core:15551]') + assert_not_nil(b.call(2){}, '[ruby-core:15551]: passed block to curried block') end def test_curry_instance_exec @@ -1231,7 +1236,10 @@ class TestProc < Test::Unit::TestCase https://github.com/ruby/ruby/blob/trunk/test/ruby/test_proc.rb#L1236 def test_curry_with_trace # bug3751 = '[ruby-core:31871]' set_trace_func(proc {}) - test_curry + methods.grep(/\Atest_curry/) do |test| + next if test == __method__ + __send__(test) + end ensure set_trace_func(nil) end -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/