| #!/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 |