]> rtime.felk.cvut.cz Git - l4.git/blob - l4/pkg/ocaml/contrib/otherlibs/num/test/test_io.ml
Inital import
[l4.git] / l4 / pkg / ocaml / contrib / otherlibs / num / test / test_io.ml
1 open Test
2 open Nat
3 open Big_int
4 open Num
5
6 let intern_extern obj =
7   let f = Filename.temp_file "testnum" ".data" in
8   let oc = open_out_bin f in
9   output_value oc obj;
10   close_out oc;
11   let ic = open_in_bin f in
12   let res = input_value ic in
13   close_in ic;
14   Sys.remove f;
15   res
16 ;;
17
18 testing_function "output_value/input_value on nats";;
19
20 let equal_nat n1 n2 =
21   eq_nat n1 0 (length_nat n1) n2 0 (length_nat n2)
22 ;;
23
24 List.iter
25   (fun (i, s) ->
26     let n = nat_of_string s in
27     ignore(test i equal_nat (n, intern_extern n)))
28   [1, "0";
29    2, "1234";
30    3, "8589934592";
31    4, "340282366920938463463374607431768211455";
32    5, String.make 100 '3';
33    6, String.make 1000 '9';
34    7, String.make 20000 '8']
35 ;;
36
37 testing_function "output_value/input_value on big ints";;
38
39 List.iter
40   (fun (i, s) ->
41     let b = big_int_of_string s in
42     ignore(test i eq_big_int (b, intern_extern b)))
43   [1, "0";
44    2, "1234";
45    3, "-1234";
46    4, "1040259735709286400";
47    5, "-" ^ String.make 20000 '7']
48 ;;
49
50 testing_function "output_value/input_value on nums";;
51
52 List.iter
53   (fun (i, s) ->
54     let n = num_of_string s in
55     ignore(test i eq_num (n, intern_extern n)))
56   [1, "0";
57    2, "1234";
58    3, "-1234";
59    4, "159873568791325097646845892426782";
60    5, "1/4";
61    6, "-15/2";
62    7, "159873568791325097646845892426782/24098772507410987265987";
63    8, String.make 10000 '3' ^ "/" ^ String.make 5000 '7']
64 ;;