1 (* Simple test of the API.
2 * Copyright (C) 2003 Merjis Ltd.
3 * $Id: test.ml,v 1.3 2003-10-15 16:51:12 rich Exp $
8 (* XXX Hack to workaround some sort of linking bug in OCaml. Without this
9 * the Perl module isn't initialized and this code crashes.
11 let f = Pl_Net_Google.may
15 Perl.eval "require 'examples/test.pl'";
17 (* Call some subroutines in [test.pl]. *)
18 let sv = Perl.call ~fn:"return_one" [] in
19 printf "return_one returned %d\n" (Perl.int_of_sv sv); flush stdout;
21 let sv = Perl.call ~fn:"adder" [Perl.sv_of_int 3; Perl.sv_of_int 4] in
22 printf "adder (3, 4) = %d\n" (Perl.int_of_sv sv); flush stdout;
24 let svlist = Perl.call_array ~fn:"return_array" [] in
25 print_string "array returned:";
28 printf " %d" (Perl.int_of_sv sv);
30 printf "\n"; flush stdout;
32 let sv = Perl.sv_of_string "return_one" in
33 let sv = Perl.call ~sv [] in
34 printf "return_one returned %d\n" (Perl.int_of_sv sv); flush stdout;
36 (* Call a Perl closure. *)
37 let sv = Perl.call ~fn:"return_closure" [] in
38 let sv = Perl.call ~sv [Perl.sv_of_int 3; Perl.sv_of_int 4] in
39 printf "closure returned %d\n" (Perl.int_of_sv sv); flush stdout;
41 (* Evaluate a simple expression. *)
43 printf "$a contains %d\n" (Perl.int_of_sv (Perl.get_sv "a")); flush stdout;
45 (* Test calling methods in the "TestClass" class. *)
46 let obj = Perl.call_class_method "TestClass" "new" [] in
47 let sv = Perl.call_method obj "get_foo" [] in
48 printf "TestClass.foo is %d\n" (Perl.int_of_sv sv); flush stdout;
49 Perl.call_method obj "set_foo" [Perl.sv_of_int 2];
50 let sv = Perl.call_method obj "get_foo" [] in
51 printf "TestClass.foo is %d\n" (Perl.int_of_sv sv); flush stdout;
53 (* Destroy the interpreter. *)
54 Perl.destroy (Perl.current_interpreter ())