Use newSVnv in sv_of_float to stop it truncating the float to an int.
[perl4caml.git] / test / 100-sv.ml
1 (* Thoroughly test SV-related functions.
2  * $Id: 100-sv.ml,v 1.1 2005-01-28 23:09:33 rich Exp $
3  *)
4
5 open Perl
6
7 let () =
8   assert (42 = int_of_sv (sv_of_int 42));
9   assert (42. = float_of_sv (sv_of_float 42.));
10   assert (true = bool_of_sv (sv_of_bool true));
11   assert (false = bool_of_sv (sv_of_bool false));
12   assert ("42" = string_of_sv (sv_of_string "42"));
13   assert ("42" = string_of_sv (sv_of_int 42));
14   assert ("1" = string_of_sv (sv_of_bool true));
15   (* assert ("" = string_of_sv (sv_of_bool false)); XXX fails XXX *)
16   assert (sv_is_true (sv_of_bool true));
17   assert (sv_is_true (sv_true ()));
18   assert (not (sv_is_true (sv_false ())));
19   assert (sv_is_undef (sv_undef ()));
20
21   let sv = sv_undef () in assert (sv_type sv = SVt_NULL);
22   let sv = sv_of_int 42 in assert (sv_type sv = SVt_IV);
23   (* let sv = sv_of_float 42.1 in assert (sv_type sv = SVt_NV); XXX fails XXX*)
24   let sv = sv_of_string "42" in assert (sv_type sv = SVt_PV);
25   let sv = eval "\\\"foo\"" in assert (sv_type sv = SVt_RV);
26
27   ignore (eval "$s = 'foo'");
28   let sv = get_sv "s" in
29   assert ("foo" = string_of_sv sv);
30 ;;
31
32 Gc.full_major ()