diff options
Diffstat (limited to 'pint/testsuite/test_numpy.py')
-rw-r--r-- | pint/testsuite/test_numpy.py | 111 |
1 files changed, 56 insertions, 55 deletions
diff --git a/pint/testsuite/test_numpy.py b/pint/testsuite/test_numpy.py index 28fd42f..3b753d4 100644 --- a/pint/testsuite/test_numpy.py +++ b/pint/testsuite/test_numpy.py @@ -3,10 +3,11 @@ from __future__ import division, unicode_literals, print_function, absolute_import from pint.compat import np, unittest -from pint.testsuite import TestCase, helpers +from pint.testsuite import QuantityTestCase, helpers + @helpers.requires_numpy() -class TestNumpyMethods(TestCase): +class TestNumpyMethods(QuantityTestCase): FORCE_NDARRAY = True @@ -19,86 +20,86 @@ class TestNumpyMethods(TestCase): def test_sum(self): self.assertEqual(self.q.sum(), 10*self.ureg.m) - self.assertSequenceEqual(self.q.sum(0), [4, 6]*self.ureg.m) - self.assertSequenceEqual(self.q.sum(1), [3, 7]*self.ureg.m) + self.assertQuantityEqual(self.q.sum(0), [4, 6]*self.ureg.m) + self.assertQuantityEqual(self.q.sum(1), [3, 7]*self.ureg.m) def test_fill(self): tmp = self.q tmp.fill(6 * self.ureg.ft) - self.assertSequenceEqual(tmp, [[6, 6], [6, 6]] * self.ureg.ft) + self.assertQuantityEqual(tmp, [[6, 6], [6, 6]] * self.ureg.ft) tmp.fill(5 * self.ureg.m) - self.assertSequenceEqual(tmp, [[5, 5], [5, 5]] * self.ureg.m) + self.assertQuantityEqual(tmp, [[5, 5], [5, 5]] * self.ureg.m) def test_reshape(self): - self.assertSequenceEqual(self.q.reshape([1,4]), [[1, 2, 3, 4]] * self.ureg.m) + self.assertQuantityEqual(self.q.reshape([1,4]), [[1, 2, 3, 4]] * self.ureg.m) def test_transpose(self): - self.assertSequenceEqual(self.q.transpose(), [[1, 3], [2, 4]] * self.ureg.m) + self.assertQuantityEqual(self.q.transpose(), [[1, 3], [2, 4]] * self.ureg.m) def test_flatten(self): - self.assertSequenceEqual(self.q.flatten(), [1, 2, 3, 4] * self.ureg.m) + self.assertQuantityEqual(self.q.flatten(), [1, 2, 3, 4] * self.ureg.m) def test_ravel(self): - self.assertSequenceEqual(self.q.ravel(), [1, 2, 3, 4] * self.ureg.m) + self.assertQuantityEqual(self.q.ravel(), [1, 2, 3, 4] * self.ureg.m) def test_squeeze(self): - self.assertSequenceEqual( + self.assertQuantityEqual( self.q.reshape([1,4]).squeeze(), [1, 2, 3, 4] * self.ureg.m ) def test_take(self): - self.assertSequenceEqual(self.q.take([0,1,2,3]), self.q.flatten()) + self.assertQuantityEqual(self.q.take([0,1,2,3]), self.q.flatten()) def test_put(self): q = [1., 2., 3., 4.] * self.ureg.m q.put([0, 2], [10.,20.]*self.ureg.m) - self.assertSequenceEqual(q, [10., 2., 20., 4.]*self.ureg.m) + self.assertQuantityEqual(q, [10., 2., 20., 4.]*self.ureg.m) q = [1., 2., 3., 4.] * self.ureg.m q.put([0, 2], [1., 2.]*self.ureg.mm) - self.assertSequenceEqual(q, [0.001, 2., 0.002, 4.]*self.ureg.m) + self.assertQuantityEqual(q, [0.001, 2., 0.002, 4.]*self.ureg.m) q = [1., 2., 3., 4.] * self.ureg.m / self.ureg.mm q.put([0, 2], [1., 2.]) - self.assertSequenceEqual(q, [0.001, 2., 0.002, 4.]*self.ureg.m/self.ureg.mm) + self.assertQuantityEqual(q, [0.001, 2., 0.002, 4.]*self.ureg.m/self.ureg.mm) q = [1., 2., 3., 4.] * self.ureg.m self.assertRaises(ValueError, q.put, [0, 2], [4., 6.] * self.ureg.J) self.assertRaises(ValueError, q.put, [0, 2], [4., 6.]) def test_repeat(self): - self.assertSequenceEqual(self.q.repeat(2), [1,1,2,2,3,3,4,4]*self.ureg.m) + self.assertQuantityEqual(self.q.repeat(2), [1,1,2,2,3,3,4,4]*self.ureg.m) def test_sort(self): q = [4, 5, 2, 3, 1, 6] * self.ureg.m q.sort() - self.assertSequenceEqual(q, [1, 2, 3, 4, 5, 6] * self.ureg.m) + self.assertQuantityEqual(q, [1, 2, 3, 4, 5, 6] * self.ureg.m) def test_argsort(self): q = [1, 4, 5, 6, 2, 9] * self.ureg.MeV - self.assertSequenceEqual(q.argsort(), [0, 4, 1, 2, 3, 5]) + np.testing.assert_array_equal(q.argsort(), [0, 4, 1, 2, 3, 5]) def test_diagonal(self): q = [[1, 2, 3], [1, 2, 3], [1, 2, 3]] * self.ureg.m - self.assertSequenceEqual(q.diagonal(offset=1), [2, 3] * self.ureg.m) + self.assertQuantityEqual(q.diagonal(offset=1), [2, 3] * self.ureg.m) def test_compress(self): - self.assertSequenceEqual(self.q.compress([False, True], axis=0), + self.assertQuantityEqual(self.q.compress([False, True], axis=0), [[3, 4]] * self.ureg.m) - self.assertSequenceEqual(self.q.compress([False, True], axis=1), + self.assertQuantityEqual(self.q.compress([False, True], axis=1), [[2], [4]] * self.ureg.m) def test_searchsorted(self): q = self.q.flatten() - self.assertSequenceEqual(q.searchsorted([1.5, 2.5] * self.ureg.m), - [1, 2]) + np.testing.assert_array_equal(q.searchsorted([1.5, 2.5] * self.ureg.m), + [1, 2]) q = self.q.flatten() self.assertRaises(ValueError, q.searchsorted, [1.5, 2.5]) def test_nonzero(self): q = [1, 0, 5, 6, 0, 9] * self.ureg.m - self.assertSequenceEqual(q.nonzero()[0], [0, 2, 3, 5]) + np.testing.assert_array_equal(q.nonzero()[0], [0, 2, 3, 5]) def test_max(self): self.assertEqual(self.q.max(), 4*self.ureg.m) @@ -116,15 +117,15 @@ class TestNumpyMethods(TestCase): self.assertEqual(self.q.ptp(), 3 * self.ureg.m) def test_clip(self): - self.assertSequenceEqual( + self.assertQuantityEqual( self.q.clip(max=2*self.ureg.m), [[1, 2], [2, 2]] * self.ureg.m ) - self.assertSequenceEqual( + self.assertQuantityEqual( self.q.clip(min=3*self.ureg.m), [[3, 3], [3, 4]] * self.ureg.m ) - self.assertSequenceEqual( + self.assertQuantityEqual( self.q.clip(min=2*self.ureg.m, max=3*self.ureg.m), [[2, 2], [3, 3]] * self.ureg.m ) @@ -133,15 +134,15 @@ class TestNumpyMethods(TestCase): def test_round(self): q = [1, 1.33, 5.67, 22] * self.ureg.m - self.assertSequenceEqual(q.round(0), [1, 1, 6, 22] * self.ureg.m) - self.assertSequenceEqual(q.round(-1), [0, 0, 10, 20] * self.ureg.m) - self.assertSequenceEqual(q.round(1), [1, 1.3, 5.7, 22] * self.ureg.m) + self.assertQuantityEqual(q.round(0), [1, 1, 6, 22] * self.ureg.m) + self.assertQuantityEqual(q.round(-1), [0, 0, 10, 20] * self.ureg.m) + self.assertQuantityEqual(q.round(1), [1, 1.3, 5.7, 22] * self.ureg.m) def test_trace(self): self.assertEqual(self.q.trace(), (1+4) * self.ureg.m) def test_cumsum(self): - self.assertSequenceEqual(self.q.cumsum(), [1, 3, 6, 10] * self.ureg.m) + self.assertQuantityEqual(self.q.cumsum(), [1, 3, 6, 10] * self.ureg.m) def test_mean(self): self.assertEqual(self.q.mean(), 2.5 * self.ureg.m) @@ -150,14 +151,14 @@ class TestNumpyMethods(TestCase): self.assertEqual(self.q.var(), 1.25*self.ureg.m**2) def test_std(self): - self.assertAlmostEqual(self.q.std(), 1.11803*self.ureg.m, delta=1e-5) + self.assertQuantityAlmostEqual(self.q.std(), 1.11803*self.ureg.m, rtol=1e-5) def test_prod(self): self.assertEqual(self.q.prod(), 24 * self.ureg.m**4) def test_cumprod(self): self.assertRaises(ValueError, self.q.cumprod) - self.assertSequenceEqual((self.q / self.ureg.m).cumprod(), [1, 2, 6, 24]) + self.assertQuantityEqual((self.q / self.ureg.m).cumprod(), [1, 2, 6, 24]) def test_integer_div(self): a = [1] * self.ureg.m @@ -169,15 +170,15 @@ class TestNumpyMethods(TestCase): self.assertEqual(a.magnitude[0], 0) def test_conj(self): - self.assertSequenceEqual((self.q*(1+1j)).conj(), self.q*(1-1j)) - self.assertSequenceEqual((self.q*(1+1j)).conjugate(), self.q*(1-1j)) + self.assertQuantityEqual((self.q*(1+1j)).conj(), self.q*(1-1j)) + self.assertQuantityEqual((self.q*(1+1j)).conjugate(), self.q*(1-1j)) def test_getitem(self): self.assertRaises(IndexError, self.q.__getitem__, (0,10)) - self.assertSequenceEqual(self.q[0], [1,2]*self.ureg.m) + self.assertQuantityEqual(self.q[0], [1,2]*self.ureg.m) self.assertEqual(self.q[1,1], 4*self.ureg.m) - def test_setitem (self): + def test_setitem(self): self.assertRaises(ValueError, self.q.__setitem__, (0,0), 1) self.assertRaises(ValueError, self.q.__setitem__, (0,0), 1*self.ureg.J) self.assertRaises(ValueError, self.q.__setitem__, 0, 1) @@ -186,24 +187,24 @@ class TestNumpyMethods(TestCase): q = self.q.copy() q[0] = 1*self.ureg.m - self.assertSequenceEqual(q, [[1,1],[3,4]]*self.ureg.m) + self.assertQuantityEqual(q, [[1,1],[3,4]]*self.ureg.m) q[0] = (1,2)*self.ureg.m - self.assertSequenceEqual(q, self.q) + self.assertQuantityEqual(q, self.q) q[:] = 1*self.ureg.m - self.assertSequenceEqual(q, [[1,1],[1,1]]*self.ureg.m) + self.assertQuantityEqual(q, [[1,1],[1,1]]*self.ureg.m) # check and see that dimensionless num bers work correctly q = [0,1,2,3]*self.ureg.dimensionless q[0] = 1 - self.assertSequenceEqual(q, [1,1,2,3]) + self.assertQuantityEqual(q, np.asarray([1,1,2,3])) q[0] = self.ureg.m/self.ureg.mm - self.assertSequenceEqual(q, [1000, 1,2,3]) + self.assertQuantityEqual(q, np.asarray([1000, 1,2,3])) - q = [0.,1.,2.,3.] * self.ureg.m/self.ureg.mm + q = [0.,1.,2.,3.] * self.ureg.m / self.ureg.mm q[0] = 1. - self.assertQuantityEqual(q, [0.001,1,2,3]*self.ureg.m/self.ureg.mm) + self.assertQuantityEqual(q, [0.001,1,2,3]*self.ureg.m / self.ureg.mm) def test_iterator(self): for q, v in zip(self.q.flatten(), [1, 2, 3, 4]): @@ -214,17 +215,17 @@ class TestNumpyMethods(TestCase): """ x = self.q.magnitude u = self.Q_(np.ones(x.shape)) - self.assertSequenceEqual(x / self.q, u * x / self.q) - self.assertSequenceEqual(x * self.q, u * x * self.q) - self.assertSequenceEqual(x + u, u + x) - self.assertSequenceEqual(x - u, -(u - x)) + self.assertQuantityEqual(x / self.q, u * x / self.q) + self.assertQuantityEqual(x * self.q, u * x * self.q) + self.assertQuantityEqual(x + u, u + x) + self.assertQuantityEqual(x - u, -(u - x)) def test_pickle(self): import pickle def pickle_test(q): pq = pickle.loads(pickle.dumps(q)) - self.assertSequenceEqual(q.magnitude, pq.magnitude) + np.testing.assert_array_equal(q.magnitude, pq.magnitude) self.assertEqual(q.units, pq.units) pickle_test([10,20]*self.ureg.m) @@ -233,9 +234,9 @@ class TestNumpyMethods(TestCase): x = self.q.magnitude u = self.Q_(np.ones(x.shape)) - self.assertSequenceEqual(u, u) - self.assertSequenceEqual(u == u, u.magnitude == u.magnitude) - self.assertSequenceEqual(u == 1, u.magnitude == 1) + self.assertQuantityEqual(u, u) + self.assertQuantityEqual(u == u, u.magnitude == u.magnitude) + self.assertQuantityEqual(u == 1, u.magnitude == 1) from pint.testsuite.test_umath import TestUFuncs @@ -259,7 +260,7 @@ class TestNumpyNotSupported(TestUFuncs): def test_diff(self): """Units are erased by asanyarray, Quantity does not inherit from NDArray """ - self.assertSequenceEqual(np.diff(self.q, 1), [1, 1, 1] * self.ureg.J) + self.assertQuantityEqual(np.diff(self.q, 1), [1, 1, 1] * self.ureg.J) def test_ediff1d(self): """Units are erased by asanyarray, Quantity does not inherit from NDArray @@ -271,7 +272,7 @@ class TestNumpyNotSupported(TestUFuncs): """ self.assertEqual(np.fix(3.14 * self.ureg.m), 3.0 * self.ureg.m) self.assertEqual(np.fix(3.0 * self.ureg.m), 3.0 * self.ureg.m) - self.assertSequenceEqual( + self.assertQuantityEqual( np.fix([2.1, 2.9, -2.1, -2.9] * self.ureg.m), [2., 2., -2., -2.] * self.ureg.m ) @@ -288,7 +289,7 @@ class TestNumpyNotSupported(TestUFuncs): """ a = [3,-3, 1] * self.ureg.kPa b = [4, 9, 2] * self.ureg.m**2 - self.assertSequenceEqual(np.cross(a,b), [-15,-2,39]*self.ureg.kPa*self.ureg.m**2) + self.assertQuantityEqual(np.cross(a,b), [-15,-2,39]*self.ureg.kPa*self.ureg.m**2) def test_power(self): """This is not supported as different elements might end up with different units |