mirror of https://github.com/swig/swig
151 lines
3.4 KiB
Ruby
151 lines
3.4 KiB
Ruby
#!/usr/bin/env ruby
|
|
#
|
|
# Put description here
|
|
#
|
|
#
|
|
#
|
|
#
|
|
#
|
|
|
|
require 'swig_assert'
|
|
|
|
require 'default_constructor'
|
|
|
|
include Default_constructor
|
|
|
|
# Ruby 1.6 raises NameError if you try to call Class.new where no constructor
|
|
# is defined; Ruby 1.7 changed this to NoMethodError
|
|
|
|
NoConstructorError = Kernel.const_defined?("NoMethodError") ? NoMethodError : NameError
|
|
|
|
# This should be no problem
|
|
a = A.new
|
|
|
|
# Nor should this
|
|
aa = AA.new
|
|
|
|
# The default constructor for B is private, so this should raise an exception
|
|
begin
|
|
b = B.new
|
|
rescue ArgumentError
|
|
# pass
|
|
rescue TypeError
|
|
# In Ruby 1.8 the exception raised is:
|
|
# TypeError: allocator undefined for Default_constructor::BB
|
|
exceptionRaised = true
|
|
end
|
|
|
|
# The two-argument constructor for B should work
|
|
b = B.new(3, 4)
|
|
|
|
# BB shouldn't inherit B's default constructor, so this should raise an exception
|
|
begin
|
|
bb = BB.new
|
|
puts "Whoa. new BB created."
|
|
rescue NoConstructorError
|
|
# pass
|
|
rescue TypeError
|
|
# In Ruby 1.8 the exception raised is:
|
|
# TypeError: allocator undefined for Default_constructor::BB
|
|
exceptionRaised = true
|
|
end
|
|
|
|
# C's constructor is protected, so this should raise an exception
|
|
begin
|
|
c = C.new
|
|
print "Whoa. new C created."
|
|
rescue NoConstructorError
|
|
# pass
|
|
rescue TypeError
|
|
# In Ruby 1.8 the exception raised is:
|
|
# TypeError: allocator undefined for Default_constructor::C
|
|
# pass
|
|
rescue TypeError
|
|
# In Ruby 1.8 the exception raised is:
|
|
# TypeError: allocator undefined for Default_constructor::C
|
|
# pass
|
|
end
|
|
|
|
# CC gets a default constructor, so no problem here
|
|
cc = CC.new
|
|
|
|
# D's constructor is private, so this should fail
|
|
begin
|
|
d = D.new
|
|
puts "Whoa. new D created"
|
|
rescue NoConstructorError
|
|
# pass
|
|
rescue TypeError
|
|
# In Ruby 1.8 the exception raised is:
|
|
# TypeError: allocator undefined for Default_constructor::D
|
|
# pass
|
|
end
|
|
|
|
# DD shouldn't get a default constructor, so this should fail
|
|
begin
|
|
dd = DD.new
|
|
puts "Whoa. new DD created"
|
|
rescue NoConstructorError
|
|
# pass
|
|
rescue TypeError
|
|
# In Ruby 1.8 the exception raised is:
|
|
# TypeError: allocator undefined for Default_constructor::DD
|
|
# pass
|
|
rescue TypeError
|
|
# In Ruby 1.8 the exception raised is:
|
|
# TypeError: allocator undefined for Default_constructor::D
|
|
# pass
|
|
rescue TypeError
|
|
# In Ruby 1.8 the exception raised is:
|
|
# TypeError: allocator undefined for Default_constructor::DD
|
|
# pass
|
|
end
|
|
|
|
# AD shouldn't get a default constructor, so this should fail
|
|
begin
|
|
ad = AD.new
|
|
puts "Whoa. new AD created"
|
|
rescue NoConstructorError
|
|
# pass
|
|
rescue TypeError
|
|
# In Ruby 1.8 the exception raised is:
|
|
# TypeError: allocator undefined for Default_constructor::AD
|
|
# pass
|
|
rescue TypeError
|
|
# In Ruby 1.8 the exception raised is:
|
|
# TypeError: allocator undefined for Default_constructor::AD
|
|
# pass
|
|
end
|
|
|
|
# Both of the arguments to E's constructor have default values,
|
|
# so this should be fine.
|
|
e = E.new
|
|
|
|
# EE should get a default constructor
|
|
ee = EE.new
|
|
|
|
# EB should not get a default constructor (because B doesn't have one)
|
|
begin
|
|
eb = EB.new
|
|
puts "Whoa. new EB created"
|
|
rescue NoConstructorError
|
|
# pass
|
|
rescue TypeError
|
|
# In Ruby 1.8 the exception raised is:
|
|
# TypeError: allocator undefined for Default_constructor::EB
|
|
# pass
|
|
rescue TypeError
|
|
# In Ruby 1.8 the exception raised is:
|
|
# TypeError: allocator undefined for Default_constructor::EB
|
|
# pass
|
|
end
|
|
|
|
# This should work fine
|
|
f = F.new
|
|
|
|
# This should work fine
|
|
g = G.new
|
|
|
|
# This should work fine
|
|
gg = GG.new
|