summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenoit Daloze <eregontp@gmail.com>2020-07-11 15:41:56 +0200
committerBenoit Daloze <eregontp@gmail.com>2020-07-11 15:46:08 +0200
commitddd36ae1c60a9bcacbfad6ebd98ee766e61e429e (patch)
treef13b68ac080c9ec38fc91f2375a43573e2634695
parentaa7db16ba59b005edb853b2791d9c43577419f6a (diff)
downloadffi-ddd36ae1c60a9bcacbfad6ebd98ee766e61e429e.tar.gz
Add specs for FFI::Pointer#write_string and #put_string
-rw-r--r--spec/ffi/string_spec.rb26
1 files changed, 26 insertions, 0 deletions
diff --git a/spec/ffi/string_spec.rb b/spec/ffi/string_spec.rb
index ade0d86..6b080e4 100644
--- a/spec/ffi/string_spec.rb
+++ b/spec/ffi/string_spec.rb
@@ -96,4 +96,30 @@ describe "String tests" do
ptrary.write_array_of_pointer(ary)
expect { ptrary.get_array_of_string(-1) }.to raise_error(IndexError)
end
+
+ describe "#write_string" do
+ it "does not write a final \\0 when given no length" do
+ ptr = FFI::MemoryPointer.new(8)
+ ptr.write_int64(-1)
+ ptr.write_string("abc")
+ expect(ptr.read_bytes(4)).to eq("abc\xFF".b)
+ end
+
+ it "does not write a final \\0 when given a length" do
+ ptr = FFI::MemoryPointer.new(8)
+ ptr.write_int64(-1)
+ ptr.write_string("abc", 3)
+ expect(ptr.read_bytes(4)).to eq("abc\xFF".b)
+ end
+ end
+
+ describe "#put_string" do
+ it "writes a final \\0" do
+ ptr = FFI::MemoryPointer.new(8)
+ ptr.write_int64(-1)
+ ptr.put_string(0, "abc")
+ expect(ptr.read_bytes(4)).to eq("abc\x00")
+ expect(ptr.read_string).to eq("abc")
+ end
+ end
end