MCPcopy Index your code
hub / github.com/python/cpython / test_Reversible

Method test_Reversible

Lib/test/test_collections.py:1003–1058  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

1001 self.assertNotIsInstance(ItBlocked(), Iterable)
1002
1003 def test_Reversible(self):
1004 # Check some non-reversibles
1005 non_samples = [None, 42, 3.14, 1j, set(), frozenset()]
1006 for x in non_samples:
1007 self.assertNotIsInstance(x, Reversible)
1008 self.assertNotIsSubclass(type(x), Reversible)
1009 # Check some non-reversible iterables
1010 non_reversibles = [_test_gen(), (x for x in []), iter([]), reversed([])]
1011 for x in non_reversibles:
1012 self.assertNotIsInstance(x, Reversible)
1013 self.assertNotIsSubclass(type(x), Reversible)
1014 # Check some reversible iterables
1015 samples = [bytes(), str(), tuple(), list(), OrderedDict(),
1016 OrderedDict().keys(), OrderedDict().items(),
1017 OrderedDict().values(), Counter(), Counter().keys(),
1018 Counter().items(), Counter().values(), dict(),
1019 dict().keys(), dict().items(), dict().values()]
1020 for x in samples:
1021 self.assertIsInstance(x, Reversible)
1022 self.assertIsSubclass(type(x), Reversible)
1023 # Check also Mapping, MutableMapping, and Sequence
1024 self.assertIsSubclass(Sequence, Reversible)
1025 self.assertNotIsSubclass(Mapping, Reversible)
1026 self.assertNotIsSubclass(MutableMapping, Reversible)
1027 # Check direct subclassing
1028 class R(Reversible):
1029 def __iter__(self):
1030 return iter(list())
1031 def __reversed__(self):
1032 return iter(list())
1033 self.assertEqual(list(reversed(R())), [])
1034 self.assertNotIsSubclass(float, R)
1035 self.validate_abstract_methods(Reversible, '__reversed__', '__iter__')
1036 # Check reversible non-iterable (which is not Reversible)
1037 class RevNoIter:
1038 def __reversed__(self): return reversed([])
1039 class RevPlusIter(RevNoIter):
1040 def __iter__(self): return iter([])
1041 self.assertNotIsSubclass(RevNoIter, Reversible)
1042 self.assertNotIsInstance(RevNoIter(), Reversible)
1043 self.assertIsSubclass(RevPlusIter, Reversible)
1044 self.assertIsInstance(RevPlusIter(), Reversible)
1045 # Check None blocking
1046 class Rev:
1047 def __iter__(self): return iter([])
1048 def __reversed__(self): return reversed([])
1049 class RevItBlocked(Rev):
1050 __iter__ = None
1051 class RevRevBlocked(Rev):
1052 __reversed__ = None
1053 self.assertIsSubclass(Rev, Reversible)
1054 self.assertIsInstance(Rev(), Reversible)
1055 self.assertNotIsSubclass(RevItBlocked, Reversible)
1056 self.assertNotIsInstance(RevItBlocked(), Reversible)
1057 self.assertNotIsSubclass(RevRevBlocked, Reversible)
1058 self.assertNotIsInstance(RevRevBlocked(), Reversible)
1059
1060 def test_Collection(self):

Callers

nothing calls this directly

Calls 15

OrderedDictClass · 0.90
CounterClass · 0.90
setFunction · 0.85
_test_genFunction · 0.85
strFunction · 0.85
listClass · 0.85
RevNoIterClass · 0.85
RevPlusIterClass · 0.85
RevClass · 0.85
RevItBlockedClass · 0.85
RevRevBlockedClass · 0.85
assertNotIsInstanceMethod · 0.80

Tested by

no test coverage detected