[前][次][番号順一覧][スレッド一覧]

ruby-changes:14161

From: tenderlove <ko1@a...>
Date: Thu, 3 Dec 2009 12:35:42 +0900 (JST)
Subject: [ruby-changes:14161] Ruby:r25978 (trunk): * test/dl/test_callback.rb (**): testing return values of dl callbacks

tenderlove	2009-12-03 12:04:27 +0900 (Thu, 03 Dec 2009)

  New Revision: 25978

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=25978

  Log:
    * test/dl/test_callback.rb (**): testing return values of dl callbacks

  Modified files:
    trunk/test/dl/test_callback.rb

Index: test/dl/test_callback.rb
===================================================================
--- test/dl/test_callback.rb	(revision 25977)
+++ test/dl/test_callback.rb	(revision 25978)
@@ -1,10 +1,33 @@
 require_relative 'test_base'
 require_relative '../ruby/envutil'
+require 'dl/callback'
+require 'dl/func'
 
 module DL
   class TestCallback < TestBase
     include DL
 
+    def test_callback_return_value
+      addr = set_callback(TYPE_VOIDP, 1) do |str|
+        str
+      end
+      func = CFunc.new(addr, TYPE_VOIDP, 'test')
+      f = Function.new(func, [TYPE_VOIDP])
+      ptr = CPtr['blah']
+      assert_equal ptr, f.call(ptr)
+    end
+
+    def test_callback_return_arbitrary
+      addr = set_callback(TYPE_VOIDP, 1) do |ptr|
+        CPtr['foo'].to_i
+      end
+      func = CFunc.new(addr, TYPE_VOIDP, 'test')
+      f = Function.new(func, [TYPE_VOIDP])
+
+      ptr = CPtr['foo']
+      assert_equal 'foo', f.call(ptr).to_s
+    end
+
     def test_callback_with_string
       called_with = nil
       addr = set_callback(TYPE_VOID, 1) do |str|

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]