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/