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

TestCommonAncestor.test_common_ancestor_of_typing_types()   A

Complexity

Conditions 1

Size

Total Lines 2
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 2
nop 1
dl 0
loc 2
rs 10
c 0
b 0
f 0
1
from typing import Type
2
from unittest import TestCase
3
4
from typish._functions import common_ancestor, common_ancestor_of_types
5
from typish._types import NoneType
6
7
8
class A: pass
9
class B(A): pass
10
class C(B): pass
11
class D(C): pass
12
class E(D): pass
13
14
15
class TestCommonAncestor(TestCase):
16
    def test_common_ancestor(self):
17
        self.assertEqual(C, common_ancestor(E(), C(), D(), E()))
18
        self.assertEqual(B, common_ancestor(E(), C(), D(), E(), B()))
19
        self.assertEqual(object, common_ancestor(E(), C(), D(), E(), B(), 42))
20
21
    def test_common_ancestor_of_types(self):
22
        self.assertEqual(C, common_ancestor_of_types(E, C, D, E))
23
        self.assertEqual(object, common_ancestor_of_types(int, str))
24
        common_ancestor_of_types(list, tuple)
25
26
    def test_common_ancestor_of_typing_types(self):
27
        self.assertEqual(type, common_ancestor_of_types(Type[int], Type[str]))
28
29
    def test_common_acestor_of_collections(self):
30
        self.assertEqual(list, common_ancestor([1, 2, 3], ['a', 'b', 'c']))
31
32
    def test_special_args(self):
33
        self.assertEqual(NoneType, common_ancestor(None, None))
34
        self.assertEqual(int, common_ancestor(42))
35
36
    def test_invalid(self):
37
        with self.assertRaises(TypeError):
38
            common_ancestor()
39