You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@climate.apache.org by jo...@apache.org on 2013/08/15 22:45:21 UTC
svn commit: r1514482 -
/incubator/climate/branches/RefactorInput/ocw/tests/test_dataset_processor.py
Author: joyce
Date: Thu Aug 15 20:45:21 2013
New Revision: 1514482
URL: http://svn.apache.org/r1514482
Log:
CLIMATE-237 - Make subset tests more manageable.
Modified:
incubator/climate/branches/RefactorInput/ocw/tests/test_dataset_processor.py
Modified: incubator/climate/branches/RefactorInput/ocw/tests/test_dataset_processor.py
URL: http://svn.apache.org/viewvc/incubator/climate/branches/RefactorInput/ocw/tests/test_dataset_processor.py?rev=1514482&r1=1514481&r2=1514482&view=diff
==============================================================================
--- incubator/climate/branches/RefactorInput/ocw/tests/test_dataset_processor.py (original)
+++ incubator/climate/branches/RefactorInput/ocw/tests/test_dataset_processor.py Thu Aug 15 20:45:21 2013
@@ -146,10 +146,10 @@ class TestSpatialRegrid(unittest.TestCas
self.assertSequenceEqual(regridded_data_shape, expected_data_shape)
class TestSubset(unittest.TestCase):
- def test_subset(self):
- target_dataset = ten_year_monthly_dataset()
+ def setUp(self):
+ self.target_dataset = ten_year_monthly_dataset()
- subregion = {
+ self.subregion = {
'latMin': -81,
'latMax': 81,
'lonMin': -161,
@@ -158,100 +158,108 @@ class TestSubset(unittest.TestCase):
'end': datetime.datetime(2004, 1, 1)
}
- subset = dp.subset(subregion, target_dataset)
+ def test_subset(self):
+ subset = dp.subset(self.subregion, self.target_dataset)
self.assertEqual(subset.lats.shape[0], 82)
self.assertEqual(subset.lons.shape[0], 162)
self.assertEqual(subset.times.shape[0], 37)
self.assertEqual(subset.values.shape, (37, 82, 162))
- def test_subset_with_bad_subregion(self):
- target_dataset = ten_year_monthly_dataset()
- target_dataset.lats = np.array(range(-89, 88, 2))
- target_dataset.lons = np.array(range(-179, 178, 2))
-
- subregion = {
- 'latMin': -81,
- 'latMax': 81,
- 'lonMin': -161,
- 'lonMax': 161,
- 'start': datetime.datetime(2001, 1, 1),
- 'end': datetime.datetime(2004, 1, 1)
- }
-
+ def test_subset_with_out_of_range_subregion(self):
# Out of range latMin test
- subregion['latMin'] = -91
- _test_bad_subregion_object(subregion, target_dataset)
- subregion['latMin'] = -81
+ self.subregion['latMin'] = -91
+ with self.assertRaises(ValueError):
+ dp.subset(self.subregion, self.target_dataset)
+ self.subregion['latMin'] = -81
# Out of range latMax test
- subregion['latMax'] = 91
- _test_bad_subregion_object(subregion, target_dataset)
- subregion['latMax'] = 81
+ self.subregion['latMax'] = 91
+ with self.assertRaises(ValueError):
+ dp.subset(self.subregion, self.target_dataset)
+ self.subregion['latMax'] = 81
# Out of range lonMin test
- subregion['lonMin'] = -191
- _test_bad_subregion_object(subregion, target_dataset)
- subregion['lonMin'] = -161
+ self.subregion['lonMin'] = -191
+ with self.assertRaises(ValueError):
+ dp.subset(self.subregion, self.target_dataset)
+ self.subregion['lonMin'] = -161
# Out of range lonMax test
- subregion['lonMax'] = 191
- _test_bad_subregion_object(subregion, target_dataset)
- subregion['lonMax'] = 161
+ self.subregion['lonMax'] = 191
+ with self.assertRaises(ValueError):
+ dp.subset(self.subregion, self.target_dataset)
+ self.subregion['lonMax'] = 161
+
+ # Invalid start time
+ self.subregion['start'] = "This is not a datetime object!!"
+ with self.assertRaises(ValueError):
+ dp.subset(self.subregion, self.target_dataset)
+ self.subregion['start'] = datetime.datetime(2001, 1, 1)
+
+ # Invalid end time
+ self.subregion['end'] = "This is not a datetime object!!"
+ with self.assertRaises(ValueError):
+ dp.subset(self.subregion, self.target_dataset)
+ self.subregion['end'] = datetime.datetime(2010, 1, 1)
+
+ def test_subset_with_out_of_dataset_bounds_subregion(self):
+ self.target_dataset.lats = np.array(range(-89, 88, 2))
+ self.target_dataset.lons = np.array(range(-179, 178, 2))
# Out of dataset bounds latMin test
- subregion['latMin'] = -90
- _test_bad_subregion_object(subregion, target_dataset)
- subregion['latMin'] = -81
+ self.subregion['latMin'] = -90
+ with self.assertRaises(ValueError):
+ dp.subset(self.subregion, self.target_dataset)
+ self.subregion['latMin'] = -81
# Out of dataset bounds latMax test
- subregion['latMax'] = 90
- _test_bad_subregion_object(subregion, target_dataset)
- subregion['latMax'] = 81
+ self.subregion['latMax'] = 90
+ with self.assertRaises(ValueError):
+ dp.subset(self.subregion, self.target_dataset)
+ self.subregion['latMax'] = 81
# Out of dataset bounds lonMin test
- subregion['lonMin'] = -180
- _test_bad_subregion_object(subregion, target_dataset)
- subregion['lonMin'] = -161
+ self.subregion['lonMin'] = -180
+ with self.assertRaises(ValueError):
+ dp.subset(self.subregion, self.target_dataset)
+ self.subregion['lonMin'] = -161
# Out of dataset bounds lonMax test
- subregion['lonMax'] = 180
- _test_bad_subregion_object(subregion, target_dataset)
- subregion['lonMax'] = 161
-
- # lat min/max value mismatch
- subregion['latMin'] = 82
- _test_bad_subregion_object(subregion, target_dataset)
- subregion['latMin'] = -81
-
- # lon min/max value mismatch
- subregion['lonMin'] = 162
- _test_bad_subregion_object(subregion, target_dataset)
- subregion['lonMin'] = -161
+ self.subregion['lonMax'] = 180
+ with self.assertRaises(ValueError):
+ dp.subset(self.subregion, self.target_dataset)
+ self.subregion['lonMax'] = 161
# Out of dataset bounds start time test
- subregion['start'] = datetime.datetime(1999, 1, 1)
- _test_bad_subregion_object(subregion, target_dataset)
- subregion['start'] = datetime.datetime(2001, 1, 1)
+ self.subregion['start'] = datetime.datetime(1999, 1, 1)
+ with self.assertRaises(ValueError):
+ dp.subset(self.subregion, self.target_dataset)
+ self.subregion['start'] = datetime.datetime(2001, 1, 1)
# Out of dataset bounds end time test
- subregion['end'] = datetime.datetime(2011, 1, 1)
- _test_bad_subregion_object(subregion, target_dataset)
- subregion['end'] = datetime.datetime(2010, 1, 1)
+ self.subregion['end'] = datetime.datetime(2011, 1, 1)
+ with self.assertRaises(ValueError):
+ dp.subset(self.subregion, self.target_dataset)
+ self.subregion['end'] = datetime.datetime(2010, 1, 1)
- # Invalid start time
- subregion['start'] = "This is not a datetime object!!"
- _test_bad_subregion_object(subregion, target_dataset)
- subregion['start'] = datetime.datetime(2001, 1, 1)
+ def test_subset_with_mistmatched_bounds_subregion(self):
+ # lat min/max value mismatch
+ self.subregion['latMin'] = 82
+ with self.assertRaises(ValueError):
+ dp.subset(self.subregion, self.target_dataset)
+ self.subregion['latMin'] = -81
- # Invalid end time
- subregion['end'] = "This is not a datetime object!!"
- _test_bad_subregion_object(subregion, target_dataset)
- subregion['end'] = datetime.datetime(2010, 1, 1)
+ # lon min/max value mismatch
+ self.subregion['lonMin'] = 162
+ with self.assertRaises(ValueError):
+ dp.subset(self.subregion, self.target_dataset)
+ self.subregion['lonMin'] = -161
# start/end time range mismatch
- subregion['start'] = datetime.datetime(2010, 2, 2)
- _test_bad_subregion_object(subregion, target_dataset)
- subregion['start'] = datetime.datetime(2001, 1, 1)
+ self.subregion['start'] = datetime.datetime(2010, 2, 2)
+ with self.assertRaises(ValueError):
+ dp.subset(self.subregion, self.target_dataset)
+ self.subregion['start'] = datetime.datetime(2001, 1, 1)
def ten_year_monthly_dataset():
@@ -279,17 +287,6 @@ def build_ten_cube_dataset(value):
values = values * value
dataset = ds.Dataset(lats, lons, times, values)
return dataset
-
-def _test_bad_subregion_object(subregion, target_dataset):
- try:
- subset = dp.subset(subregion, target_dataset)
- # The subregion should be invalid so we shouldn't get here. If we
- # do then our code is failing!!!
- raise self.failureException()
- except ValueError:
- # We expect a ValueError since the subregion object is invalid in
- # some way. Getting that error means our test is successful!
- pass
if __name__ == '__main__':
unittest.main()