Use newSVnv in sv_of_float to stop it truncating the float to an int.
[perl4caml.git] / test / 110-av.ml
1 (* Thoroughly test AV-related functions.
2  * $Id: 110-av.ml,v 1.1 2005-01-28 23:09:33 rich Exp $
3  *)
4
5 open Perl
6
7 let () =
8   let av = av_empty () in
9   assert ([] = list_of_av av);
10   av_push av (sv_of_int 42);
11   av_push av (sv_of_int 84);
12   av_unshift av (sv_of_int 21);
13   av_set av 0 (sv_of_int 11);
14   assert (3 = av_length av);
15   assert (84 = int_of_sv (av_pop av));
16   assert (2 = av_length av);
17   assert (11 = int_of_sv (av_shift av));
18   assert (1 = av_length av);
19   assert (42 = int_of_sv (av_pop av));
20   av_extend av 3;
21   av_set av 0 (sv_of_int 11);
22   av_set av 1 (sv_of_int 22);
23   av_set av 2 (sv_of_int 33);
24   av_set av 3 (sv_of_int 44);
25   assert (4 = av_length av);
26   assert (33 = int_of_sv (av_get av 2));
27   assert (22 = int_of_sv (av_get av 1));
28   assert (44 = int_of_sv (av_pop av));
29   assert (3 = av_length av);
30   assert (33 = int_of_sv (av_pop av));
31   assert (11 = int_of_sv (av_shift av));
32   assert (22 = int_of_sv (av_pop av));
33   assert ([] = list_of_av av);
34
35   ignore (eval "@a = ( 'foo', 'bar' )");
36   let av = get_av "a" in
37   assert ("foo" = string_of_sv (av_get av 0));
38   assert ("bar" = string_of_sv (av_get av 1));
39 ;;
40
41 Gc.full_major ()