Test Failed
Push — master ( d00c81...2f33ee )
by Ramon
07:41 queued 06:02
created

TestInstanceOf.test_instance_of_type()   A

Complexity

Conditions 1

Size

Total Lines 4
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 4
nop 1
dl 0
loc 4
rs 10
c 0
b 0
f 0
1
from typing import List, Dict, Union, Optional, Callable, Any, Tuple, Type
2
from unittest import TestCase
3
4
from typish._functions import instance_of
5
6
7
class A: pass
8
class B(A): pass
9
class C(B): pass
10
class D(C): pass
11
class E(D): pass
12
class F(E, str): pass
13
14
15
class TestInstanceOf(TestCase):
16
    def test_instance_of(self):
17
        self.assertTrue(instance_of([[[1], [2]]], List[List[List[int]]]))
18
        self.assertTrue(instance_of([[[1], ['2']]], List[List[List[object]]]))
19
        self.assertTrue(instance_of([], List[int]))
20
        self.assertTrue(instance_of({}, Dict[int, int]))
21
22
    def test_instance_of_multiple(self):
23
        self.assertTrue(instance_of(F(), A))
24
        self.assertTrue(instance_of(F(), str))
25
        self.assertTrue(instance_of(F(), A, str))
26
        self.assertTrue(not instance_of(F(), A, str, int))
27
28
    def test_instance_of_union(self):
29
        self.assertTrue(instance_of(F(), Union[int, A]))
30
        self.assertTrue(instance_of(F(), Union[A, int]))
31
        self.assertTrue(instance_of(F(), Union[A, str]))
32
        self.assertTrue(instance_of(F(), Optional[str]))
33
        self.assertTrue(instance_of(None, Optional[str]))
34
35
    def test_instance_of_callable(self):
36
        def func1(x: int, y: str) -> object:
37
            pass
38
39
        def func2() -> int:
40
            pass
41
42
        def func3(x: int):
43
            pass
44
45
        def func4():
46
            pass
47
48
        def func5(x):
49
            pass
50
51
        def func6(l: List[List[List[int]]]):
52
            pass
53
54
        self.assertTrue(instance_of(func1, Callable[[int, str], object]))
55
        self.assertTrue(instance_of(func1, Callable[[object, str], object]))
56
        self.assertTrue(not instance_of(func1, Callable[[str, str], object]))
57
        self.assertTrue(not instance_of(func1, Callable[[str, str], int]))
58
        self.assertTrue(instance_of(func2, Callable[[], int]))
59
        self.assertTrue(instance_of(func3, Callable[[int], Any]))
60
        self.assertTrue(instance_of(func4, Callable))
61
        self.assertTrue(instance_of(func5, Callable[[Any], Any]))
62
        self.assertTrue(instance_of(func6, Callable[[List[List[List[int]]]], Any]))
63
64
    def test_lambda_instance_of_callable(self):
65
        self.assertTrue(instance_of(lambda x, y: 42, Callable[[int, str], str]))
66
        self.assertTrue(instance_of(lambda: 42, Callable[[], str]))
67
68
    def test_instance_of_type(self):
69
        self.assertTrue(instance_of(int, Type))
70
        self.assertTrue(instance_of(int, Type[int]))
71
        self.assertTrue(not instance_of(str, Type[int]))
72
73
    def test_instance_of_tuple(self):
74
        self.assertTrue(instance_of((1,), Tuple[int]))
75
        self.assertTrue(instance_of((1, 2, 3), Tuple[int, ...]))
76