diff options
author | Lars Kanis <lars@greiz-reinsdorf.de> | 2020-07-17 18:42:36 +0200 |
---|---|---|
committer | Lars Kanis <lars@greiz-reinsdorf.de> | 2020-07-17 18:42:36 +0200 |
commit | 042e4247075915dca855ff9b25873b8dd61a377a (patch) | |
tree | 0077fa6d8fd5ff397782b86b515521fa16a86b90 /spec | |
parent | dcadb765e44a55829335effec89e0f6d18e17350 (diff) | |
download | ffi-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.rb | 7 |
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) |