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

ruby-changes:13794

From: yugui <ko1@a...>
Date: Sat, 31 Oct 2009 22:16:24 +0900 (JST)
Subject: [ruby-changes:13794] Ruby:r25591 (ruby_1_9_1): merges r24785 and r24833 from trunk into ruby_1_9_1, with small modification.

yugui	2009-10-31 22:04:48 +0900 (Sat, 31 Oct 2009)

  New Revision: 25591

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

  Log:
    merges r24785 and r24833 from trunk into ruby_1_9_1, with small modification.
    --
    * test/dl/test_{cfunc,ptr}.rb: added tests from Aaron Patterson.
      see [ruby-dev:39249].

  Added files:
    branches/ruby_1_9_1/test/dl/test_cfunc.rb
    branches/ruby_1_9_1/test/dl/test_cptr.rb
  Modified files:
    branches/ruby_1_9_1/ChangeLog
    branches/ruby_1_9_1/version.h

Index: ruby_1_9_1/ChangeLog
===================================================================
--- ruby_1_9_1/ChangeLog	(revision 25590)
+++ ruby_1_9_1/ChangeLog	(revision 25591)
@@ -1,3 +1,8 @@
+Tue Sep  8 08:32:30 2009  Nobuyoshi Nakada  <nobu@r...>
+
+	* test/dl/test_{cfunc,ptr}.rb: added tests from Aaron Patterson.
+	  see [ruby-dev:39249].
+
 Tue Mar  3 15:03:19 2009  Nobuyoshi Nakada  <nobu@r...>
 
 	* test/dl: moved from ext/dl/test.
Index: ruby_1_9_1/version.h
===================================================================
--- ruby_1_9_1/version.h	(revision 25590)
+++ ruby_1_9_1/version.h	(revision 25591)
@@ -1,5 +1,5 @@
 #define RUBY_VERSION "1.9.1"
-#define RUBY_PATCHLEVEL 316
+#define RUBY_PATCHLEVEL 317
 #define RUBY_VERSION_MAJOR 1
 #define RUBY_VERSION_MINOR 9
 #define RUBY_VERSION_TEENY 1
Index: ruby_1_9_1/test/dl/test_cfunc.rb
===================================================================
--- ruby_1_9_1/test/dl/test_cfunc.rb	(revision 0)
+++ ruby_1_9_1/test/dl/test_cfunc.rb	(revision 25591)
@@ -0,0 +1,59 @@
+require_relative 'test_base'
+require 'dl/func'
+
+module DL
+  class TestCFunc < TestBase
+    def setup
+      super
+      @func_name = 'strcpy'
+      @cf = CFunc.new(@libc[@func_name], TYPE_VOIDP, @func_name)
+    end
+
+    def test_new_ptr_type_name
+      assert_equal @func_name, @cf.name
+      assert @cf.name.tainted?, 'name should be tainted'
+      assert_equal :cdecl, @cf.calltype
+      assert_equal TYPE_VOIDP, @cf.ctype
+    end
+
+    def test_new_ptr
+      cf = CFunc.new(@libc['strcpy'])
+      assert_nil cf.name
+      assert_equal :cdecl, cf.calltype
+      assert_equal TYPE_VOID, cf.ctype
+    end
+
+    def test_name_should_be_duped
+      assert_equal @func_name, @cf.name
+      assert @cf.name.tainted?, 'name should be tainted'
+
+      name = @func_name.dup
+      @func_name << 'foo'
+
+      assert_equal name, @cf.name
+    end
+
+    def test_to_s
+      s = @cf.to_s
+      assert s.tainted?, 'to_s should be tainted'
+      assert_match(/ptr=#{sprintf("0x%x", @cf.ptr)}/, s)
+      assert_match(/name='#{@cf.name}'/, s)
+      assert_match(/type=#{@cf.ctype}/, s)
+    end
+
+    def test_inspect
+      assert_equal @cf.inspect, @cf.to_s
+    end
+
+    def test_to_i
+      assert_equal @cf.to_i, @cf.ptr
+    end
+
+    def test_last_error
+      f = Function.new(@cf, [TYPE_VOIDP, TYPE_VOIDP])
+      assert_nil CFunc.last_error
+      str = f.call("000", "123")
+      assert_not_nil CFunc.last_error
+    end
+  end
+end
Index: ruby_1_9_1/test/dl/test_cptr.rb
===================================================================
--- ruby_1_9_1/test/dl/test_cptr.rb	(revision 0)
+++ ruby_1_9_1/test/dl/test_cptr.rb	(revision 25591)
@@ -0,0 +1,18 @@
+require_relative 'test_base'
+
+module DL
+  class TestCPtr < TestBase
+    def test_free
+      ptr = CPtr.malloc(4)
+      assert_nil ptr.free
+    end
+
+    def test_free=
+      free = CFunc.new(@libc['free'], TYPE_VOID, 'free')
+      ptr = CPtr.malloc(4)
+      ptr.free = free
+
+      assert_equal free.ptr, ptr.free.ptr
+    end
+  end
+end

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

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