diff options
author | Benoit Daloze <eregontp@gmail.com> | 2020-07-11 15:41:56 +0200 |
---|---|---|
committer | Benoit Daloze <eregontp@gmail.com> | 2020-07-11 15:46:08 +0200 |
commit | ddd36ae1c60a9bcacbfad6ebd98ee766e61e429e (patch) | |
tree | f13b68ac080c9ec38fc91f2375a43573e2634695 | |
parent | aa7db16ba59b005edb853b2791d9c43577419f6a (diff) | |
download | ffi-ddd36ae1c60a9bcacbfad6ebd98ee766e61e429e.tar.gz |
Add specs for FFI::Pointer#write_string and #put_string
-rw-r--r-- | spec/ffi/string_spec.rb | 26 |
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 |