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

ruby-changes:13039

From: nobu <ko1@a...>
Date: Tue, 8 Sep 2009 08:32:47 +0900 (JST)
Subject: [ruby-changes:13039] Ruby:r24785 (trunk): * test/dl/test_{cfunc,ptr}.rb: added tests from Aaron Patterson.

nobu	2009-09-08 08:32:32 +0900 (Tue, 08 Sep 2009)

  New Revision: 24785

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

  Log:
    * test/dl/test_{cfunc,ptr}.rb: added tests from Aaron Patterson.
      see [ruby-dev:39249].

  Added files:
    trunk/test/dl/test_cfunc.rb
    trunk/test/dl/test_cptr.rb
  Modified files:
    trunk/ChangeLog

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 24784)
+++ ChangeLog	(revision 24785)
@@ -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].
+
 Mon Sep  7 17:22:59 2009  Nobuyoshi Nakada  <nobu@r...>
 
 	* io.c (rb_io_tell): adjustment for ungotten data.
Index: test/dl/test_cfunc.rb
===================================================================
--- test/dl/test_cfunc.rb	(revision 0)
+++ test/dl/test_cfunc.rb	(revision 24785)
@@ -0,0 +1,59 @@
+require 'test_base'
+require 'dl/func'
+
+module DL
+  class TestCFunc < TestBase
+    def setup
+      super
+      @name = 'strcpy'
+      @cf = CFunc.new(@libc[@name], TYPE_VOIDP, @name)
+    end
+
+    def test_new_ptr_type_name
+      assert_equal @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 @name, @cf.name
+      assert @cf.name.tainted?, 'name should be tainted'
+
+      name = @name.dup
+      @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

Property changes on: test/dl/test_cfunc.rb
___________________________________________________________________
Name: svn:eol-style
   + LF
Name: svn:keywords
   + Author Id Revision

Index: test/dl/test_cptr.rb
===================================================================
--- test/dl/test_cptr.rb	(revision 0)
+++ test/dl/test_cptr.rb	(revision 24785)
@@ -0,0 +1,18 @@
+require '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

Property changes on: test/dl/test_cptr.rb
___________________________________________________________________
Name: svn:eol-style
   + LF
Name: svn:keywords
   + Author Id Revision


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

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