test_assertions_rast3d.py 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. # -*- coding: utf-8 -*-
  2. """
  3. Tests assertion methods for 3D rasters.
  4. """
  5. from grass.exceptions import CalledModuleError
  6. import grass.gunittest as gunittest
  7. class TestRaster3dMapAssertions(gunittest.TestCase):
  8. # pylint: disable=R0904
  9. constant_map = 'raster3d_assertions_constant'
  10. rcd_increasing_map = 'raster3d_assertions_rcd_increasing'
  11. @classmethod
  12. def setUpClass(cls):
  13. cls.use_temp_region()
  14. # TODO: here we should actually not call self.runModule but call_module
  15. cls.runModule('g.region', n=200, s=100, e=400, w=200,
  16. t=500, b=450, res3=1)
  17. cls.runModule('r3.mapcalc', expression='%s = 155' % cls.constant_map)
  18. cls.runModule('r3.mapcalc',
  19. expression='%s = row() + col() + depth()' % cls.rcd_increasing_map)
  20. @classmethod
  21. def tearDownClass(cls):
  22. cls.del_temp_region()
  23. # TODO: input as list does not work, why?
  24. cls.runModule('g.remove',
  25. rast3d=','.join([cls.constant_map, cls.rcd_increasing_map]))
  26. def test_assertRaster3dFitsUnivar(self):
  27. reference = dict(n=1000000,
  28. null_cells=0,
  29. cells=1000000,
  30. min=155,
  31. max=155,
  32. range=0,
  33. mean=155,
  34. mean_of_abs=155,
  35. stddev=0,
  36. variance=0,
  37. coeff_var=0,
  38. sum=155000000)
  39. self.assertRaster3dFitsUnivar(self.constant_map, reference=reference,
  40. precision=0.000001)
  41. self.assertRaises(self.failureException,
  42. self.assertRaster3dFitsUnivar,
  43. self.rcd_increasing_map,
  44. reference=reference, precision=1)
  45. self.assertRaises(ValueError,
  46. self.assertRaster3dFitsUnivar,
  47. self.constant_map, reference=dict(a=4, b=5, c=6))
  48. self.assertRaises(CalledModuleError,
  49. self.assertRaster3dFitsUnivar,
  50. 'does_not_exists', reference=dict(a=4, b=5, c=6))
  51. def test_assertRaster3dFitsInfo(self):
  52. reference = dict(north=200,
  53. south=100,
  54. east=400,
  55. west=200,
  56. bottom=450,
  57. top=500,
  58. nsres=1,
  59. ewres=1,
  60. tbres=1,
  61. rows=100,
  62. cols=200,
  63. depths=50)
  64. self.assertRaster3dFitsInfo(self.constant_map, reference=reference)
  65. reference['north'] = 500
  66. self.assertRaises(self.failureException,
  67. self.assertRaster3dFitsInfo,
  68. self.constant_map, reference=reference)
  69. self.assertRaises(ValueError,
  70. self.assertRaster3dFitsInfo,
  71. self.constant_map, reference=dict(a=5))
  72. def test_common_values_info_univar(self):
  73. minmax = dict(min=3, max=350)
  74. self.assertRaster3dFitsUnivar(self.rcd_increasing_map,
  75. minmax, precision=0.01)
  76. self.assertRaster3dFitsInfo(self.rcd_increasing_map,
  77. minmax, precision=0.01)
  78. def test_string_as_parameter(self):
  79. self.assertRaster3dFitsInfo(self.constant_map,
  80. reference="max=155", precision=1)
  81. self.assertRaster3dFitsUnivar(self.rcd_increasing_map,
  82. reference="n=1000000", precision=0)
  83. def test_assertRasters3dNoDifference(self):
  84. """Test basic usage of assertRastersNoDifference"""
  85. # precision might need to be increased
  86. self.assertRasters3dNoDifference(actual=self.rcd_increasing_map,
  87. reference=self.rcd_increasing_map,
  88. precision=0,
  89. msg="The same maps should have no difference")
  90. self.assertRaises(self.failureException,
  91. self.assertRasters3dNoDifference,
  92. actual=self.constant_map,
  93. reference=self.rcd_increasing_map,
  94. precision=1,
  95. msg="Different maps should have difference")
  96. def test_assertRasters3dNoDifference_mean(self):
  97. """Test usage of assertRastersNoDifference with mean"""
  98. self.assertRasters3dNoDifference(actual=self.rcd_increasing_map,
  99. reference=self.rcd_increasing_map,
  100. precision=0, # this might need to be increased
  101. statistics=dict(mean=0),
  102. msg="The difference of same maps should have small mean")
  103. self.assertRaises(self.failureException,
  104. self.assertRasters3dNoDifference,
  105. actual=self.constant_map,
  106. reference=self.rcd_increasing_map,
  107. precision=1,
  108. statistics=dict(mean=0),
  109. msg="The difference of different maps should have huge mean")
  110. if __name__ == '__main__':
  111. gunittest.test()