1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
|
from __future__ import annotations
from typing import Any
import pytest
from .. import testing
np = pytest.importorskip("numpy")
class QuantityToBe(tuple[Any]):
def from_many(*args):
return QuantityToBe(args)
@pytest.mark.parametrize(
["first", "second", "error", "message"],
(
pytest.param(
np.array([0, 1]), np.array([0, 1]), False, "", id="ndarray-None-None-equal"
),
pytest.param(
QuantityToBe.from_many(1, "m"),
1,
True,
"The first is not dimensionless",
id="mixed1-int-not equal-equal",
),
pytest.param(
1,
QuantityToBe.from_many(1, "m"),
True,
"The second is not dimensionless",
id="mixed2-int-not equal-equal",
),
pytest.param(
QuantityToBe.from_many(1, "m"),
QuantityToBe.from_many(1, "m"),
False,
"",
id="QuantityToBe.from_many-int-equal-equal",
),
pytest.param(
QuantityToBe.from_many(1, "m"),
QuantityToBe.from_many(1, "s"),
True,
"Units are not equal",
id="QuantityToBe.from_many-int-equal-not equal",
),
pytest.param(
QuantityToBe.from_many(1, "m"),
QuantityToBe.from_many(2, "m"),
True,
"Magnitudes are not equal",
id="QuantityToBe.from_many-int-not equal-equal",
),
pytest.param(
QuantityToBe.from_many(1, "m"),
QuantityToBe.from_many(2, "s"),
True,
"Units are not equal",
id="QuantityToBe.from_many-int-not equal-not equal",
),
pytest.param(
QuantityToBe.from_many(1, "m"),
QuantityToBe.from_many(float("nan"), "m"),
True,
"Magnitudes are not equal",
id="QuantityToBe.from_many-float-not equal-equal",
),
pytest.param(
QuantityToBe.from_many([1, 2], "m"),
QuantityToBe.from_many([1, 2], "m"),
False,
"",
id="QuantityToBe.from_many-ndarray-equal-equal",
),
pytest.param(
QuantityToBe.from_many([1, 2], "m"),
QuantityToBe.from_many([1, 2], "s"),
True,
"Units are not equal",
id="QuantityToBe.from_many-ndarray-equal-not equal",
),
pytest.param(
QuantityToBe.from_many([1, 2], "m"),
QuantityToBe.from_many([2, 2], "m"),
True,
"Magnitudes are not equal",
id="QuantityToBe.from_many-ndarray-not equal-equal",
),
pytest.param(
QuantityToBe.from_many([1, 2], "m"),
QuantityToBe.from_many([2, 2], "s"),
True,
"Units are not equal",
id="QuantityToBe.from_many-ndarray-not equal-not equal",
),
),
)
def test_assert_equal(sess_registry, first, second, error, message):
if isinstance(first, QuantityToBe):
first = sess_registry.Quantity(*first)
if isinstance(second, QuantityToBe):
second = sess_registry.Quantity(*second)
if error:
with pytest.raises(AssertionError, match=message):
testing.assert_equal(first, second)
else:
testing.assert_equal(first, second)
|