--- /dev/null
+(* Thoroughly test AV-related functions.
+ * $Id: 110-av.ml,v 1.1 2005-01-28 23:09:33 rich Exp $
+ *)
+
+open Perl
+
+let () =
+ let av = av_empty () in
+ assert ([] = list_of_av av);
+ av_push av (sv_of_int 42);
+ av_push av (sv_of_int 84);
+ av_unshift av (sv_of_int 21);
+ av_set av 0 (sv_of_int 11);
+ assert (3 = av_length av);
+ assert (84 = int_of_sv (av_pop av));
+ assert (2 = av_length av);
+ assert (11 = int_of_sv (av_shift av));
+ assert (1 = av_length av);
+ assert (42 = int_of_sv (av_pop av));
+ av_extend av 3;
+ av_set av 0 (sv_of_int 11);
+ av_set av 1 (sv_of_int 22);
+ av_set av 2 (sv_of_int 33);
+ av_set av 3 (sv_of_int 44);
+ assert (4 = av_length av);
+ assert (33 = int_of_sv (av_get av 2));
+ assert (22 = int_of_sv (av_get av 1));
+ assert (44 = int_of_sv (av_pop av));
+ assert (3 = av_length av);
+ assert (33 = int_of_sv (av_pop av));
+ assert (11 = int_of_sv (av_shift av));
+ assert (22 = int_of_sv (av_pop av));
+ assert ([] = list_of_av av);
+
+ ignore (eval "@a = ( 'foo', 'bar' )");
+ let av = get_av "a" in
+ assert ("foo" = string_of_sv (av_get av 0));
+ assert ("bar" = string_of_sv (av_get av 1));
+;;
+
+Gc.full_major ()