Refactoring a test function out to a class method.

RE:#1344
This commit is contained in:
James Douglass 2023-08-17 15:13:53 -07:00
parent 6b337f72c7
commit 193c6beaa7
1 changed files with 37 additions and 31 deletions

View File

@ -542,31 +542,20 @@ class UNATests(unittest.TestCase):
admin_vector = None
admin_layer = None
def _assert_urban_nature(path, sum_value, min_value, max_value):
accessible_urban_nature_array = (
pygeoprocessing.raster_to_numpy_array(path))
valid_mask = ~utils.array_equals_nodata(
accessible_urban_nature_array,
urban_nature_access.FLOAT32_NODATA)
valid_pixels = accessible_urban_nature_array[valid_mask]
self.assertAlmostEqual(numpy.sum(valid_pixels), sum_value)
self.assertAlmostEqual(numpy.min(valid_pixels), min_value)
self.assertAlmostEqual(numpy.max(valid_pixels), max_value)
output_dir = os.path.join(args['workspace_dir'], 'output')
_assert_urban_nature(os.path.join(
self._assert_urban_nature(os.path.join(
output_dir, 'accessible_urban_nature_lucode_1_suffix.tif'),
72000.0, 0.0, 900.0)
_assert_urban_nature(os.path.join(
self._assert_urban_nature(os.path.join(
output_dir, 'accessible_urban_nature_lucode_3_suffix.tif'),
1034934.9864730835, 0.0, 4431.1650390625)
_assert_urban_nature(os.path.join(
self._assert_urban_nature(os.path.join(
output_dir, 'accessible_urban_nature_lucode_5_suffix.tif'),
2837622.9519348145, 0.0, 8136.6884765625)
_assert_urban_nature(os.path.join(
self._assert_urban_nature(os.path.join(
output_dir, 'accessible_urban_nature_lucode_7_suffix.tif'),
8112734.805541992, 2019.2935791015625, 17729.431640625)
_assert_urban_nature(os.path.join(
self._assert_urban_nature(os.path.join(
output_dir, 'accessible_urban_nature_lucode_9_suffix.tif'),
7744116.974121094, 1567.57958984375, 12863.4619140625)
@ -640,6 +629,36 @@ class UNATests(unittest.TestCase):
rtol=1e-6
)
def _assert_urban_nature(self, path, sum_value, min_value, max_value):
"""Compare a raster's sum, min and max to given values.
The raster is assumed to be an accessible urban nature raster.
Args:
path (str): The path to an urban nature raster.
sum_value (float): The expected sum of the raster.
min_value (float): The expected min of the raster.
max_value (float): The expected max of the raster.
Returns:
``None``
Raises:
AssertionError: When the raster's sum, min or max values are not
numerically close to the expected values.
"""
from natcap.invest import urban_nature_access
accessible_urban_nature_array = (
pygeoprocessing.raster_to_numpy_array(path))
valid_mask = ~utils.array_equals_nodata(
accessible_urban_nature_array,
urban_nature_access.FLOAT32_NODATA)
valid_pixels = accessible_urban_nature_array[valid_mask]
self.assertAlmostEqual(numpy.sum(valid_pixels), sum_value)
self.assertAlmostEqual(numpy.min(valid_pixels), min_value)
self.assertAlmostEqual(numpy.max(valid_pixels), max_value)
def test_radii_by_pop_group(self):
"""UNA: Test defining radii by population group."""
from natcap.invest import urban_nature_access
@ -704,24 +723,11 @@ class UNATests(unittest.TestCase):
self.assertAlmostEqual(
expected_value, summary_feature.GetField(fieldname))
def _assert_urban_nature(path, sum_value, min_value, max_value):
accessible_urban_nature_array = (
pygeoprocessing.raster_to_numpy_array(path))
valid_mask = ~utils.array_equals_nodata(
accessible_urban_nature_array,
urban_nature_access.FLOAT32_NODATA)
valid_pixels = accessible_urban_nature_array[valid_mask]
print(f"{numpy.sum(valid_pixels)}, {numpy.min(valid_pixels)}, "
f"{numpy.max(valid_pixels)}")
self.assertAlmostEqual(numpy.sum(valid_pixels), sum_value)
self.assertAlmostEqual(numpy.min(valid_pixels), min_value)
self.assertAlmostEqual(numpy.max(valid_pixels), max_value)
output_dir = os.path.join(args['workspace_dir'], 'output')
_assert_urban_nature(os.path.join(
self._assert_urban_nature(os.path.join(
output_dir, 'accessible_urban_nature_to_pop_male.tif'),
6221004.412597656, 1171.7352294921875, 11898.0712890625)
_assert_urban_nature(os.path.join(
self._assert_urban_nature(os.path.join(
output_dir, 'accessible_urban_nature_to_pop_female.tif'),
6221004.412597656, 1171.7352294921875, 11898.0712890625)