GPR#560: add test.

master
alainfrisch 2016-05-02 17:24:19 +02:00
parent 10c555c681
commit 4cfc7db63e
3 changed files with 72 additions and 0 deletions

View File

@ -0,0 +1,21 @@
#**************************************************************************
#* *
#* OCaml *
#* *
#* Xavier Clerc, SED, INRIA Rocquencourt *
#* *
#* Copyright 2010 Institut National de Recherche en Informatique et *
#* en Automatique. *
#* *
#* All rights reserved. This file is distributed under the terms of *
#* the GNU Lesser General Public License version 2.1, with the *
#* special exception on linking described in the file LICENSE. *
#* *
#**************************************************************************
BASEDIR=../..
MODULES=
MAIN_MODULE=reachable_words
include $(BASEDIR)/makefiles/Makefile.one
include $(BASEDIR)/makefiles/Makefile.common

View File

@ -0,0 +1,50 @@
(**************************************************************************)
(* *)
(* OCaml *)
(* *)
(* Daniel C. Buenzli *)
(* *)
(* Copyright 2015 Institut National de Recherche en Informatique et *)
(* en Automatique. *)
(* *)
(* All rights reserved. This file is distributed under the terms of *)
(* the GNU Lesser General Public License version 2.1, with the *)
(* special exception on linking described in the file LICENSE. *)
(* *)
(**************************************************************************)
let native =
match Filename.basename Sys.argv.(0) with
| "program.byte" | "program.byte.exe" -> false
| "program.native" | "program.native.exe" -> true
| s -> print_endline s; assert false
let size x = Obj.reachable_words (Obj.repr x)
let expect_size s x =
let i = size x in
if i <> s then
Printf.printf "size = %i; expected = %i\n%!" i s
type t =
| A of int
| B of t * t
let () =
let x = Random.int 10 in
expect_size 0 42;
expect_size (if native then 0 else 3) (1, 2);
expect_size 2 [| x |];
expect_size 3 [| x; 0 |];
let a = A x in
expect_size 2 a;
expect_size 5 (B (a, a)); (* sharing *)
expect_size 7 (B (a, A (x + 1)));
let rec b = B (a, b) in (* cycle *)
expect_size 5 b;
print_endline "OK"

View File

@ -0,0 +1 @@
OK