Add SharedMemory#write_object and #read_object; add SharedMemoryIO helper.
This commit is contained in:
1 parent
cf6b821b17
commit
cc663a8d7f
3 files changed
+376
-1
No files matched your search
@@ -32,5 +32,30 @@ module ProcessShared
|
||||
|
||||
mem.get_int(0).must_equal(1234567)
|
||||
end
|
||||
|
||||
describe 'Object dump/load' do
|
||||
it 'writes serialized objects' do
|
||||
mem = SharedMemory.new(1024)
|
||||
pid = fork do
|
||||
mem.write_object(['a', 'b'])
|
||||
Kernel.exit!
|
||||
end
|
||||
::Process.wait(pid)
|
||||
mem.read_object.must_equal ['a', 'b']
|
||||
end
|
||||
|
||||
it 'raises IndexError when insufficient space' do
|
||||
mem = SharedMemory.new(2)
|
||||
proc { mem.write_object(['a', 'b']) }.must_raise(IndexError)
|
||||
end
|
||||
|
||||
it 'writes with an offset' do
|
||||
mem = SharedMemory.new(1024)
|
||||
mem.put_object(2, 'string')
|
||||
proc { mem.read_object }.must_raise(TypeError)
|
||||
proc { mem.get_object(0) }.must_raise(TypeError)
|
||||
mem.get_object(2).must_equal 'string'
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in new issue
Block a user