/tags/rel-1.3.35/Examples/test-suite/ruby/default_constructor_runme.rb
Ruby | 153 lines | 62 code | 22 blank | 69 comment | 0 complexity | 53328cc290059006a13ebd9ab3058cda MD5 | raw file
Possible License(s): LGPL-2.1, Cube, GPL-3.0, 0BSD, GPL-2.0
- #!/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