24
24
class ResolverTest(unittest.TestCase):
26
self.resolver = Resolver()
25
28
def test_dependencies_none(self):
28
resolver.get_dependencies('a')
30
self.resolver.get_dependencies('a')
29
31
except Exception as error:
30
32
self.assertTrue(error.args[0].startswith('no dependencies'))
32
34
self.fail('non existing element accepted by resolver')
34
36
def test_dependencies_one_level(self):
37
self.resolver.add('a')
38
results = resolver.get_dependencies('a')
39
self.assertTrue(len(results) == 1)
40
self.assertTrue(results[0] == 'a')
39
results = self.resolver.get_dependencies('a')
40
self.assertListEqual(results, ['a'])
42
42
def test_dependencies_two_level(self):
45
resolver.add('b', 'a')
43
self.resolver.add('a')
44
self.resolver.add('b', 'a')
47
results = resolver.get_dependencies('b')
48
self.assertTrue(len(results) == 2)
49
self.assertTrue(results[0] == 'a')
50
self.assertTrue(results[1] == 'b')
46
results = self.resolver.get_dependencies('b')
47
self.assertListEqual(results, ['a', 'b'])
52
49
def test_dependencies_multiple(self):
56
resolver.add('c', 'a', 'b')
50
self.resolver.add('a')
51
self.resolver.add('b')
52
self.resolver.add('c', 'a', 'b')
58
results = resolver.get_dependencies('c')
59
self.assertTrue(len(results) == 3)
60
self.assertTrue(results[0] == 'a')
61
self.assertTrue(results[1] == 'b')
62
self.assertTrue(results[2] == 'c')
54
results = self.resolver.get_dependencies('c')
55
self.assertListEqual(results, ['a', 'b', 'c'])
64
57
def test_dependencies_circular(self):
66
resolver.add('a', 'b')
67
resolver.add('b', 'a')
69
resolver.get_dependencies('a')
59
self.resolver.add('a', 'b')
60
self.resolver.add('b', 'a')
61
self.resolver.get_dependencies('a')
70
62
except Exception as error:
71
63
self.assertTrue(error.args[0].startswith('circular dependency'))
73
65
self.fail('circular dependency not detected')
75
67
def test_dependents_none(self):
68
self.resolver.add('a')
79
results = resolver.get_dependents('a')
70
results = self.resolver.get_dependents('a')
80
71
self.assertTrue(len(results) == 0)
82
73
def test_dependents_one(self):
85
resolver.add('b', 'a')
74
self.resolver.add('a')
75
self.resolver.add('b', 'a')
87
results = resolver.get_dependents('a')
88
self.assertTrue(len(results) == 1)
89
self.assertTrue(results[0] == 'b')
77
results = self.resolver.get_dependents('a')
78
self.assertListEqual(results, ['b'])
91
80
def test_dependents_two(self):
92
81
resolver = Resolver()
95
84
resolver.add('c', 'b')
97
86
results = resolver.get_dependents('a')
98
self.assertTrue(len(results) == 2)
99
self.assertTrue(results[0] == 'b')
100
self.assertTrue(results[1] == 'c')
87
self.assertListEqual(results, ['b', 'c'])
89
def test_multiple_resolve_steps(self):
90
self.resolver.add('a', 'b')
91
results = self.resolver.get_dependents()
92
self.assertListEqual(results, ['a'])
94
self.resolver.add('b')
95
results = self.resolver.get_dependents()
96
self.assertListEqual(results, ['b', 'a'])