diff options
Diffstat (limited to 'Examples/test-suite/ruby/default_constructor_runme.rb')
| -rwxr-xr-x | Examples/test-suite/ruby/default_constructor_runme.rb | 153 |
1 files changed, 153 insertions, 0 deletions
diff --git a/Examples/test-suite/ruby/default_constructor_runme.rb b/Examples/test-suite/ruby/default_constructor_runme.rb new file mode 100755 index 0000000..2706f67 --- /dev/null +++ b/Examples/test-suite/ruby/default_constructor_runme.rb @@ -0,0 +1,153 @@ +#!/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 +ff = FFF.new + +# This should work fine +g = G.new + +# This should work fine +gg = GG.new |
