summaryrefslogtreecommitdiff
path: root/spec
diff options
context:
space:
mode:
authorLars Kanis <lars@greiz-reinsdorf.de>2020-07-17 18:42:36 +0200
committerLars Kanis <lars@greiz-reinsdorf.de>2020-07-17 18:42:36 +0200
commit042e4247075915dca855ff9b25873b8dd61a377a (patch)
tree0077fa6d8fd5ff397782b86b515521fa16a86b90 /spec
parentdcadb765e44a55829335effec89e0f6d18e17350 (diff)
downloadffi-042e4247075915dca855ff9b25873b8dd61a377a.tar.gz
Add an explicit spec for passsing a String to :pointer parameter
Diffstat (limited to 'spec')
-rw-r--r--spec/ffi/pointer_spec.rb7
1 files changed, 7 insertions, 0 deletions
diff --git a/spec/ffi/pointer_spec.rb b/spec/ffi/pointer_spec.rb
index 57bb2a8..97f3c5f 100644
--- a/spec/ffi/pointer_spec.rb
+++ b/spec/ffi/pointer_spec.rb
@@ -1,3 +1,4 @@
+# -*- encoding: utf-8 -*-
#
# This file is part of ruby-ffi.
# For licensing, see LICENSE.SPECS
@@ -15,6 +16,7 @@ module PointerTestLib
# NetBSD uses #define instead of typedef for these
attach_function :ptr_ret_int32_t, :ptr_ret___int32_t, [ :pointer, :int ], :int
end
+ attach_function :ptr_ret_int64_t, [ :pointer, :int ], :int64_t
attach_function :ptr_from_address, [ FFI::Platform::ADDRESS_SIZE == 32 ? :uint : :ulong_long ], :pointer
attach_function :ptr_set_pointer, [ :pointer, :int, :pointer ], :void
attach_function :ptr_ret_pointer, [ :pointer, :int ], :pointer
@@ -62,6 +64,11 @@ describe "Pointer" do
expect { PointerTestLib.ptr_ret_int32_t(0xfee1deadbeefcafebabe, 0) }.to raise_error(ArgumentError)
end
+ it "String can be used as a Pointer argument" do
+ s = "123\0abö"
+ expect( PointerTestLib.ptr_ret_int64_t(s, 0) ).to eq(s.unpack("q")[0])
+ end
+
it "#to_ptr" do
memory = FFI::MemoryPointer.new :pointer
expect(memory.to_ptr).to eq(memory)