git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@8344 626c5289-ae23-0410-ae9c-e8d60b6d4f22
46 lines
910 B
Ruby
46 lines
910 B
Ruby
require 'example'
|
|
|
|
begin
|
|
begin
|
|
# Create an animal and zoo
|
|
tiger1 = Example::Animal.new("tiger1")
|
|
zoo = Example::Zoo.new
|
|
|
|
# At the animal to the zoo - this will transfer ownership
|
|
# of the underlying C++ object to the C++ zoo object
|
|
zoo.add_animal(tiger1)
|
|
|
|
# get the id of the tiger
|
|
id1 = tiger1.object_id
|
|
|
|
# Unset the tiger
|
|
tiger1 = nil
|
|
end
|
|
|
|
# Force a gc
|
|
GC.start
|
|
|
|
# Get the tiger and its id
|
|
tiger2 = zoo.get_animal(0)
|
|
id2 = tiger2.object_id
|
|
|
|
# The ids should not be the same
|
|
if id1==id2
|
|
raise RuntimeError, "Id's should not be the same"
|
|
end
|
|
|
|
zoo = nil
|
|
end
|
|
|
|
GC.start
|
|
|
|
# This method is no longer valid since the zoo freed the underlying
|
|
# C++ object
|
|
ok = false
|
|
begin
|
|
puts tiger2.get_name
|
|
rescue ObjectPreviouslyDeleted => error
|
|
ok = true
|
|
end
|
|
|
|
raise(RuntimeError, "Incorrect exception raised - should be ObjectPreviouslyDeleted") unless ok
|