Skip to content

Commit 9757021

Browse files
add isinstance/issubclass check (#36)
See #35 for context.
1 parent e806883 commit 9757021

File tree

1 file changed

+33
-0
lines changed

1 file changed

+33
-0
lines changed

test/test_constantdict.py

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -325,3 +325,36 @@ def test_value_covariant() -> None:
325325
_bar4: constantdict[str, str | int] = constantdict.fromkeys(["a", "b"], 42)
326326
_bar5: constantdict[str, None] = constantdict.fromkeys(["a", "b"])
327327
_bar6: constantdict[str, str | None] = constantdict.fromkeys(["a", "b"])
328+
329+
330+
@pytest.mark.xfail(reason="types do not differentiate from dict (see #35)", strict=True)
331+
def test_type_dict() -> None:
332+
from collections.abc import Mapping as abc_Mapping
333+
from collections.abc import MutableMapping as abc_MutableMapping
334+
from typing import Mapping, MutableMapping
335+
cd: constantdict[str, int] = constantdict(a=1, b=2)
336+
337+
assert isinstance(cd, constantdict)
338+
assert not isinstance(cd, dict)
339+
340+
assert isinstance(cd, Mapping)
341+
assert not isinstance(cd, MutableMapping)
342+
343+
assert isinstance(cd, abc_Mapping)
344+
assert not isinstance(cd, abc_MutableMapping)
345+
346+
347+
@pytest.mark.xfail(
348+
reason="subclasses do not differentiate from dict (see #35)", strict=True)
349+
def test_subclass_dict() -> None:
350+
from collections.abc import Mapping as abc_Mapping
351+
from collections.abc import MutableMapping as abc_MutableMapping
352+
from typing import Mapping, MutableMapping
353+
354+
assert not issubclass(constantdict, dict)
355+
356+
assert issubclass(constantdict, Mapping)
357+
assert not issubclass(constantdict, MutableMapping)
358+
359+
assert issubclass(constantdict, abc_Mapping)
360+
assert not issubclass(constantdict, abc_MutableMapping)

0 commit comments

Comments
 (0)