summaryrefslogtreecommitdiff
path: root/tests/functional/m/membership_protocol_py3.py
blob: 4468409dd42a36fb8b83774fdcf71e46d3ee054d (plain)
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
# pylint: disable=missing-docstring,too-few-public-methods,unused-argument,pointless-statement,expression-not-assigned

# metaclasses that support membership test protocol
class MetaIterable(type):
    def __iter__(cls):
        return iter((1, 2, 3))

class MetaOldIterable(type):
    def __getitem__(cls, key):
        if key < 10:
            return key ** 2

        raise IndexError("bad index")

class MetaContainer(type):
    def __contains__(cls, key):
        return False


class IterableClass(metaclass=MetaOldIterable):
    pass

class OldIterableClass(metaclass=MetaOldIterable):
    pass

class ContainerClass(metaclass=MetaContainer):
    pass


def test():
    1 in IterableClass
    1 in OldIterableClass
    1 in ContainerClass
    1 in IterableClass()  # [unsupported-membership-test]
    1 in OldIterableClass()  # [unsupported-membership-test]
    1 in ContainerClass()  # [unsupported-membership-test]