test_data.py 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. import pytest
  2. import numpy as np
  3. from . import util
  4. from numpy.f2py.crackfortran import crackfortran
  5. class TestData(util.F2PyTest):
  6. sources = [util.getpath("tests", "src", "crackfortran", "data_stmts.f90")]
  7. # For gh-23276
  8. @pytest.mark.slow
  9. def test_data_stmts(self):
  10. assert self.module.cmplxdat.i == 2
  11. assert self.module.cmplxdat.j == 3
  12. assert self.module.cmplxdat.x == 1.5
  13. assert self.module.cmplxdat.y == 2.0
  14. assert self.module.cmplxdat.pi == 3.1415926535897932384626433832795028841971693993751058209749445923078164062
  15. assert self.module.cmplxdat.medium_ref_index == np.array(1.+0.j)
  16. assert np.all(self.module.cmplxdat.z == np.array([3.5, 7.0]))
  17. assert np.all(self.module.cmplxdat.my_array == np.array([ 1.+2.j, -3.+4.j]))
  18. assert np.all(self.module.cmplxdat.my_real_array == np.array([ 1., 2., 3.]))
  19. assert np.all(self.module.cmplxdat.ref_index_one == np.array([13.0 + 21.0j]))
  20. assert np.all(self.module.cmplxdat.ref_index_two == np.array([-30.0 + 43.0j]))
  21. def test_crackedlines(self):
  22. mod = crackfortran(self.sources)
  23. assert mod[0]['vars']['x']['='] == '1.5'
  24. assert mod[0]['vars']['y']['='] == '2.0'
  25. assert mod[0]['vars']['pi']['='] == '3.1415926535897932384626433832795028841971693993751058209749445923078164062d0'
  26. assert mod[0]['vars']['my_real_array']['='] == '(/1.0d0, 2.0d0, 3.0d0/)'
  27. assert mod[0]['vars']['ref_index_one']['='] == '(13.0d0, 21.0d0)'
  28. assert mod[0]['vars']['ref_index_two']['='] == '(-30.0d0, 43.0d0)'
  29. assert mod[0]['vars']['my_array']['='] == '(/(1.0d0, 2.0d0), (-3.0d0, 4.0d0)/)'
  30. assert mod[0]['vars']['z']['='] == '(/3.5, 7.0/)'
  31. class TestDataF77(util.F2PyTest):
  32. sources = [util.getpath("tests", "src", "crackfortran", "data_common.f")]
  33. # For gh-23276
  34. def test_data_stmts(self):
  35. assert self.module.mycom.mydata == 0
  36. def test_crackedlines(self):
  37. mod = crackfortran(str(self.sources[0]))
  38. print(mod[0]['vars'])
  39. assert mod[0]['vars']['mydata']['='] == '0'
  40. class TestDataMultiplierF77(util.F2PyTest):
  41. sources = [util.getpath("tests", "src", "crackfortran", "data_multiplier.f")]
  42. # For gh-23276
  43. def test_data_stmts(self):
  44. assert self.module.mycom.ivar1 == 3
  45. assert self.module.mycom.ivar2 == 3
  46. assert self.module.mycom.ivar3 == 2
  47. assert self.module.mycom.ivar4 == 2
  48. assert self.module.mycom.evar5 == 0
  49. class TestDataWithCommentsF77(util.F2PyTest):
  50. sources = [util.getpath("tests", "src", "crackfortran", "data_with_comments.f")]
  51. # For gh-23276
  52. def test_data_stmts(self):
  53. assert len(self.module.mycom.mytab) == 3
  54. assert self.module.mycom.mytab[0] == 0
  55. assert self.module.mycom.mytab[1] == 4
  56. assert self.module.mycom.mytab[2] == 0