Skip to content

Commit 6639f20

Browse files
committed
🧪 TST: check API for all array types
1 parent c27109e commit 6639f20

File tree

1 file changed

+41
-6
lines changed

1 file changed

+41
-6
lines changed

‎tests/test_api.py

+41-6
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,54 @@
22
"""Test the Quantity class Array API compatibility."""
33

44
import astropy.units as u
5-
import numpy as np
65

76
from quantity import Quantity, api
87

8+
from .conftest import ARRAY_NAMESPACES
9+
910

1011
def test_issubclass_api():
1112
"""Test that Quantity is a subclass of api.Quantity and api.QuantityArray."""
1213
assert issubclass(Quantity, api.Quantity)
1314
assert issubclass(Quantity, api.QuantityArray)
1415

1516

16-
def test_isintsance_api():
17-
"""Test that Quantity is an instance of api.Quantity and api.QuantityArray."""
18-
q = Quantity(value=np.array([1, 2, 3]), unit=u.m)
19-
assert isinstance(q, api.Quantity)
20-
assert isinstance(q, api.QuantityArray)
17+
def test_astropy_quantity():
18+
assert issubclass(u.Quantity, api.Quantity)
19+
assert issubclass(u.Quantity, api.QuantityArray)
20+
aq = u.Quantity(1.0, u.m)
21+
assert isinstance(aq, api.Quantity)
22+
assert isinstance(aq, api.QuantityArray)
23+
24+
25+
class IsinstanceAPITests:
26+
"""Check Quantities are properly recognized independent of the array type."""
27+
28+
# Note: the actual test classes are created at the end
29+
30+
@classmethod
31+
def setup_class(cls):
32+
super().setup_class()
33+
cls.a = cls.xp.asarray([1.0, 2.0, 3.0])
34+
cls.q = Quantity(cls.a, u.m)
35+
36+
def test_issubclass_api(self):
37+
assert not issubclass(type(self.a), api.Quantity)
38+
assert not issubclass(type(self.a), api.QuantityArray)
39+
# The two below Duplicate test_issubclass_api above, but OK to have
40+
# it more and less explicit.
41+
assert issubclass(type(self.q), api.Quantity)
42+
assert issubclass(type(self.q), api.QuantityArray)
43+
44+
def test_isinstance_api(self):
45+
assert not isinstance(self.a, api.Quantity)
46+
assert not isinstance(self.a, api.QuantityArray)
47+
assert isinstance(self.q, api.Quantity)
48+
assert isinstance(self.q, api.QuantityArray)
49+
50+
51+
# Create the test classes for the different array types.
52+
for base_setup in ARRAY_NAMESPACES:
53+
for tests in (IsinstanceAPITests,):
54+
name = f"Test{tests.__name__}{base_setup.__name__}"
55+
globals()[name] = type(name, (tests, base_setup), {})

0 commit comments

Comments
 (0)