summaryrefslogtreecommitdiff
path: root/pint/testsuite/test_numpy.py
diff options
context:
space:
mode:
Diffstat (limited to 'pint/testsuite/test_numpy.py')
-rw-r--r--pint/testsuite/test_numpy.py111
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