Use newSVnv in sv_of_float to stop it truncating the float to an int.
[perl4caml.git] / test / 140-ref.ml
1 (* Reference, dereference.
2  * $Id: 140-ref.ml,v 1.2 2005-04-14 13:05:12 rich Exp $
3  *)
4
5 open Perl
6
7 let () =
8   let sv = sv_of_int 42 in
9   let sv = scalarref sv in
10   assert (sv_type sv = SVt_RV);
11   assert (reftype sv = SVt_IV);
12   let sv = deref sv in
13   assert (42 = int_of_sv sv);
14
15   let av = av_of_string_list [ "foo"; "bar" ] in
16   let sv = arrayref av in
17   assert (sv_type sv = SVt_RV);
18   assert (reftype sv = SVt_PVAV);
19   let av = deref_array sv in
20   assert (2 = av_length av);
21
22   let hv = hv_empty () in
23   hv_set hv "foo" (sv_of_int 1);
24   hv_set hv "bar" (sv_of_int 2);
25   let sv = hashref hv in
26   assert (sv_type sv = SVt_RV);
27   assert (reftype sv = SVt_PVHV);
28   let hv = deref_hash sv in
29   assert (1 = int_of_sv (hv_get hv "foo"));
30   assert (2 = int_of_sv (hv_get hv "bar"));
31 ;;
32
33 Gc.full_major ()