summaryrefslogtreecommitdiff
path: root/Examples/test-suite/ruby/abstract_inherit_ok_runme.rb
diff options
context:
space:
mode:
Diffstat (limited to 'Examples/test-suite/ruby/abstract_inherit_ok_runme.rb')
-rw-r--r--Examples/test-suite/ruby/abstract_inherit_ok_runme.rb48
1 files changed, 48 insertions, 0 deletions
diff --git a/Examples/test-suite/ruby/abstract_inherit_ok_runme.rb b/Examples/test-suite/ruby/abstract_inherit_ok_runme.rb
new file mode 100644
index 0000000..1d68993
--- /dev/null
+++ b/Examples/test-suite/ruby/abstract_inherit_ok_runme.rb
@@ -0,0 +1,48 @@
+#!/usr/bin/env ruby
+#
+# Put description here
+#
+#
+#
+#
+#
+
+require 'swig_assert'
+
+require 'abstract_inherit_ok'
+
+include Abstract_inherit_ok
+
+#
+# Shouldn't be able to instantiate Foo, because it declares
+# a pure virtual function.
+#
+
+exceptionRaised = false
+begin
+ Foo.new
+rescue NameError
+ exceptionRaised = true
+rescue TypeError
+ # In Ruby 1.8 the exception raised is:
+ # TypeError: allocator undefined for Abstract_inherit_ok::Foo
+ exceptionRaised = true
+ensure
+ swig_assert( "exceptionRaised", binding )
+end
+
+#
+# This one's OK since we cleared it with a %feature("notabstract")
+# declaration in the interface file.
+#
+
+exceptionRaised = false
+begin
+ spam = Spam.new
+ raise RuntimeError unless spam.blah == 0
+rescue NameError
+ exceptionRaised = true
+ensure
+ swig_assert( "!exceptionRaised", binding )
+end
+