summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWayne Meissner <wmeissner@gmail.com>2013-03-28 08:17:43 +1000
committerWayne Meissner <wmeissner@gmail.com>2013-03-28 08:17:43 +1000
commit2defaa0ba1deb8e90ba00796d73155d997031a13 (patch)
treeb0f0ed66ae40a627c937ba1701a4f5841a4011d3
parentd42fe3e5abea6fce3f79f4b8db4728ba454d0f51 (diff)
downloadffi-2defaa0ba1deb8e90ba00796d73155d997031a13.tar.gz
Add some Pointer#slice specs
-rw-r--r--spec/ffi/pointer_spec.rb20
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