From de697cea23c4c553ee5014dbb7437aee2359af06 Mon Sep 17 00:00:00 2001 From: jreback Date: Mon, 4 Nov 2013 16:52:47 -0500 Subject: [PATCH] BUG/TST: bug in the test apparatus when dtypes are equal in a Series but the values are not equal --- pandas/src/testing.pyx | 7 ++++--- pandas/tests/test_testing.py | 30 ++++++++++++++++++++++++++++-- 2 files changed, 32 insertions(+), 5 deletions(-) diff --git a/pandas/src/testing.pyx b/pandas/src/testing.pyx index 404b97879e2be..c573d8b2afbad 100644 --- a/pandas/src/testing.pyx +++ b/pandas/src/testing.pyx @@ -88,9 +88,10 @@ cpdef assert_almost_equal(a, b, bint check_less_precise=False): return True except: pass - else: - for i in xrange(na): - assert_almost_equal(a[i], b[i], check_less_precise) + + for i in xrange(na): + assert_almost_equal(a[i], b[i], check_less_precise) + return True elif isiterable(b): assert False, ( diff --git a/pandas/tests/test_testing.py b/pandas/tests/test_testing.py index 8431d91a8fff6..c3c1c4f5977e6 100644 --- a/pandas/tests/test_testing.py +++ b/pandas/tests/test_testing.py @@ -6,9 +6,9 @@ import nose import numpy as np import sys - +from pandas import Series from pandas.util.testing import ( - assert_almost_equal, assertRaisesRegexp, raise_with_traceback + assert_almost_equal, assertRaisesRegexp, raise_with_traceback, assert_series_equal ) # let's get meta. @@ -127,3 +127,29 @@ def test_raise_with_traceback(self): e = LookupError("error_text") _, _, traceback = sys.exc_info() raise_with_traceback(e, traceback) + +class TestAssertSeriesEqual(unittest.TestCase): + _multiprocess_can_split_ = True + + def _assert_equal(self, x, y, **kwargs): + assert_series_equal(x,y,**kwargs) + assert_series_equal(y,x,**kwargs) + + def _assert_not_equal(self, a, b, **kwargs): + self.assertRaises(AssertionError, assert_series_equal, a, b, **kwargs) + self.assertRaises(AssertionError, assert_series_equal, b, a, **kwargs) + + def test_equal(self): + self._assert_equal(Series(range(3)),Series(range(3))) + self._assert_equal(Series(list('abc')),Series(list('abc'))) + + def test_not_equal(self): + self._assert_not_equal(Series(range(3)),Series(range(3))+1) + self._assert_not_equal(Series(list('abc')),Series(list('xyz'))) + self._assert_not_equal(Series(range(3)),Series(range(4))) + self._assert_not_equal(Series(range(3)),Series(range(3),dtype='float64')) + self._assert_not_equal(Series(range(3)),Series(range(3),index=[1,2,4])) + + # ATM meta data is not checked in assert_series_equal + # self._assert_not_equal(Series(range(3)),Series(range(3),name='foo'),check_names=True) +