codekingpro/portable-devtools
114k
1import os
2import tempfile
3
4import pytest
5
6from . import util
7
8
9class TestAssumedShapeSumExample(util.F2PyTest):
10 sources = [
11 util.getpath("tests", "src", "assumed_shape", "foo_free.f90"),
12 util.getpath("tests", "src", "assumed_shape", "foo_use.f90"),
13 util.getpath("tests", "src", "assumed_shape", "precision.f90"),
14 util.getpath("tests", "src", "assumed_shape", "foo_mod.f90"),
15 util.getpath("tests", "src", "assumed_shape", ".f2py_f2cmap"),
16 ]
17
18 @pytest.mark.slow
19 def test_all(self):
20 r = self.module.fsum([1, 2])
21 assert r == 3
22 r = self.module.sum([1, 2])
23 assert r == 3
24 r = self.module.sum_with_use([1, 2])
25 assert r == 3
26
27 r = self.module.mod.sum([1, 2])
28 assert r == 3
29 r = self.module.mod.fsum([1, 2])
30 assert r == 3
31
32
33class TestF2cmapOption(TestAssumedShapeSumExample):
34 def setup_method(self):
35 # Use a custom file name for .f2py_f2cmap
36 self.sources = list(self.sources)
37 f2cmap_src = self.sources.pop(-1)
38
39 self.f2cmap_file = tempfile.NamedTemporaryFile(delete=False)
40 with open(f2cmap_src, "rb") as f:
41 self.f2cmap_file.write(f.read())
42 self.f2cmap_file.close()
43
44 self.sources.append(self.f2cmap_file.name)
45 self.options = ["--f2cmap", self.f2cmap_file.name]
46
47 super().setup_method()
48
49 def teardown_method(self):
50 os.unlink(self.f2cmap_file.name)
51 