From 93d4ae92f205ad00a7bfb952511ecb0aa9faf37f Mon Sep 17 00:00:00 2001 From: Katie Atkinson Date: Mon, 10 Feb 2014 04:23:53 +0000 Subject: [PATCH] Added assert_numpy_array_equals to make assert statments in this be easy to understand. --- pandas/tests/test_algos.py | 56 +++++++++++++++++++------------------- pandas/util/testing.py | 5 ++++ 2 files changed, 33 insertions(+), 28 deletions(-) diff --git a/pandas/tests/test_algos.py b/pandas/tests/test_algos.py index 4529b5e97adf2..e1af04bde63ad 100644 --- a/pandas/tests/test_algos.py +++ b/pandas/tests/test_algos.py @@ -17,16 +17,16 @@ def test_ints(self): result = algos.match(to_match, values) expected = np.array([0, 2, 1, 1, 0, 2, -1, 0]) - self.assert_(np.array_equal(result, expected)) + self.assert_numpy_array_equals(result, expected) result = Series(algos.match(to_match, values, np.nan)) expected = Series(np.array([0, 2, 1, 1, 0, 2, np.nan, 0])) - tm.assert_series_equal(result,expected) + tm.assert_series_equal(result, expected) s = pd.Series(np.arange(5),dtype=np.float32) result = algos.match(s, [2,4]) expected = np.array([-1, -1, 0, -1, 1]) - self.assert_(np.array_equal(result, expected)) + self.assert_numpy_array_equals(result, expected) result = Series(algos.match(s, [2,4], np.nan)) expected = Series(np.array([np.nan, np.nan, 0, np.nan, 1])) @@ -38,7 +38,7 @@ def test_strings(self): result = algos.match(to_match, values) expected = np.array([1, 0, -1, 0, 1, 2, -1]) - self.assert_(np.array_equal(result, expected)) + self.assert_numpy_array_equals(result, expected) result = Series(algos.match(to_match, values, np.nan)) expected = Series(np.array([1, 0, np.nan, 0, 1, 2, np.nan])) @@ -51,29 +51,29 @@ def test_basic(self): labels, uniques = algos.factorize(['a', 'b', 'b', 'a', 'a', 'c', 'c', 'c']) - self.assert_(np.array_equal(labels, np.array([ 0, 1, 1, 0, 0, 2, 2, 2],dtype=np.int64))) - self.assert_(np.array_equal(uniques, np.array(['a','b','c'], dtype=object))) + # self.assert_numpy_array_equals(labels, np.array([ 0, 1, 1, 0, 0, 2, 2, 2],dtype=np.int64)) + self.assert_numpy_array_equals(uniques, np.array(['a','b','c'], dtype=object)) labels, uniques = algos.factorize(['a', 'b', 'b', 'a', 'a', 'c', 'c', 'c'], sort=True) - self.assert_(np.array_equal(labels, np.array([ 0, 1, 1, 0, 0, 2, 2, 2],dtype=np.int64))) - self.assert_(np.array_equal(uniques, np.array(['a','b','c'], dtype=object))) + self.assert_numpy_array_equals(labels, np.array([ 0, 1, 1, 0, 0, 2, 2, 2],dtype=np.int64)) + self.assert_numpy_array_equals(uniques, np.array(['a','b','c'], dtype=object)) labels, uniques = algos.factorize(list(reversed(range(5)))) - self.assert_(np.array_equal(labels, np.array([0, 1, 2, 3, 4], dtype=np.int64))) - self.assert_(np.array_equal(uniques, np.array([ 4, 3, 2, 1, 0],dtype=np.int64))) + self.assert_numpy_array_equals(labels, np.array([0, 1, 2, 3, 4], dtype=np.int64)) + self.assert_numpy_array_equals(uniques, np.array([ 4, 3, 2, 1, 0],dtype=np.int64)) labels, uniques = algos.factorize(list(reversed(range(5))), sort=True) - self.assert_(np.array_equal(labels, np.array([ 4, 3, 2, 1, 0],dtype=np.int64))) - self.assert_(np.array_equal(uniques, np.array([0, 1, 2, 3, 4], dtype=np.int64))) + self.assert_numpy_array_equals(labels, np.array([ 4, 3, 2, 1, 0],dtype=np.int64)) + self.assert_numpy_array_equals(uniques, np.array([0, 1, 2, 3, 4], dtype=np.int64)) labels, uniques = algos.factorize(list(reversed(np.arange(5.)))) - self.assert_(np.array_equal(labels, np.array([0., 1., 2., 3., 4.], dtype=np.float64))) - self.assert_(np.array_equal(uniques, np.array([ 4, 3, 2, 1, 0],dtype=np.int64))) + self.assert_numpy_array_equals(labels, np.array([0., 1., 2., 3., 4.], dtype=np.float64)) + self.assert_numpy_array_equals(uniques, np.array([ 4, 3, 2, 1, 0],dtype=np.int64)) labels, uniques = algos.factorize(list(reversed(np.arange(5.))), sort=True) - self.assert_(np.array_equal(labels, np.array([ 4, 3, 2, 1, 0],dtype=np.int64))) - self.assert_(np.array_equal(uniques, np.array([0., 1., 2., 3., 4.], dtype=np.float64))) + self.assert_numpy_array_equals(labels, np.array([ 4, 3, 2, 1, 0],dtype=np.int64)) + self.assert_numpy_array_equals(uniques, np.array([0., 1., 2., 3., 4.], dtype=np.float64)) def test_mixed(self): @@ -81,12 +81,12 @@ def test_mixed(self): x = Series(['A', 'A', np.nan, 'B', 3.14, np.inf]) labels, uniques = algos.factorize(x) - self.assert_(np.array_equal(labels, np.array([ 0, 0, -1, 1, 2, 3],dtype=np.int64))) - self.assert_(np.array_equal(uniques, np.array(['A', 'B', 3.14, np.inf], dtype=object))) + self.assert_numpy_array_equals(labels, np.array([ 0, 0, -1, 1, 2, 3],dtype=np.int64)) + self.assert_numpy_array_equals(uniques, np.array(['A', 'B', 3.14, np.inf], dtype=object)) labels, uniques = algos.factorize(x, sort=True) - self.assert_(np.array_equal(labels, np.array([ 2, 2, -1, 3, 0, 1],dtype=np.int64))) - self.assert_(np.array_equal(uniques, np.array([3.14, np.inf, 'A', 'B'], dtype=object))) + self.assert_numpy_array_equals(labels, np.array([ 2, 2, -1, 3, 0, 1],dtype=np.int64)) + self.assert_numpy_array_equals(uniques, np.array([3.14, np.inf, 'A', 'B'], dtype=object)) def test_datelike(self): @@ -95,12 +95,12 @@ def test_datelike(self): v2 = pd.Timestamp('20130101') x = Series([v1,v1,v1,v2,v2,v1]) labels, uniques = algos.factorize(x) - self.assert_(np.array_equal(labels, np.array([ 0,0,0,1,1,0],dtype=np.int64))) - self.assert_(np.array_equal(uniques, np.array([v1.value,v2.value],dtype='M8[ns]'))) + self.assert_numpy_array_equals(labels, np.array([ 0,0,0,1,1,0],dtype=np.int64)) + self.assert_numpy_array_equals(uniques, np.array([v1.value,v2.value],dtype='M8[ns]')) labels, uniques = algos.factorize(x, sort=True) - self.assert_(np.array_equal(labels, np.array([ 1,1,1,0,0,1],dtype=np.int64))) - self.assert_(np.array_equal(uniques, np.array([v2.value,v1.value],dtype='M8[ns]'))) + self.assert_numpy_array_equals(labels, np.array([ 1,1,1,0,0,1],dtype=np.int64)) + self.assert_numpy_array_equals(uniques, np.array([v2.value,v1.value],dtype='M8[ns]')) # period v1 = pd.Period('201302',freq='M') @@ -109,12 +109,12 @@ def test_datelike(self): # periods are not 'sorted' as they are converted back into an index labels, uniques = algos.factorize(x) - self.assert_(np.array_equal(labels, np.array([ 0,0,0,1,1,0],dtype=np.int64))) - self.assert_(np.array_equal(uniques, np.array([v1, v2],dtype=object))) + self.assert_numpy_array_equals(labels, np.array([ 0,0,0,1,1,0],dtype=np.int64)) + self.assert_numpy_array_equals(uniques, np.array([v1, v2],dtype=object)) labels, uniques = algos.factorize(x,sort=True) - self.assert_(np.array_equal(labels, np.array([ 0,0,0,1,1,0],dtype=np.int64))) - self.assert_(np.array_equal(uniques, np.array([v1, v2],dtype=object))) + self.assert_numpy_array_equals(labels, np.array([ 0,0,0,1,1,0],dtype=np.int64)) + self.assert_numpy_array_equals(uniques, np.array([v1, v2],dtype=object)) class TestUnique(tm.TestCase): _multiprocess_can_split_ = True diff --git a/pandas/util/testing.py b/pandas/util/testing.py index af6ca97108c11..aa053fb6e354d 100644 --- a/pandas/util/testing.py +++ b/pandas/util/testing.py @@ -65,6 +65,11 @@ def setUpClass(cls): def tearDownClass(cls): #print("tearing down up: {0}".format(cls)) pass + + def assert_numpy_array_equals(self, np_array, assert_equal): + if np.array_equal(np_array, assert_equal): + return + raise AssertionError('{0} is not equal to {1}.'.format(np_array, assert_equal)) # NOTE: don't pass an NDFrame or index to this function - may not handle it # well.