MCPcopy Index your code
hub / github.com/RustPython/RustPython / test_Reversible

Method test_Reversible

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

Source from the content-addressed store, hash-verified

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

Callers

nothing calls this directly

Calls 15

OrderedDictClass · 0.90
CounterClass · 0.90
setFunction · 0.85
_test_genFunction · 0.85
iterFunction · 0.85
reversedFunction · 0.85
strFunction · 0.85
listClass · 0.85
RevNoIterClass · 0.85
RevPlusIterClass · 0.85
RevClass · 0.85
RevItBlockedClass · 0.85

Tested by

no test coverage detected