summaryrefslogtreecommitdiff
path: root/pint/testsuite/test_measurement.py
diff options
context:
space:
mode:
Diffstat (limited to 'pint/testsuite/test_measurement.py')
-rw-r--r--pint/testsuite/test_measurement.py109
1 files changed, 56 insertions, 53 deletions
diff --git a/pint/testsuite/test_measurement.py b/pint/testsuite/test_measurement.py
index 789e47c..323140f 100644
--- a/pint/testsuite/test_measurement.py
+++ b/pint/testsuite/test_measurement.py
@@ -1,22 +1,19 @@
+import pytest
+
from pint import DimensionalityError
from pint.testsuite import QuantityTestCase, helpers
@helpers.requires_not_uncertainties()
class TestNotMeasurement(QuantityTestCase):
-
- FORCE_NDARRAY = False
-
def test_instantiate(self):
M_ = self.ureg.Measurement
- self.assertRaises(RuntimeError, M_, 4.0, 0.1, "s")
+ with pytest.raises(RuntimeError):
+ M_(4.0, 0.1, "s")
@helpers.requires_uncertainties()
class TestMeasurement(QuantityTestCase):
-
- FORCE_NDARRAY = False
-
def test_simple(self):
M_ = self.ureg.Measurement
M_(4.0, 0.1, "s")
@@ -35,11 +32,11 @@ class TestMeasurement(QuantityTestCase):
)
for m in ms:
- self.assertEqual(m.value, v)
- self.assertEqual(m.error, u)
- self.assertEqual(m.rel, m.error / abs(m.value))
+ assert m.value == v
+ assert m.error == u
+ assert m.rel == m.error / abs(m.value)
- def test_format(self):
+ def test_format(self, subtests):
v, u = self.Q_(4.0, "s ** 2"), self.Q_(0.1, "s ** 2")
m = self.ureg.Measurement(v, u)
@@ -58,10 +55,10 @@ class TestMeasurement(QuantityTestCase):
("{:.1fC}", "(4.0+/-0.1) second**2"),
("{:.1fLx}", r"\SI{4.0 +- 0.1}{\second\squared}"),
):
- with self.subTest(spec):
- self.assertEqual(spec.format(m), result)
+ with subtests.test(spec):
+ assert spec.format(m) == result
- def test_format_paru(self):
+ def test_format_paru(self, subtests):
v, u = self.Q_(0.20, "s ** 2"), self.Q_(0.01, "s ** 2")
m = self.ureg.Measurement(v, u)
@@ -73,10 +70,10 @@ class TestMeasurement(QuantityTestCase):
("{:.3uSH}", "0.2000(100) second<sup>2</sup>"),
("{:.3uSC}", "0.2000(100) second**2"),
):
- with self.subTest(spec):
- self.assertEqual(spec.format(m), result)
+ with subtests.test(spec):
+ assert spec.format(m) == result
- def test_format_u(self):
+ def test_format_u(self, subtests):
v, u = self.Q_(0.20, "s ** 2"), self.Q_(0.01, "s ** 2")
m = self.ureg.Measurement(v, u)
@@ -92,11 +89,11 @@ class TestMeasurement(QuantityTestCase):
),
("{:.1uLx}", r"\SI{0.20 +- 0.01}{\second\squared}"),
):
- with self.subTest(spec):
- self.assertEqual(spec.format(m), result)
+ with subtests.test(spec):
+ assert spec.format(m) == result
- def test_format_percu(self):
- self.test_format_perce()
+ def test_format_percu(self, subtests):
+ self.test_format_perce(subtests)
v, u = self.Q_(0.20, "s ** 2"), self.Q_(0.01, "s ** 2")
m = self.ureg.Measurement(v, u)
@@ -107,10 +104,10 @@ class TestMeasurement(QuantityTestCase):
("{:.1u%H}", "(20 &plusmn; 1)% second<sup>2</sup>"),
("{:.1u%C}", "(20+/-1)% second**2"),
):
- with self.subTest(spec):
- self.assertEqual(spec.format(m), result)
+ with subtests.test(spec):
+ assert spec.format(m) == result
- def test_format_perce(self):
+ def test_format_perce(self, subtests):
v, u = self.Q_(0.20, "s ** 2"), self.Q_(0.01, "s ** 2")
m = self.ureg.Measurement(v, u)
for spec, result in (
@@ -123,10 +120,10 @@ class TestMeasurement(QuantityTestCase):
("{:.1ueH}", "(2.0 &plusmn; 0.1)×10<sup>-1</sup> second<sup>2</sup>"),
("{:.1ueC}", "(2.0+/-0.1)e-01 second**2"),
):
- with self.subTest(spec):
- self.assertEqual(spec.format(m), result)
+ with subtests.test(spec):
+ assert spec.format(m) == result
- def test_format_exponential_pos(self):
+ def test_format_exponential_pos(self, subtests):
# Quantities in exponential format come with their own parenthesis, don't wrap
# them twice
m = self.ureg.Quantity(4e20, "s^2").plus_minus(1e19)
@@ -139,10 +136,10 @@ class TestMeasurement(QuantityTestCase):
("{:C}", "(4.00+/-0.10)e+20 second**2"),
("{:Lx}", r"\SI{4.00 +- 0.10 e+20}{\second\squared}"),
):
- with self.subTest(spec):
- self.assertEqual(spec.format(m), result)
+ with subtests.test(spec):
+ assert spec.format(m) == result
- def test_format_exponential_neg(self):
+ def test_format_exponential_neg(self, subtests):
m = self.ureg.Quantity(4e-20, "s^2").plus_minus(1e-21)
for spec, result in (
("{}", "(4.00 +/- 0.10)e-20 second ** 2"),
@@ -156,19 +153,19 @@ class TestMeasurement(QuantityTestCase):
("{:C}", "(4.00+/-0.10)e-20 second**2"),
("{:Lx}", r"\SI{4.00 +- 0.10 e-20}{\second\squared}"),
):
- with self.subTest(spec):
- self.assertEqual(spec.format(m), result)
+ with subtests.test(spec):
+ assert spec.format(m) == result
def test_raise_build(self):
v, u = self.Q_(1.0, "s"), self.Q_(0.1, "s")
o = self.Q_(0.1, "m")
M_ = self.ureg.Measurement
- with self.assertRaises(DimensionalityError):
+ with pytest.raises(DimensionalityError):
M_(v, o)
- with self.assertRaises(DimensionalityError):
+ with pytest.raises(DimensionalityError):
v.plus_minus(o)
- with self.assertRaises(ValueError):
+ with pytest.raises(ValueError):
v.plus_minus(u, relative=True)
def test_propagate_linear(self):
@@ -183,35 +180,41 @@ class TestMeasurement(QuantityTestCase):
for factor, m in zip((3, -3, 3, -3), (m1, m3, m1, m3)):
r = factor * m
- self.assertAlmostEqual(r.value.magnitude, factor * m.value.magnitude)
- self.assertAlmostEqual(r.error.magnitude, abs(factor * m.error.magnitude))
- self.assertEqual(r.value.units, m.value.units)
+ helpers.assert_quantity_almost_equal(
+ r.value.magnitude, factor * m.value.magnitude
+ )
+ helpers.assert_quantity_almost_equal(
+ r.error.magnitude, abs(factor * m.error.magnitude)
+ )
+ assert r.value.units == m.value.units
for ml, mr in zip((m1, m1, m1, m3), (m1, m2, m3, m3)):
r = ml + mr
- self.assertAlmostEqual(
+ helpers.assert_quantity_almost_equal(
r.value.magnitude, ml.value.magnitude + mr.value.magnitude
)
- self.assertAlmostEqual(
+ helpers.assert_quantity_almost_equal(
r.error.magnitude,
- ml.error.magnitude + mr.error.magnitude
- if ml is mr
- else (ml.error.magnitude ** 2 + mr.error.magnitude ** 2) ** 0.5,
+ (
+ ml.error.magnitude + mr.error.magnitude
+ if ml is mr
+ else (ml.error.magnitude ** 2 + mr.error.magnitude ** 2) ** 0.5
+ ),
)
- self.assertEqual(r.value.units, ml.value.units)
+ assert r.value.units == ml.value.units
for ml, mr in zip((m1, m1, m1, m3), (m1, m2, m3, m3)):
r = ml - mr
- self.assertAlmostEqual(
+ helpers.assert_quantity_almost_equal(
r.value.magnitude, ml.value.magnitude - mr.value.magnitude
)
- self.assertAlmostEqual(
+ helpers.assert_quantity_almost_equal(
r.error.magnitude,
0
if ml is mr
else (ml.error.magnitude ** 2 + mr.error.magnitude ** 2) ** 0.5,
)
- self.assertEqual(r.value.units, ml.value.units)
+ assert r.value.units == ml.value.units
def test_propagate_product(self):
@@ -228,20 +231,20 @@ class TestMeasurement(QuantityTestCase):
for ml, mr in zip((m1, m1, m1, m3, m4), (m1, m2, m3, m3, m5)):
r = ml * mr
- self.assertAlmostEqual(
+ helpers.assert_quantity_almost_equal(
r.value.magnitude, ml.value.magnitude * mr.value.magnitude
)
- self.assertEqual(r.value.units, ml.value.units * mr.value.units)
+ assert r.value.units == ml.value.units * mr.value.units
for ml, mr in zip((m1, m1, m1, m3, m4), (m1, m2, m3, m3, m5)):
r = ml / mr
- self.assertAlmostEqual(
+ helpers.assert_quantity_almost_equal(
r.value.magnitude, ml.value.magnitude / mr.value.magnitude
)
- self.assertEqual(r.value.units, ml.value.units / mr.value.units)
+ assert r.value.units == ml.value.units / mr.value.units
def test_measurement_comparison(self):
x = self.Q_(4.2, "meter")
y = self.Q_(5.0, "meter").plus_minus(0.1)
- self.assertTrue(x <= y)
- self.assertFalse(x >= y)
+ assert x <= y
+ assert not (x >= y)