* test/dl/test_{cfunc,ptr}.rb: added tests from Aaron Patterson.

see [ruby-dev:39249].


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24785 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nobu 2009-09-07 23:32:32 +00:00
parent c95cbc0cc5
commit 922bc54adb
3 changed files with 82 additions and 0 deletions

View File

@ -1,3 +1,8 @@
Tue Sep 8 08:32:30 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
* 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@ruby-lang.org>
* io.c (rb_io_tell): adjustment for ungotten data.

59
test/dl/test_cfunc.rb Normal file
View File

@ -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

18
test/dl/test_cptr.rb Normal file
View File

@ -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