47 lines
1.2 KiB
OCaml
47 lines
1.2 KiB
OCaml
open Swig
|
|
open Director_exception
|
|
|
|
exception MyException of string * string
|
|
|
|
let director_exception_MyFoo ob meth args =
|
|
match meth with
|
|
"ping" -> raise (Failure "MyFoo::ping() EXCEPTION")
|
|
| _ -> (invoke ob) meth args
|
|
|
|
let director_exception_MyFoo2 ob meth args =
|
|
match meth with
|
|
"ping" -> (C_bool true)
|
|
| _ -> (invoke ob) meth args
|
|
|
|
let director_exception_MyFoo3 ob meth args =
|
|
match meth with
|
|
"ping" -> raise (MyException ("foo", "bar"))
|
|
| _ -> (invoke ob) meth args
|
|
|
|
(* Check that Failure is raised by MyFoo.ping() (via MyFoo.pong()). *)
|
|
let a =
|
|
new_derived_object
|
|
new_Foo (director_exception_MyFoo) '()
|
|
let a = _launder(a)
|
|
try
|
|
let _ = a -> pong () in assert false
|
|
with Failure s -> assert(s = "MyFoo::ping() EXCEPTION")
|
|
|
|
let a =
|
|
new_derived_object
|
|
new_Foo (director_exception_MyFoo2) '()
|
|
let a = _launder(a)
|
|
try
|
|
let _ = a -> pong () in assert false
|
|
with Failure s -> assert(s = "No appropriate conversion found.")
|
|
|
|
let a =
|
|
new_derived_object
|
|
new_Foo (director_exception_MyFoo3) '()
|
|
let a = _launder(a)
|
|
try
|
|
let _ = a -> pong () in assert false
|
|
with MyException (s1, s2) ->
|
|
assert (s1 = "foo");
|
|
assert (s2 = "bar");
|