mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* 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:
parent
c95cbc0cc5
commit
922bc54adb
3 changed files with 82 additions and 0 deletions
|
@ -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
59
test/dl/test_cfunc.rb
Normal 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
18
test/dl/test_cptr.rb
Normal 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
|
Loading…
Reference in a new issue