File: numpy_tests.ml

package info (click to toggle)
pyml 20200518-2
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 608 kB
  • sloc: ml: 6,229; ansic: 1,610; makefile: 1,224; sh: 13
file content (56 lines) | stat: -rw-r--r-- 1,905 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
let () =
  Pyml_tests_common.add_test ~title:"of_bigarray"
    (fun () ->
      if Py.Import.try_import_module "numpy" = None then
        Pyml_tests_common.Disabled "numpy is not available"
      else
        begin
          let array = [| 1.; 2. |] in
          let array1 =
            Bigarray.Array1.of_array (Bigarray.float64) (Bigarray.c_layout) array in
          let bigarray = Bigarray.genarray_of_array1 array1 in
          let a = Numpy.of_bigarray bigarray in
          let m = Py.Import.add_module "test" in
          Py.Module.set m "array" a;
          assert (Py.Run.simple_string "
from test import array
assert len(array) == 2
assert array[0] == 1.
assert array[1] == 2.
array[0] = 42.
array[1] = 43.
");
          assert (Bigarray.Array1.get array1 0 = 42.);
          assert (Bigarray.Array1.get array1 1 = 43.);
          Pyml_tests_common.Passed
        end)

let () =
  Pyml_tests_common.add_test ~title:"to_bigarray"
    (fun () ->
      if Py.Import.try_import_module "numpy" = None then
        Pyml_tests_common.Disabled "numpy is not available"
      else
        begin
          let m = Py.Import.add_module "test" in
          let callback arg =
            let bigarray =
              Numpy.to_bigarray Bigarray.nativeint Bigarray.c_layout arg.(0) in
            let array1 = Bigarray.array1_of_genarray bigarray in
            assert (Bigarray.Array1.get array1 0 = 0n);
            assert (Bigarray.Array1.get array1 1 = 1n);
            assert (Bigarray.Array1.get array1 2 = 2n);
            assert (Bigarray.Array1.get array1 3 = 3n);
            Py.none in
          Py.Module.set m "callback" (Py.Callable.of_function callback);
          assert (Py.Run.simple_string "
from test import callback
import numpy
callback(numpy.array([0,1,2,3]))
");
          Pyml_tests_common.Passed
        end)

let () =
  if not !Sys.interactive then
    Pyml_tests_common.main ()