Completed
Pull Request — master (#2592)
by Udayan
02:11
created

DependenciesTest   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 25
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
dl 0
loc 25
rs 10
c 0
b 0
f 0
wmc 4

4 Methods

Rating   Name   Duplication   Size   Complexity  
A setUp() 0 6 1
A test_no_deps() 0 5 1
A test_unresolvable_deps() 0 5 1
A test_resolvable_deps() 0 4 1
1
import unittest
2
3
from coalib.bears.Bear import Bear
4
from coalib.collecting import Dependencies
5
6
7
class ResolvableBear1(Bear):
8
9
    BEAR_DEPS = {Bear}
10
11
12
class ResolvableBear2(Bear):
13
14
    BEAR_DEPS = {ResolvableBear1, Bear}
15
16
17
class UnresolvableBear1(Bear):
18
19
    BEAR_DEPS = {ResolvableBear1, Bear}
20
21
22
class UnresolvableBear2(Bear):
23
24
    BEAR_DEPS = {ResolvableBear1, Bear, UnresolvableBear1}
25
26
27
class UnresolvableBear3(Bear):
28
29
    BEAR_DEPS = {ResolvableBear1, Bear, UnresolvableBear2}
30
31
32
class DependenciesTest(unittest.TestCase):
33
34
    def setUp(self):
35
        # We can set this attribute properly only after UnresolvableBear3 is
36
        # declared.
37
        setattr(UnresolvableBear1, 'BEAR_DEPS', {ResolvableBear1,
38
                                                 Bear,
39
                                                 UnresolvableBear3})
40
41
    def test_no_deps(self):
42
        self.assertEqual(
43
            len(Dependencies.resolve([Bear,
44
                                      Bear])),
45
            1)
46
47
    def test_resolvable_deps(self):
48
        self.assertEqual(Dependencies.resolve([ResolvableBear1,
49
                                               ResolvableBear2]),
50
                         [Bear, ResolvableBear1, ResolvableBear2])
51
52
    def test_unresolvable_deps(self):
53
        self.assertRaises(
54
            Dependencies.CircularDependencyError,
55
            Dependencies.resolve,
56
            [UnresolvableBear1])
57