Added more unit tests for normalize_lat_lon_values() helper

Project: http://git-wip-us.apache.org/repos/asf/climate/repo
Commit: http://git-wip-us.apache.org/repos/asf/climate/commit/9de222e1
Tree: http://git-wip-us.apache.org/repos/asf/climate/tree/9de222e1
Diff: http://git-wip-us.apache.org/repos/asf/climate/diff/9de222e1

Branch: refs/heads/master
Commit: 9de222e18bdfc0679f4ddec9edee5ea1c2059fff
Parents: a663e15
Author: bassdx <[email protected]>
Authored: Sat Apr 5 02:32:14 2014 -0600
Committer: bassdx <[email protected]>
Committed: Sat Apr 5 02:32:14 2014 -0600

----------------------------------------------------------------------
 ocw/tests/test_dataset.py | 12 ++++++---
 ocw/tests/test_utils.py   | 55 ++++++++++++++++++++++++++++++++++++++----
 2 files changed, 58 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/climate/blob/9de222e1/ocw/tests/test_dataset.py
----------------------------------------------------------------------
diff --git a/ocw/tests/test_dataset.py b/ocw/tests/test_dataset.py
index 4dd57f6..1694b20 100644
--- a/ocw/tests/test_dataset.py
+++ b/ocw/tests/test_dataset.py
@@ -90,13 +90,17 @@ class TestInvalidDatasetInit(unittest.TestCase):
 
     def test_lons_values_incorrectly_gridded(self):
         times = np.array([dt.datetime(2000, x, 1) for x in range(1, 13)])
-        lats = np.array(range(-30, 30))
-        bad_lons = np.array(range(360))
-        flat_array = np.array(range(len(times) * len(lats) * len(bad_lons)))
+        lats = np.arange(-30, 30)
+        bad_lons = np.arange(360)
+        flat_array = np.arange(len(times) * len(lats) * len(bad_lons))
         values = flat_array.reshape(len(times), len(lats), len(bad_lons))
 
         ds = Dataset(lats, bad_lons, times, values)
-        self.assertTrue(np.array_equal(ds.lons, range(-180, 180)))
+        self.assertTrue(np.array_equal(ds.lons, np.arange(-180, 180)))
+    
+    def test_reversed_lats(self):
+        ds = Dataset(self.lat[::-1], self.lon, self.time, self.value)
+        self.assertTrue(np.array_equal(ds.lats, self.lat))
 
 class TestDatasetFunctions(unittest.TestCase):
     def setUp(self):

http://git-wip-us.apache.org/repos/asf/climate/blob/9de222e1/ocw/tests/test_utils.py
----------------------------------------------------------------------
diff --git a/ocw/tests/test_utils.py b/ocw/tests/test_utils.py
index 4ca63c0..98387e6 100644
--- a/ocw/tests/test_utils.py
+++ b/ocw/tests/test_utils.py
@@ -87,16 +87,61 @@ class TestBaseTimeStringParse(unittest.TestCase):
 class TestNormalizeLatLonValues(unittest.TestCase):
     def setUp(self):
         times = np.array([datetime.datetime(2000, x, 1) for x in range(1, 13)])
-        self.lats = np.array(range(-30, 30))
-        self.lons = np.array(range(360))
-        flat_array = np.array(range(len(times) * len(self.lats) * 
len(self.lons)))
+        self.lats = np.arange(-30, 30)
+        self.lons = np.arange(360)
+        flat_array = np.arange(len(times) * len(self.lats) * len(self.lons))
         self.values = flat_array.reshape(len(times), len(self.lats), 
len(self.lons))
+        self.lats2 = np.array([-30, 0, 30])
+        self.lons2 = np.array([0, 100, 200, 300])
+        self.values2 = np.arange(12).reshape(3, 4)
+        self.lats_unsorted = np.array([-30, 20, -50])
+        self.lons_unsorted = np.array([-30, 20, -50, 40])
 
     def test_full_lons_shift(self):
         lats, lons, values = utils.normalize_lat_lon_values(self.lats,
                                                             self.lons,
                                                             self.values)
-        self.assertTrue(np.array_equal(lons, range(-180, 180)))
-
+        self.assertTrue(np.array_equal(lons, np.arange(-180, 180)))
+        
+    def test_lats_reversed(self):
+       lons2 = np.arange(-180, 180)
+        lats, lons, values = utils.normalize_lat_lon_values(self.lats[::-1],
+                                                            lons2,
+                                                            self.values[:, 
::-1, :])
+        self.assertTrue(np.array_equal(lats, self.lats))
+        self.assertTrue(np.array_equal(values, self.values))
+    
+    def test_lons_shift_values(self):
+        expected_vals = np.array([[2, 3, 0, 1],
+                                  [6, 7, 4, 5],
+                                  [10, 11, 8, 9]])
+        lats, lons, values = utils.normalize_lat_lon_values(self.lats2,
+                                                            self.lons2,
+                                                            self.values2)
+        self.assertTrue(np.array_equal(values, expected_vals))
+        
+    def test_shift_and_reversed(self):
+        expected_vals = np.array([[10, 11, 8, 9],
+                                  [6, 7, 4, 5],
+                                  [2, 3, 0, 1]])
+        lats, lons, values = utils.normalize_lat_lon_values(self.lats2[::-1],
+                                                            self.lons2,
+                                                            self.values2)
+        self.assertTrue(np.array_equal(values, expected_vals))
+        
+    def test_lats_not_sorted(self):
+        self.assertRaises(ValueError, 
+                          utils.normalize_lat_lon_values,
+                          self.lats_unsorted,
+                          self.lons2,
+                          self.values2)
+                          
+    def test_lons_not_sorted(self):
+        self.assertRaises(ValueError, 
+                          utils.normalize_lat_lon_values,
+                          self.lats2,
+                          self.lons_unsorted,
+                          self.values2)
+    
 if __name__ == '__main__':
     unittest.main()

Reply via email to