Merge branch 'master' into doxygen
The way Python docstrings are indented has changed on master, so use the standard inspect module in Python autodoc unit test to ignore the differences in their indentation level between -builtin and non-builtin cases to make the test still pass with the branch version, which avoids the use of different (but almost identical) values in the test itself.
This commit is contained in:
commit
e668c47b70
1094 changed files with 39390 additions and 11483 deletions
|
|
@ -11,7 +11,6 @@ top_srcdir = @top_srcdir@
|
|||
top_builddir = @top_builddir@
|
||||
|
||||
CPP_TEST_CASES = \
|
||||
li_cdata \
|
||||
li_cstring \
|
||||
li_factory \
|
||||
li_std_functors \
|
||||
|
|
@ -22,6 +21,7 @@ CPP_TEST_CASES = \
|
|||
li_std_stack \
|
||||
primitive_types \
|
||||
ruby_keywords \
|
||||
ruby_minherit_shared_ptr \
|
||||
ruby_naming \
|
||||
ruby_track_objects \
|
||||
ruby_track_objects_directors \
|
||||
|
|
@ -30,8 +30,8 @@ CPP_TEST_CASES = \
|
|||
# stl_new
|
||||
|
||||
C_TEST_CASES += \
|
||||
li_cdata \
|
||||
li_cstring
|
||||
li_cstring \
|
||||
ruby_manual_proxy \
|
||||
|
||||
include $(srcdir)/../common.mk
|
||||
|
||||
|
|
@ -61,7 +61,7 @@ ruby_naming.cpptest: SWIGOPT += -autorename
|
|||
# a file is found which has _runme.rb appended after the testcase name.
|
||||
run_testcase = \
|
||||
if [ -f $(SCRIPTDIR)/$(SCRIPTPREFIX)$*$(SCRIPTSUFFIX) ]; then \
|
||||
env LD_LIBRARY_PATH=.:$$LD_LIBRARY_PATH $(RUNTOOL) $(RUBY) -I$(srcdir):. $(SCRIPTDIR)/$(SCRIPTPREFIX)$*$(SCRIPTSUFFIX); \
|
||||
env LD_LIBRARY_PATH=.:$$LD_LIBRARY_PATH $(RUNTOOL) $(RUBY) $(RUBYFLAGS) -I$(srcdir):. $(SCRIPTDIR)/$(SCRIPTPREFIX)$*$(SCRIPTSUFFIX); \
|
||||
fi
|
||||
|
||||
# Clean
|
||||
|
|
@ -69,4 +69,4 @@ run_testcase = \
|
|||
@exit 0
|
||||
|
||||
clean:
|
||||
$(MAKE) -f $(top_builddir)/$(EXAMPLES)/Makefile SRCDIR="$(SRCDIR)" ruby_clean
|
||||
$(MAKE) -f $(top_builddir)/$(EXAMPLES)/Makefile SRCDIR='$(SRCDIR)' ruby_clean
|
||||
|
|
|
|||
134
Examples/test-suite/ruby/cpp11_li_std_array_runme.rb
Normal file
134
Examples/test-suite/ruby/cpp11_li_std_array_runme.rb
Normal file
|
|
@ -0,0 +1,134 @@
|
|||
#!/usr/bin/env ruby
|
||||
#
|
||||
# Put description here
|
||||
#
|
||||
#
|
||||
#
|
||||
#
|
||||
#
|
||||
|
||||
require 'swig_assert'
|
||||
|
||||
require 'cpp11_li_std_array'
|
||||
|
||||
include Cpp11_li_std_array
|
||||
|
||||
|
||||
def failed(a, b, msg)
|
||||
raise RuntimeError, "#{msg} #{a} #{b}"
|
||||
end
|
||||
|
||||
def compare_sequences(a, b)
|
||||
if a.size != b.size
|
||||
failed(a, b, "different sizes")
|
||||
end
|
||||
for i in 0..a.size-1
|
||||
failed(a, b, "elements are different:") if a[i] != b[i]
|
||||
end
|
||||
end
|
||||
|
||||
def compare_containers(rubyarray, swigarray)
|
||||
compare_sequences(rubyarray, swigarray)
|
||||
end
|
||||
|
||||
def setslice_exception(swigarray, newval)
|
||||
begin
|
||||
swigarray[0..swigarray.size] = newval
|
||||
raise RuntimeError, "swigarray[] = #{newval} missed set exception for swigarray: #{swigarray}"
|
||||
rescue ArgumentError => e
|
||||
# print "exception: #{e}"
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
# Check std::array has similar behaviour to a Ruby array
|
||||
# except it is not resizable
|
||||
|
||||
ps = [0, 1, 2, 3, 4, 5]
|
||||
|
||||
ai = ArrayInt6.new(ps)
|
||||
|
||||
compare_containers(ps, ai)
|
||||
|
||||
# slices
|
||||
compare_containers(ps[0..5], ai[0..5])
|
||||
compare_containers(ps[-6..-1], ai[-6..-1])
|
||||
compare_containers(ps[0..10], ai[0..10])
|
||||
|
||||
# Reverse (.reverse is not provided)
|
||||
rev = []
|
||||
ai.reverse_each { |i| rev.push i }
|
||||
compare_containers(ps.reverse, rev)
|
||||
|
||||
# Modify content
|
||||
for i in 0..ps.size-1
|
||||
ps[i] = ps[i] * 10
|
||||
ai[i] = ai[i] * 10
|
||||
end
|
||||
compare_containers(ps, ai)
|
||||
|
||||
# Empty
|
||||
ai = ArrayInt6.new()
|
||||
compare_containers([0, 0, 0, 0, 0, 0], ai)
|
||||
|
||||
# Set slice
|
||||
newvals = [10, 20, 30, 40, 50, 60]
|
||||
ai[0, 6] = newvals
|
||||
compare_containers(ai, newvals)
|
||||
|
||||
ai[-6, 6] = newvals
|
||||
compare_containers(ai, newvals)
|
||||
|
||||
setslice_exception(ai, [1, 2, 3, 4, 5, 6, 7])
|
||||
setslice_exception(ai, [1, 2, 3, 4, 5])
|
||||
setslice_exception(ai, [1, 2, 3, 4])
|
||||
setslice_exception(ai, [1, 2, 3])
|
||||
setslice_exception(ai, [1, 2])
|
||||
setslice_exception(ai, [1])
|
||||
setslice_exception(ai, [])
|
||||
|
||||
# Check return
|
||||
compare_containers(arrayOutVal(), [-2, -1, 0, 0, 1, 2])
|
||||
compare_containers(arrayOutConstRef(), [-2, -1, 0, 0, 1, 2])
|
||||
compare_containers(arrayOutRef(), [-2, -1, 0, 0, 1, 2])
|
||||
compare_containers(arrayOutPtr(), [-2, -1, 0, 0, 1, 2])
|
||||
|
||||
# Check passing arguments
|
||||
ai = arrayInVal([9, 8, 7, 6, 5, 4])
|
||||
compare_containers(ai, [90, 80, 70, 60, 50, 40])
|
||||
|
||||
ai = arrayInConstRef([9, 8, 7, 6, 5, 4])
|
||||
compare_containers(ai, [90, 80, 70, 60, 50, 40])
|
||||
|
||||
ai = ArrayInt6.new([9, 8, 7, 6, 5, 4])
|
||||
arrayInRef(ai)
|
||||
compare_containers(ai, [90, 80, 70, 60, 50, 40])
|
||||
|
||||
ai = ArrayInt6.new([9, 8, 7, 6, 5, 4])
|
||||
arrayInPtr(ai)
|
||||
compare_containers(ai, [90, 80, 70, 60, 50, 40])
|
||||
|
||||
# indexing
|
||||
ai = ArrayInt6.new([9, 8, 7, 6, 5, 4])
|
||||
swig_assert_equal(ai[0], 9, binding)
|
||||
swig_assert_equal(ai[5], 4, binding)
|
||||
swig_assert_equal(ai[6], nil, binding)
|
||||
swig_assert_equal(ai[-7], nil, binding)
|
||||
|
||||
# fill
|
||||
ai.fill(111)
|
||||
compare_containers(ai, [111, 111, 111, 111, 111, 111])
|
||||
|
||||
# various
|
||||
ai = ArrayInt6.new([9, 8, 7, 6, 5, 4])
|
||||
swig_assert(ai.include? 9)
|
||||
swig_assert(!ai.include?(99))
|
||||
swig_assert(ai.kind_of? ArrayInt6)
|
||||
swig_assert(ai.find {|x| x == 6 } == 6)
|
||||
swig_assert(ai.find {|x| x == 66 } == nil)
|
||||
swig_assert(ai.respond_to?(:each))
|
||||
swig_assert(ai.respond_to?(:each_with_index))
|
||||
|
||||
ai = [0, 10, 20, 30, 40, 50]
|
||||
ai.each_with_index { |e,i| swig_assert(e/10 == i) }
|
||||
|
||||
54
Examples/test-suite/ruby/director_smartptr_runme.rb
Normal file
54
Examples/test-suite/ruby/director_smartptr_runme.rb
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
#!/usr/bin/env ruby
|
||||
#
|
||||
# Put description here
|
||||
#
|
||||
#
|
||||
#
|
||||
#
|
||||
#
|
||||
|
||||
require 'director_smartptr'
|
||||
|
||||
include Director_smartptr
|
||||
|
||||
class Director_smartptr_MyBarFoo < Foo
|
||||
|
||||
def ping()
|
||||
return "director_smartptr_MyBarFoo.ping()"
|
||||
end
|
||||
|
||||
def pong()
|
||||
return "director_smartptr_MyBarFoo.pong();" + ping()
|
||||
end
|
||||
|
||||
def upcall(fooBarPtr)
|
||||
return "override;" + fooBarPtr.FooBarDo()
|
||||
end
|
||||
|
||||
def makeFoo()
|
||||
return Foo.new()
|
||||
end
|
||||
end
|
||||
|
||||
def check(got, expected)
|
||||
if (got != expected)
|
||||
raise RuntimeError, "Failed, got: #{got} expected: #{expected}"
|
||||
end
|
||||
end
|
||||
|
||||
fooBar = Director_smartptr::FooBar.new()
|
||||
|
||||
myBarFoo = Director_smartptr_MyBarFoo.new()
|
||||
check(myBarFoo.ping(), "director_smartptr_MyBarFoo.ping()")
|
||||
check(Foo.callPong(myBarFoo), "director_smartptr_MyBarFoo.pong();director_smartptr_MyBarFoo.ping()")
|
||||
check(Foo.callUpcall(myBarFoo, fooBar), "override;Bar::Foo2::Foo2Bar()")
|
||||
|
||||
myFoo = myBarFoo.makeFoo()
|
||||
check(myFoo.pong(), "Foo::pong();Foo::ping()")
|
||||
check(Foo.callPong(myFoo), "Foo::pong();Foo::ping()")
|
||||
check(myFoo.upcall(FooBar.new()), "Bar::Foo2::Foo2Bar()")
|
||||
|
||||
myFoo2 = Foo.new().makeFoo()
|
||||
check(myFoo2.pong(), "Foo::pong();Foo::ping()")
|
||||
check(Foo.callPong(myFoo2), "Foo::pong();Foo::ping()")
|
||||
check(myFoo2.upcall(FooBar.new()), "Bar::Foo2::Foo2Bar()")
|
||||
32
Examples/test-suite/ruby/li_boost_shared_ptr_bits_runme.rb
Normal file
32
Examples/test-suite/ruby/li_boost_shared_ptr_bits_runme.rb
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
require 'li_boost_shared_ptr_bits'
|
||||
require 'swig_gc'
|
||||
|
||||
v = Li_boost_shared_ptr_bits::VectorIntHolder.new()
|
||||
v.push(Li_boost_shared_ptr_bits::IntHolder.new(11))
|
||||
v.push(Li_boost_shared_ptr_bits::IntHolder.new(22))
|
||||
v.push(Li_boost_shared_ptr_bits::IntHolder.new(33))
|
||||
|
||||
sum = Li_boost_shared_ptr_bits::sum(v)
|
||||
if (sum != 66)
|
||||
raise RuntimeError, "sum is wrong"
|
||||
end
|
||||
|
||||
hidden = Li_boost_shared_ptr_bits::HiddenDestructor.create()
|
||||
GC.track_class = Li_boost_shared_ptr_bits::HiddenPrivateDestructor
|
||||
GC.stats if $VERBOSE
|
||||
hidden = nil
|
||||
GC.start
|
||||
|
||||
hiddenPrivate = Li_boost_shared_ptr_bits::HiddenPrivateDestructor.create()
|
||||
if (Li_boost_shared_ptr_bits::HiddenPrivateDestructor.DeleteCount != 0)
|
||||
# GC doesn't always run
|
||||
# raise RuntimeError, "Count should be zero"
|
||||
end
|
||||
|
||||
GC.stats if $VERBOSE
|
||||
hiddenPrivate = nil
|
||||
GC.start
|
||||
if (Li_boost_shared_ptr_bits::HiddenPrivateDestructor.DeleteCount != 1)
|
||||
# GC doesn't always run
|
||||
# raise RuntimeError, "Count should be one"
|
||||
end
|
||||
614
Examples/test-suite/ruby/li_boost_shared_ptr_runme.rb
Normal file
614
Examples/test-suite/ruby/li_boost_shared_ptr_runme.rb
Normal file
|
|
@ -0,0 +1,614 @@
|
|||
require 'li_boost_shared_ptr'
|
||||
require 'swig_gc'
|
||||
|
||||
#debug = $VERBOSE
|
||||
debug = false
|
||||
|
||||
# simple shared_ptr usage - created in C++
|
||||
|
||||
|
||||
class Li_boost_shared_ptr_runme
|
||||
|
||||
def main(debug)
|
||||
if (debug)
|
||||
puts "Started"
|
||||
end
|
||||
|
||||
Li_boost_shared_ptr::debug_shared = debug
|
||||
|
||||
# Change loop count to run for a long time to monitor memory
|
||||
loopCount = 1 # 5000
|
||||
1.upto(loopCount) do
|
||||
self.runtest()
|
||||
end
|
||||
|
||||
# Expect 1 instance - the one global variable (GlobalValue)
|
||||
GC.track_class = Li_boost_shared_ptr::Klass
|
||||
invokeGC("Final GC")
|
||||
|
||||
# Actual count is 3 due to memory leaks calling rb_raise in the call to Li_boost_shared_ptr::valuetest(nil)
|
||||
# as setjmp/longjmp are used thereby failing to call destructors of Klass instances on the stack in _wrap_valuetest
|
||||
# This is a generic problem in Ruby wrappers, not shared_ptr specific
|
||||
# expectedCount = 1
|
||||
expectedCount = 3
|
||||
actualCount = Li_boost_shared_ptr::Klass.getTotal_count()
|
||||
if (actualCount != expectedCount)
|
||||
# raise RuntimeError, "GC failed to run (li_boost_shared_ptr). Expected count: #{expectedCount} Actual count: #{actualCount}"
|
||||
puts "GC failed to run (li_boost_shared_ptr). Expected count: #{expectedCount} Actual count: #{actualCount}"
|
||||
end
|
||||
|
||||
wrapper_count = Li_boost_shared_ptr::shared_ptr_wrapper_count()
|
||||
if (wrapper_count != Li_boost_shared_ptr.NOT_COUNTING)
|
||||
# Expect 1 instance - the one global variable (GlobalSmartValue)
|
||||
if (wrapper_count != 1)
|
||||
raise RuntimeError, "shared_ptr wrapper count=#{wrapper_count}"
|
||||
end
|
||||
end
|
||||
|
||||
if (debug)
|
||||
puts "Finished"
|
||||
end
|
||||
end
|
||||
|
||||
def invokeGC(debug_msg)
|
||||
puts "invokeGC #{debug_msg} start" if $VERBOSE
|
||||
GC.stats if $VERBOSE
|
||||
GC.start
|
||||
puts "invokeGC #{debug_msg} end" if $VERBOSE
|
||||
end
|
||||
|
||||
def runtest
|
||||
# simple shared_ptr usage - created in C++
|
||||
k = Li_boost_shared_ptr::Klass.new("me oh my")
|
||||
val = k.getValue()
|
||||
self.verifyValue("me oh my", val)
|
||||
self.verifyCount(1, k)
|
||||
|
||||
# simple shared_ptr usage - not created in C++
|
||||
k = Li_boost_shared_ptr::factorycreate()
|
||||
val = k.getValue()
|
||||
self.verifyValue("factorycreate", val)
|
||||
self.verifyCount(1, k)
|
||||
|
||||
# pass by shared_ptr
|
||||
k = Li_boost_shared_ptr::Klass.new("me oh my")
|
||||
kret = Li_boost_shared_ptr::smartpointertest(k)
|
||||
val = kret.getValue()
|
||||
self.verifyValue("me oh my smartpointertest", val)
|
||||
self.verifyCount(2, k)
|
||||
self.verifyCount(2, kret)
|
||||
|
||||
# pass by shared_ptr pointer
|
||||
k = Li_boost_shared_ptr::Klass.new("me oh my")
|
||||
kret = Li_boost_shared_ptr::smartpointerpointertest(k)
|
||||
val = kret.getValue()
|
||||
self.verifyValue("me oh my smartpointerpointertest", val)
|
||||
self.verifyCount(2, k)
|
||||
self.verifyCount(2, kret)
|
||||
|
||||
# pass by shared_ptr reference
|
||||
k = Li_boost_shared_ptr::Klass.new("me oh my")
|
||||
kret = Li_boost_shared_ptr::smartpointerreftest(k)
|
||||
val = kret.getValue()
|
||||
self.verifyValue("me oh my smartpointerreftest", val)
|
||||
self.verifyCount(2, k)
|
||||
self.verifyCount(2, kret)
|
||||
|
||||
# pass by shared_ptr pointer reference
|
||||
k = Li_boost_shared_ptr::Klass.new("me oh my")
|
||||
kret = Li_boost_shared_ptr::smartpointerpointerreftest(k)
|
||||
val = kret.getValue()
|
||||
self.verifyValue("me oh my smartpointerpointerreftest", val)
|
||||
self.verifyCount(2, k)
|
||||
self.verifyCount(2, kret)
|
||||
|
||||
# const pass by shared_ptr
|
||||
k = Li_boost_shared_ptr::Klass.new("me oh my")
|
||||
kret = Li_boost_shared_ptr::constsmartpointertest(k)
|
||||
val = kret.getValue()
|
||||
self.verifyValue("me oh my", val)
|
||||
self.verifyCount(2, k)
|
||||
self.verifyCount(2, kret)
|
||||
|
||||
# const pass by shared_ptr pointer
|
||||
k = Li_boost_shared_ptr::Klass.new("me oh my")
|
||||
kret = Li_boost_shared_ptr::constsmartpointerpointertest(k)
|
||||
val = kret.getValue()
|
||||
self.verifyValue("me oh my", val)
|
||||
self.verifyCount(2, k)
|
||||
self.verifyCount(2, kret)
|
||||
|
||||
# const pass by shared_ptr reference
|
||||
k = Li_boost_shared_ptr::Klass.new("me oh my")
|
||||
kret = Li_boost_shared_ptr::constsmartpointerreftest(k)
|
||||
val = kret.getValue()
|
||||
self.verifyValue("me oh my", val)
|
||||
self.verifyCount(2, k)
|
||||
self.verifyCount(2, kret)
|
||||
|
||||
# pass by value
|
||||
k = Li_boost_shared_ptr::Klass.new("me oh my")
|
||||
kret = Li_boost_shared_ptr::valuetest(k)
|
||||
val = kret.getValue()
|
||||
self.verifyValue("me oh my valuetest", val)
|
||||
self.verifyCount(1, k)
|
||||
self.verifyCount(1, kret)
|
||||
|
||||
# pass by pointer
|
||||
k = Li_boost_shared_ptr::Klass.new("me oh my")
|
||||
kret = Li_boost_shared_ptr::pointertest(k)
|
||||
val = kret.getValue()
|
||||
self.verifyValue("me oh my pointertest", val)
|
||||
self.verifyCount(1, k)
|
||||
self.verifyCount(1, kret)
|
||||
|
||||
# pass by reference
|
||||
k = Li_boost_shared_ptr::Klass.new("me oh my")
|
||||
kret = Li_boost_shared_ptr::reftest(k)
|
||||
val = kret.getValue()
|
||||
self.verifyValue("me oh my reftest", val)
|
||||
self.verifyCount(1, k)
|
||||
self.verifyCount(1, kret)
|
||||
|
||||
# pass by pointer reference
|
||||
k = Li_boost_shared_ptr::Klass.new("me oh my")
|
||||
kret = Li_boost_shared_ptr::pointerreftest(k)
|
||||
val = kret.getValue()
|
||||
self.verifyValue("me oh my pointerreftest", val)
|
||||
self.verifyCount(1, k)
|
||||
self.verifyCount(1, kret)
|
||||
|
||||
# null tests
|
||||
k = nil
|
||||
|
||||
if (Li_boost_shared_ptr::smartpointertest(k) != nil)
|
||||
raise RuntimeError, "return was not null"
|
||||
end
|
||||
|
||||
if (Li_boost_shared_ptr::smartpointerpointertest(k) != nil)
|
||||
raise RuntimeError, "return was not null"
|
||||
end
|
||||
|
||||
if (Li_boost_shared_ptr::smartpointerreftest(k) != nil)
|
||||
raise RuntimeError, "return was not null"
|
||||
end
|
||||
|
||||
if (Li_boost_shared_ptr::smartpointerpointerreftest(k) != nil)
|
||||
raise RuntimeError, "return was not null"
|
||||
end
|
||||
|
||||
if (Li_boost_shared_ptr::nullsmartpointerpointertest(nil) != "null pointer")
|
||||
raise RuntimeError, "not null smartpointer pointer"
|
||||
end
|
||||
|
||||
begin
|
||||
Li_boost_shared_ptr::valuetest(k)
|
||||
raise RuntimeError, "Failed to catch null pointer"
|
||||
rescue ArgumentError
|
||||
end
|
||||
|
||||
if (Li_boost_shared_ptr::pointertest(k) != nil)
|
||||
raise RuntimeError, "return was not null"
|
||||
end
|
||||
|
||||
begin
|
||||
Li_boost_shared_ptr::reftest(k)
|
||||
raise RuntimeError, "Failed to catch null pointer"
|
||||
rescue ArgumentError
|
||||
end
|
||||
|
||||
# $owner
|
||||
k = Li_boost_shared_ptr::pointerownertest()
|
||||
val = k.getValue()
|
||||
self.verifyValue("pointerownertest", val)
|
||||
self.verifyCount(1, k)
|
||||
k = Li_boost_shared_ptr::smartpointerpointerownertest()
|
||||
val = k.getValue()
|
||||
self.verifyValue("smartpointerpointerownertest", val)
|
||||
self.verifyCount(1, k)
|
||||
|
||||
# //////////////////////////////// Derived class //////////////////////
|
||||
# derived pass by shared_ptr
|
||||
k = Li_boost_shared_ptr::KlassDerived.new("me oh my")
|
||||
kret = Li_boost_shared_ptr::derivedsmartptrtest(k)
|
||||
val = kret.getValue()
|
||||
self.verifyValue("me oh my derivedsmartptrtest-Derived", val)
|
||||
self.verifyCount(2, k)
|
||||
self.verifyCount(2, kret)
|
||||
|
||||
# derived pass by shared_ptr pointer
|
||||
k = Li_boost_shared_ptr::KlassDerived.new("me oh my")
|
||||
kret = Li_boost_shared_ptr::derivedsmartptrpointertest(k)
|
||||
val = kret.getValue()
|
||||
self.verifyValue("me oh my derivedsmartptrpointertest-Derived", val)
|
||||
self.verifyCount(2, k)
|
||||
self.verifyCount(2, kret)
|
||||
|
||||
# derived pass by shared_ptr ref
|
||||
k = Li_boost_shared_ptr::KlassDerived.new("me oh my")
|
||||
kret = Li_boost_shared_ptr::derivedsmartptrreftest(k)
|
||||
val = kret.getValue()
|
||||
self.verifyValue("me oh my derivedsmartptrreftest-Derived", val)
|
||||
self.verifyCount(2, k)
|
||||
self.verifyCount(2, kret)
|
||||
|
||||
# derived pass by shared_ptr pointer ref
|
||||
k = Li_boost_shared_ptr::KlassDerived.new("me oh my")
|
||||
kret = Li_boost_shared_ptr::derivedsmartptrpointerreftest(k)
|
||||
val = kret.getValue()
|
||||
self.verifyValue("me oh my derivedsmartptrpointerreftest-Derived", val)
|
||||
self.verifyCount(2, k)
|
||||
self.verifyCount(2, kret)
|
||||
|
||||
# derived pass by pointer
|
||||
k = Li_boost_shared_ptr::KlassDerived.new("me oh my")
|
||||
kret = Li_boost_shared_ptr::derivedpointertest(k)
|
||||
val = kret.getValue()
|
||||
self.verifyValue("me oh my derivedpointertest-Derived", val)
|
||||
self.verifyCount(1, k)
|
||||
self.verifyCount(1, kret)
|
||||
|
||||
# derived pass by ref
|
||||
k = Li_boost_shared_ptr::KlassDerived.new("me oh my")
|
||||
kret = Li_boost_shared_ptr::derivedreftest(k)
|
||||
val = kret.getValue()
|
||||
self.verifyValue("me oh my derivedreftest-Derived", val)
|
||||
self.verifyCount(1, k)
|
||||
self.verifyCount(1, kret)
|
||||
|
||||
# //////////////////////////////// Derived and base class mixed ///////
|
||||
# pass by shared_ptr (mixed)
|
||||
k = Li_boost_shared_ptr::KlassDerived.new("me oh my")
|
||||
kret = Li_boost_shared_ptr::smartpointertest(k)
|
||||
val = kret.getValue()
|
||||
self.verifyValue("me oh my smartpointertest-Derived", val)
|
||||
self.verifyCount(2, k)
|
||||
self.verifyCount(2, kret)
|
||||
|
||||
# pass by shared_ptr pointer (mixed)
|
||||
k = Li_boost_shared_ptr::KlassDerived.new("me oh my")
|
||||
kret = Li_boost_shared_ptr::smartpointerpointertest(k)
|
||||
val = kret.getValue()
|
||||
self.verifyValue("me oh my smartpointerpointertest-Derived", val)
|
||||
self.verifyCount(2, k)
|
||||
self.verifyCount(2, kret)
|
||||
|
||||
# pass by shared_ptr reference (mixed)
|
||||
k = Li_boost_shared_ptr::KlassDerived.new("me oh my")
|
||||
kret = Li_boost_shared_ptr::smartpointerreftest(k)
|
||||
val = kret.getValue()
|
||||
self.verifyValue("me oh my smartpointerreftest-Derived", val)
|
||||
self.verifyCount(2, k)
|
||||
self.verifyCount(2, kret)
|
||||
|
||||
# pass by shared_ptr pointer reference (mixed)
|
||||
k = Li_boost_shared_ptr::KlassDerived.new("me oh my")
|
||||
kret = Li_boost_shared_ptr::smartpointerpointerreftest(k)
|
||||
val = kret.getValue()
|
||||
self.verifyValue("me oh my smartpointerpointerreftest-Derived", val)
|
||||
self.verifyCount(2, k)
|
||||
self.verifyCount(2, kret)
|
||||
|
||||
# pass by value (mixed)
|
||||
k = Li_boost_shared_ptr::KlassDerived.new("me oh my")
|
||||
kret = Li_boost_shared_ptr::valuetest(k)
|
||||
val = kret.getValue()
|
||||
self.verifyValue("me oh my valuetest", val) # note slicing
|
||||
self.verifyCount(1, k)
|
||||
self.verifyCount(1, kret)
|
||||
|
||||
# pass by pointer (mixed)
|
||||
k = Li_boost_shared_ptr::KlassDerived.new("me oh my")
|
||||
kret = Li_boost_shared_ptr::pointertest(k)
|
||||
val = kret.getValue()
|
||||
self.verifyValue("me oh my pointertest-Derived", val)
|
||||
self.verifyCount(1, k)
|
||||
self.verifyCount(1, kret)
|
||||
|
||||
# pass by ref (mixed)
|
||||
k = Li_boost_shared_ptr::KlassDerived.new("me oh my")
|
||||
kret = Li_boost_shared_ptr::reftest(k)
|
||||
val = kret.getValue()
|
||||
self.verifyValue("me oh my reftest-Derived", val)
|
||||
self.verifyCount(1, k)
|
||||
self.verifyCount(1, kret)
|
||||
|
||||
# //////////////////////////////// Overloading tests //////////////////
|
||||
# Base class
|
||||
k = Li_boost_shared_ptr::Klass.new("me oh my")
|
||||
self.verifyValue(Li_boost_shared_ptr::overload_rawbyval(k), "rawbyval")
|
||||
self.verifyValue(Li_boost_shared_ptr::overload_rawbyref(k), "rawbyref")
|
||||
self.verifyValue(Li_boost_shared_ptr::overload_rawbyptr(k), "rawbyptr")
|
||||
self.verifyValue(
|
||||
Li_boost_shared_ptr::overload_rawbyptrref(k), "rawbyptrref")
|
||||
|
||||
self.verifyValue(
|
||||
Li_boost_shared_ptr::overload_smartbyval(k), "smartbyval")
|
||||
self.verifyValue(
|
||||
Li_boost_shared_ptr::overload_smartbyref(k), "smartbyref")
|
||||
self.verifyValue(
|
||||
Li_boost_shared_ptr::overload_smartbyptr(k), "smartbyptr")
|
||||
self.verifyValue(
|
||||
Li_boost_shared_ptr::overload_smartbyptrref(k), "smartbyptrref")
|
||||
|
||||
# Derived class
|
||||
k = Li_boost_shared_ptr::KlassDerived.new("me oh my")
|
||||
self.verifyValue(Li_boost_shared_ptr::overload_rawbyval(k), "rawbyval")
|
||||
self.verifyValue(Li_boost_shared_ptr::overload_rawbyref(k), "rawbyref")
|
||||
self.verifyValue(Li_boost_shared_ptr::overload_rawbyptr(k), "rawbyptr")
|
||||
self.verifyValue(
|
||||
Li_boost_shared_ptr::overload_rawbyptrref(k), "rawbyptrref")
|
||||
|
||||
self.verifyValue(
|
||||
Li_boost_shared_ptr::overload_smartbyval(k), "smartbyval")
|
||||
self.verifyValue(
|
||||
Li_boost_shared_ptr::overload_smartbyref(k), "smartbyref")
|
||||
self.verifyValue(
|
||||
Li_boost_shared_ptr::overload_smartbyptr(k), "smartbyptr")
|
||||
self.verifyValue(
|
||||
Li_boost_shared_ptr::overload_smartbyptrref(k), "smartbyptrref")
|
||||
|
||||
# 3rd derived class
|
||||
k = Li_boost_shared_ptr::Klass3rdDerived.new("me oh my")
|
||||
val = k.getValue()
|
||||
self.verifyValue("me oh my-3rdDerived", val)
|
||||
self.verifyCount(1, k)
|
||||
val = Li_boost_shared_ptr::test3rdupcast(k)
|
||||
self.verifyValue("me oh my-3rdDerived", val)
|
||||
self.verifyCount(1, k)
|
||||
|
||||
# //////////////////////////////// Member variables ///////////////////
|
||||
# smart pointer by value
|
||||
m = Li_boost_shared_ptr::MemberVariables.new()
|
||||
k = Li_boost_shared_ptr::Klass.new("smart member value")
|
||||
m.SmartMemberValue = k
|
||||
val = k.getValue()
|
||||
self.verifyValue("smart member value", val)
|
||||
self.verifyCount(2, k)
|
||||
|
||||
kmember = m.SmartMemberValue
|
||||
val = kmember.getValue()
|
||||
self.verifyValue("smart member value", val)
|
||||
self.verifyCount(3, kmember)
|
||||
self.verifyCount(3, k)
|
||||
|
||||
GC.track_class = Li_boost_shared_ptr::MemberVariables
|
||||
m = nil
|
||||
invokeGC("m = nil (A)")
|
||||
|
||||
self.verifyCount(2, kmember)
|
||||
self.verifyCount(2, k)
|
||||
|
||||
# smart pointer by pointer
|
||||
m = Li_boost_shared_ptr::MemberVariables.new()
|
||||
k = Li_boost_shared_ptr::Klass.new("smart member pointer")
|
||||
m.SmartMemberPointer = k
|
||||
val = k.getValue()
|
||||
self.verifyValue("smart member pointer", val)
|
||||
self.verifyCount(1, k)
|
||||
|
||||
kmember = m.SmartMemberPointer
|
||||
val = kmember.getValue()
|
||||
self.verifyValue("smart member pointer", val)
|
||||
self.verifyCount(2, kmember)
|
||||
self.verifyCount(2, k)
|
||||
|
||||
m = nil
|
||||
invokeGC("m = nil (B)")
|
||||
|
||||
self.verifyCount(2, kmember)
|
||||
self.verifyCount(2, k)
|
||||
|
||||
# smart pointer by reference
|
||||
m = Li_boost_shared_ptr::MemberVariables.new()
|
||||
k = Li_boost_shared_ptr::Klass.new("smart member reference")
|
||||
m.SmartMemberReference = k
|
||||
val = k.getValue()
|
||||
self.verifyValue("smart member reference", val)
|
||||
self.verifyCount(2, k)
|
||||
|
||||
kmember = m.SmartMemberReference
|
||||
val = kmember.getValue()
|
||||
self.verifyValue("smart member reference", val)
|
||||
self.verifyCount(3, kmember)
|
||||
self.verifyCount(3, k)
|
||||
|
||||
# The C++ reference refers to SmartMemberValue...
|
||||
kmemberVal = m.SmartMemberValue
|
||||
val = kmember.getValue()
|
||||
self.verifyValue("smart member reference", val)
|
||||
self.verifyCount(4, kmemberVal)
|
||||
self.verifyCount(4, kmember)
|
||||
self.verifyCount(4, k)
|
||||
|
||||
m = nil
|
||||
invokeGC("m = nil (C)")
|
||||
|
||||
|
||||
self.verifyCount(3, kmemberVal)
|
||||
self.verifyCount(3, kmember)
|
||||
self.verifyCount(3, k)
|
||||
|
||||
# plain by value
|
||||
m = Li_boost_shared_ptr::MemberVariables.new()
|
||||
k = Li_boost_shared_ptr::Klass.new("plain member value")
|
||||
m.MemberValue = k
|
||||
val = k.getValue()
|
||||
self.verifyValue("plain member value", val)
|
||||
self.verifyCount(1, k)
|
||||
|
||||
kmember = m.MemberValue
|
||||
val = kmember.getValue()
|
||||
self.verifyValue("plain member value", val)
|
||||
self.verifyCount(1, kmember)
|
||||
self.verifyCount(1, k)
|
||||
|
||||
m = nil
|
||||
invokeGC("m = nil (D)")
|
||||
|
||||
self.verifyCount(1, kmember)
|
||||
self.verifyCount(1, k)
|
||||
|
||||
# plain by pointer
|
||||
m = Li_boost_shared_ptr::MemberVariables.new()
|
||||
k = Li_boost_shared_ptr::Klass.new("plain member pointer")
|
||||
m.MemberPointer = k
|
||||
val = k.getValue()
|
||||
self.verifyValue("plain member pointer", val)
|
||||
self.verifyCount(1, k)
|
||||
|
||||
kmember = m.MemberPointer
|
||||
val = kmember.getValue()
|
||||
self.verifyValue("plain member pointer", val)
|
||||
self.verifyCount(1, kmember)
|
||||
self.verifyCount(1, k)
|
||||
|
||||
m = nil
|
||||
invokeGC("m = nil (E)")
|
||||
|
||||
self.verifyCount(1, kmember)
|
||||
self.verifyCount(1, k)
|
||||
|
||||
# plain by reference
|
||||
m = Li_boost_shared_ptr::MemberVariables.new()
|
||||
k = Li_boost_shared_ptr::Klass.new("plain member reference")
|
||||
m.MemberReference = k
|
||||
val = k.getValue()
|
||||
self.verifyValue("plain member reference", val)
|
||||
self.verifyCount(1, k)
|
||||
|
||||
kmember = m.MemberReference
|
||||
val = kmember.getValue()
|
||||
self.verifyValue("plain member reference", val)
|
||||
self.verifyCount(1, kmember)
|
||||
self.verifyCount(1, k)
|
||||
|
||||
m = nil
|
||||
invokeGC("m = nil (F)")
|
||||
|
||||
self.verifyCount(1, kmember)
|
||||
self.verifyCount(1, k)
|
||||
|
||||
# null member variables
|
||||
m = Li_boost_shared_ptr::MemberVariables.new()
|
||||
|
||||
# shared_ptr by value
|
||||
k = m.SmartMemberValue
|
||||
if (k != nil)
|
||||
raise RuntimeError, "expected null"
|
||||
end
|
||||
m.SmartMemberValue = nil
|
||||
k = m.SmartMemberValue
|
||||
if (k != nil)
|
||||
raise RuntimeError, "expected null"
|
||||
end
|
||||
self.verifyCount(0, k)
|
||||
|
||||
# plain by value
|
||||
begin
|
||||
m.MemberValue = nil
|
||||
raise RuntimeError, "Failed to catch null pointer"
|
||||
rescue ArgumentError
|
||||
end
|
||||
|
||||
# ////////////////////////////////// Global variables /////////////////
|
||||
# smart pointer
|
||||
kglobal = Li_boost_shared_ptr.GlobalSmartValue
|
||||
if (kglobal != nil)
|
||||
raise RuntimeError, "expected null"
|
||||
end
|
||||
|
||||
k = Li_boost_shared_ptr::Klass.new("smart global value")
|
||||
Li_boost_shared_ptr.GlobalSmartValue = k
|
||||
self.verifyCount(2, k)
|
||||
|
||||
kglobal = Li_boost_shared_ptr.GlobalSmartValue
|
||||
val = kglobal.getValue()
|
||||
self.verifyValue("smart global value", val)
|
||||
self.verifyCount(3, kglobal)
|
||||
self.verifyCount(3, k)
|
||||
self.verifyValue(
|
||||
"smart global value", Li_boost_shared_ptr.GlobalSmartValue.getValue())
|
||||
Li_boost_shared_ptr.GlobalSmartValue = nil
|
||||
|
||||
# plain value
|
||||
k = Li_boost_shared_ptr::Klass.new("global value")
|
||||
Li_boost_shared_ptr.GlobalValue = k
|
||||
self.verifyCount(1, k)
|
||||
|
||||
kglobal = Li_boost_shared_ptr.GlobalValue
|
||||
val = kglobal.getValue()
|
||||
self.verifyValue("global value", val)
|
||||
self.verifyCount(1, kglobal)
|
||||
self.verifyCount(1, k)
|
||||
self.verifyValue(
|
||||
"global value", Li_boost_shared_ptr.GlobalValue.getValue())
|
||||
|
||||
begin
|
||||
Li_boost_shared_ptr.GlobalValue = nil
|
||||
raise RuntimeError, "Failed to catch null pointer"
|
||||
rescue ArgumentError
|
||||
end
|
||||
|
||||
# plain pointer
|
||||
kglobal = Li_boost_shared_ptr.GlobalPointer
|
||||
if (kglobal != nil)
|
||||
raise RuntimeError, "expected null"
|
||||
end
|
||||
|
||||
k = Li_boost_shared_ptr::Klass.new("global pointer")
|
||||
Li_boost_shared_ptr.GlobalPointer = k
|
||||
self.verifyCount(1, k)
|
||||
|
||||
kglobal = Li_boost_shared_ptr.GlobalPointer
|
||||
val = kglobal.getValue()
|
||||
self.verifyValue("global pointer", val)
|
||||
self.verifyCount(1, kglobal)
|
||||
self.verifyCount(1, k)
|
||||
Li_boost_shared_ptr.GlobalPointer = nil
|
||||
|
||||
# plain reference
|
||||
|
||||
k = Li_boost_shared_ptr::Klass.new("global reference")
|
||||
Li_boost_shared_ptr.GlobalReference = k
|
||||
self.verifyCount(1, k)
|
||||
|
||||
kglobal = Li_boost_shared_ptr.GlobalReference
|
||||
val = kglobal.getValue()
|
||||
self.verifyValue("global reference", val)
|
||||
self.verifyCount(1, kglobal)
|
||||
self.verifyCount(1, k)
|
||||
|
||||
begin
|
||||
Li_boost_shared_ptr.GlobalReference = nil
|
||||
raise RuntimeError, "Failed to catch null pointer"
|
||||
rescue ArgumentError
|
||||
end
|
||||
|
||||
# ////////////////////////////////// Templates ////////////////////////
|
||||
pid = Li_boost_shared_ptr::PairIntDouble.new(10, 20.2)
|
||||
if (pid.baseVal1 != 20 or pid.baseVal2 != 40.4)
|
||||
raise RuntimeError, "Base values wrong"
|
||||
end
|
||||
if (pid.val1 != 10 or pid.val2 != 20.2)
|
||||
raise RuntimeError, "Derived Values wrong"
|
||||
end
|
||||
end
|
||||
|
||||
def verifyValue(expected, got)
|
||||
if (expected != got)
|
||||
raise RuntimeError, "verify value failed. Expected: #{expected} Got: #{got}"
|
||||
end
|
||||
end
|
||||
|
||||
def verifyCount(expected, k)
|
||||
got = Li_boost_shared_ptr::use_count(k)
|
||||
if (expected != got)
|
||||
puts "skipped verifyCount expect/got: #{expected}/#{got}"
|
||||
# raise RuntimeError, "verify use_count failed. Expected: #{expected} Got: #{got}"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
runme = Li_boost_shared_ptr_runme.new()
|
||||
runme.main(debug)
|
||||
|
|
@ -0,0 +1,45 @@
|
|||
require 'li_boost_shared_ptr_template'
|
||||
|
||||
begin
|
||||
b = Li_boost_shared_ptr_template::BaseINTEGER.new()
|
||||
d = Li_boost_shared_ptr_template::DerivedINTEGER.new()
|
||||
if (b.bar() != 1)
|
||||
raise RuntimeError("test 1")
|
||||
end
|
||||
if (d.bar() != 2)
|
||||
raise RuntimeError("test 2")
|
||||
end
|
||||
if (Li_boost_shared_ptr_template.bar_getter(b) != 1)
|
||||
raise RuntimeError("test 3")
|
||||
end
|
||||
# Needs fixing as it does for Python
|
||||
# if (Li_boost_shared_ptr_template.bar_getter(d) != 2)
|
||||
# raise RuntimeError("test 4")
|
||||
# end
|
||||
end
|
||||
|
||||
begin
|
||||
b = Li_boost_shared_ptr_template::BaseDefaultInt.new()
|
||||
d = Li_boost_shared_ptr_template::DerivedDefaultInt.new()
|
||||
d2 = Li_boost_shared_ptr_template::DerivedDefaultInt2.new()
|
||||
if (b.bar2() != 3)
|
||||
raise RuntimeError("test 5")
|
||||
end
|
||||
if (d.bar2() != 4)
|
||||
raise RuntimeError("test 6")
|
||||
end
|
||||
if (d2.bar2() != 4)
|
||||
raise RuntimeError("test 6")
|
||||
end
|
||||
if (Li_boost_shared_ptr_template.bar2_getter(b) != 3)
|
||||
raise RuntimeError("test 7")
|
||||
end
|
||||
# Needs fixing as it does for Python
|
||||
# if (Li_boost_shared_ptr_template.bar2_getter(d) != 4)
|
||||
# raise RuntimeError("test 8")
|
||||
# end
|
||||
# if (Li_boost_shared_ptr_template.bar2_getter(d2) != 4)
|
||||
# raise RuntimeError("test 8")
|
||||
# end
|
||||
end
|
||||
|
||||
36
Examples/test-suite/ruby/li_carrays_cpp_runme.rb
Normal file
36
Examples/test-suite/ruby/li_carrays_cpp_runme.rb
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
#!/usr/bin/env ruby
|
||||
#
|
||||
# Put description here
|
||||
#
|
||||
#
|
||||
#
|
||||
#
|
||||
#
|
||||
|
||||
require 'swig_assert'
|
||||
|
||||
require 'li_carrays_cpp'
|
||||
|
||||
include Li_carrays_cpp
|
||||
|
||||
#
|
||||
# Testing for %array_functions(int,intArray)
|
||||
#
|
||||
ary = new_intArray(2)
|
||||
intArray_setitem(ary, 0, 0)
|
||||
intArray_setitem(ary, 1, 1)
|
||||
intArray_getitem(ary, 0)
|
||||
intArray_getitem(ary, 1)
|
||||
delete_intArray(ary)
|
||||
|
||||
#
|
||||
# Testing for %array_class(double, doubleArray)
|
||||
#
|
||||
ary = DoubleArray.new(2)
|
||||
ary[0] = 0.0
|
||||
ary[1] = 1.0
|
||||
ary[0]
|
||||
ary[1]
|
||||
ptr = ary.cast
|
||||
ary2 = DoubleArray.frompointer(ptr)
|
||||
|
||||
|
|
@ -39,12 +39,12 @@ iv.each_with_index { |e,i|
|
|||
"iv.slice(1,2).to_s" => "12",
|
||||
"iv[0,-2]" => nil,
|
||||
"iv[0,3].to_s" => "012",
|
||||
"iv[0,10].to_s" => "012",
|
||||
"iv[0,10].to_s" => "0123",
|
||||
"iv[1..2].to_s" => '12',
|
||||
"iv[1..3].to_s" => '123',
|
||||
"iv[1..4].to_s" => '123',
|
||||
"iv[1..-2].to_s" => '12',
|
||||
"iv[2..-3]" => nil,
|
||||
"iv[2..-3].to_s" => '',
|
||||
}.each do |k,v|
|
||||
swig_assert( "#{k} == #{v.inspect}", binding )
|
||||
end
|
||||
|
|
@ -68,6 +68,141 @@ iv = IntVector.new([0,1,2,3,4,5,6])
|
|||
iv.delete_if { |x| x == 0 || x == 3 || x == 6 }
|
||||
swig_assert_equal(iv.to_s, '1245', binding)
|
||||
|
||||
iv[1,2] = [-2, -4]
|
||||
swig_assert_equal(iv.to_s, '1-2-45', binding)
|
||||
|
||||
iv = IntVector.new([0,1,2,3])
|
||||
iv[0,1] = [-1, -2]
|
||||
swig_assert_equal(iv.to_s, '-1-2123', binding)
|
||||
|
||||
iv = IntVector.new([1,2,3,4])
|
||||
iv[1,3] = [6,7,8,9]
|
||||
#__setitem__ needs fixing
|
||||
#swig_assert_equal(iv.to_s, '16789', binding)
|
||||
|
||||
iv = IntVector.new([1,2,3,4])
|
||||
|
||||
swig_assert_equal(iv[0], 1, binding)
|
||||
swig_assert_equal(iv[3], 4, binding)
|
||||
swig_assert_equal(iv[4], nil, binding)
|
||||
swig_assert_equal(iv[-5], nil, binding)
|
||||
|
||||
iv[-1] = 9
|
||||
iv[-4] = 6
|
||||
swig_assert_equal(iv.to_s, '6239', binding)
|
||||
|
||||
begin
|
||||
iv[-5] = 99
|
||||
raise "exception missed"
|
||||
rescue IndexError
|
||||
end
|
||||
|
||||
iv[6] = 5
|
||||
swig_assert_equal(iv.to_s, '6239555', binding)
|
||||
|
||||
def failed(a, b, msg)
|
||||
a = 'nil' if a == nil
|
||||
b = 'nil' if b == nil
|
||||
raise RuntimeError, "#{msg}: #{a} ... #{b}"
|
||||
end
|
||||
|
||||
def compare_sequences(a, b)
|
||||
if a != nil && b != nil
|
||||
if a.size != b.size
|
||||
failed(a, b, "different sizes")
|
||||
end
|
||||
for i in 0..a.size-1
|
||||
failed(a, b, "elements are different") if a[i] != b[i]
|
||||
end
|
||||
else
|
||||
unless a == nil && b == nil
|
||||
failed(a, b, "only one of the sequences is nil")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def compare_expanded_sequences(a, b)
|
||||
# a can contain nil elements which indicate additional elements
|
||||
# b won't contain nil for additional elements
|
||||
if a != nil && b != nil
|
||||
if a.size != b.size
|
||||
failed(a, b, "different sizes")
|
||||
end
|
||||
for i in 0..a.size-1
|
||||
failed(a, b, "elements are different") if a[i] != b[i] && a[i] != nil
|
||||
end
|
||||
else
|
||||
unless a == nil && b == nil
|
||||
failed(a, b, "only one of the sequences is nil")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def check_slice(i, length)
|
||||
aa = [1,2,3,4]
|
||||
iv = IntVector.new(aa)
|
||||
|
||||
aa_slice = aa[i, length]
|
||||
iv_slice = iv[i, length]
|
||||
compare_sequences(aa_slice, iv_slice)
|
||||
|
||||
aa_slice = aa.slice(i, length)
|
||||
iv_slice = iv.slice(i, length)
|
||||
compare_sequences(aa_slice, iv_slice)
|
||||
end
|
||||
|
||||
def check_range(i, j)
|
||||
aa = [1,2,3,4]
|
||||
iv = IntVector.new(aa)
|
||||
|
||||
aa_range = aa[i..j]
|
||||
iv_range = iv[i..j]
|
||||
compare_sequences(aa_range, iv_range)
|
||||
|
||||
aa_range = aa[Range.new(i, j, true)]
|
||||
iv_range = iv[Range.new(i, j, true)]
|
||||
compare_sequences(aa_range, iv_range)
|
||||
end
|
||||
|
||||
def set_slice(i, length, expect_nil_expanded_elements)
|
||||
aa = [1,2,3,4]
|
||||
iv = IntVector.new(aa)
|
||||
aa_new = [8, 9]
|
||||
iv_new = IntVector.new(aa_new)
|
||||
|
||||
aa[i, length] = aa_new
|
||||
iv[i, length] = iv_new
|
||||
if expect_nil_expanded_elements
|
||||
compare_expanded_sequences(aa, iv)
|
||||
else
|
||||
compare_sequences(aa, iv)
|
||||
end
|
||||
end
|
||||
|
||||
for i in -5..5
|
||||
for length in -5..5
|
||||
check_slice(i, length)
|
||||
end
|
||||
end
|
||||
|
||||
for i in -5..5
|
||||
for j in -5..5
|
||||
check_range(i, j)
|
||||
end
|
||||
end
|
||||
|
||||
for i in -4..4
|
||||
for length in 0..4
|
||||
set_slice(i, length, false)
|
||||
end
|
||||
end
|
||||
|
||||
for i in [5, 6]
|
||||
for length in 0..5
|
||||
set_slice(i, length, true)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
dv = DoubleVector.new(10)
|
||||
|
||||
|
|
|
|||
18
Examples/test-suite/ruby/overload_extend2_runme.rb
Normal file
18
Examples/test-suite/ruby/overload_extend2_runme.rb
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
#!/usr/bin/env ruby
|
||||
#
|
||||
# Put description here
|
||||
#
|
||||
#
|
||||
#
|
||||
#
|
||||
#
|
||||
|
||||
require 'swig_assert'
|
||||
|
||||
require 'overload_extend2'
|
||||
|
||||
f = Overload_extend2::Foo.new
|
||||
|
||||
raise RuntimeError if f.test(3) != 1
|
||||
raise RuntimeError if f.test("hello") != 2
|
||||
raise RuntimeError if f.test(3.5,2.5) != 3
|
||||
|
|
@ -9,10 +9,11 @@
|
|||
|
||||
require 'swig_assert'
|
||||
|
||||
require 'overload_extend'
|
||||
require 'overload_extend_c'
|
||||
|
||||
f = Overload_extend::Foo.new
|
||||
f = Overload_extend_c::Foo.new
|
||||
|
||||
raise RuntimeError if f.test(3) != 1
|
||||
raise RuntimeError if f.test("hello") != 2
|
||||
raise RuntimeError if f.test(3.5,2.5) != 6
|
||||
|
||||
49
Examples/test-suite/ruby/ruby_manual_proxy_runme.rb
Normal file
49
Examples/test-suite/ruby/ruby_manual_proxy_runme.rb
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
#!/usr/bin/env ruby
|
||||
#
|
||||
# The Subversion bindings use this manually written proxy class approach
|
||||
# to the Ruby bindings. Note that in C the struct svn_fs_t is an
|
||||
# opaque pointer and the Ruby FileSystem proxy class is hand written around it.
|
||||
# This testcase tests this and the C close function and subsequent error
|
||||
# handling.
|
||||
|
||||
require 'swig_assert'
|
||||
require 'ruby_manual_proxy'
|
||||
|
||||
module Svn
|
||||
module Fs
|
||||
module_function
|
||||
def create(path)
|
||||
f = Ruby_manual_proxy::svn_fs_create(path)
|
||||
return f
|
||||
end
|
||||
|
||||
FileSystem = SWIG::TYPE_p_svn_fs_t
|
||||
class FileSystem
|
||||
class << self
|
||||
def create(*args)
|
||||
Fs.create(*args)
|
||||
end
|
||||
end
|
||||
def path
|
||||
Ruby_manual_proxy::svn_fs_path(self)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
f = Svn::Fs::FileSystem.create("/tmp/myfile")
|
||||
path = f.path
|
||||
f.close
|
||||
begin
|
||||
# regression in swig-3.0.8 meant ObjectPreviouslyDeleted error was thrown instead
|
||||
path = f.path
|
||||
raise RuntimeError.new("IOError (1) not thrown")
|
||||
rescue IOError
|
||||
end
|
||||
|
||||
file = nil
|
||||
begin
|
||||
path = Ruby_manual_proxy::svn_fs_path(file)
|
||||
raise RuntimeError.new("IOError (2) not thrown")
|
||||
rescue IOError
|
||||
end
|
||||
28
Examples/test-suite/ruby/ruby_minherit_shared_ptr_runme.rb
Normal file
28
Examples/test-suite/ruby/ruby_minherit_shared_ptr_runme.rb
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
#!/usr/bin/env ruby
|
||||
#
|
||||
# Put description here
|
||||
#
|
||||
#
|
||||
#
|
||||
#
|
||||
#
|
||||
|
||||
require 'ruby_minherit_shared_ptr'
|
||||
|
||||
md = Ruby_minherit_shared_ptr::MultiDerived.new(11, 22)
|
||||
|
||||
if md.Base1Func != 11 then
|
||||
raise RuntimeError
|
||||
end
|
||||
if md.Interface1Func != 22 then
|
||||
raise RuntimeError
|
||||
end
|
||||
if Ruby_minherit_shared_ptr.BaseCheck(md) != 11 then
|
||||
raise RuntimeError
|
||||
end
|
||||
if Ruby_minherit_shared_ptr.InterfaceCheck(md) != 22 then
|
||||
raise RuntimeError
|
||||
end
|
||||
if Ruby_minherit_shared_ptr.DerivedCheck(md) != 33 then
|
||||
raise RuntimeError
|
||||
end
|
||||
|
|
@ -22,6 +22,8 @@ end
|
|||
# msg - optional additional message to print
|
||||
#
|
||||
def swig_assert_equal( a, b, scope = nil, msg = nil )
|
||||
a = 'nil' if a == nil
|
||||
b = 'nil' if b == nil
|
||||
begin
|
||||
check = "#{a} == #{b}"
|
||||
if scope.kind_of? Binding
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue