diff options
author | Wayne Meissner <wmeissner@gmail.com> | 2013-03-28 08:17:43 +1000 |
---|---|---|
committer | Wayne Meissner <wmeissner@gmail.com> | 2013-03-28 08:17:43 +1000 |
commit | 2defaa0ba1deb8e90ba00796d73155d997031a13 (patch) | |
tree | b0f0ed66ae40a627c937ba1701a4f5841a4011d3 | |
parent | d42fe3e5abea6fce3f79f4b8db4728ba454d0f51 (diff) | |
download | ffi-2defaa0ba1deb8e90ba00796d73155d997031a13.tar.gz |
Add some Pointer#slice specs
-rw-r--r-- | spec/ffi/pointer_spec.rb | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/spec/ffi/pointer_spec.rb b/spec/ffi/pointer_spec.rb index f17a1e9..0652b05 100644 --- a/spec/ffi/pointer_spec.rb +++ b/spec/ffi/pointer_spec.rb @@ -212,5 +212,25 @@ describe "AutoPointer" do end end + describe "#slice" do + before(:each) do + @mptr = FFI::MemoryPointer.new(:char, 12) + @mptr.put_uint(0, 0x12345678) + @mptr.put_uint(4, 0xdeadbeef) + end + + it "contents of sliced pointer matches original pointer at offset" do + @mptr.slice(4, 4).get_uint(0).should == 0xdeadbeef + end + + it "modifying sliced pointer is reflected in original pointer" do + @mptr.slice(4, 4).put_uint(0, 0xfee1dead) + @mptr.get_uint(4).should == 0xfee1dead + end + + it "access beyond bounds should raise IndexError" do + lambda { @mptr.slice(4, 4).get_int(4) }.should raise_error(IndexError) + end + end end |