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()