1
from unittest import TestCase
2
from simplestreams.util import resolve_work
4
class TestStreamResolveWork(TestCase):
6
def tryit(self, src=[], target=[], max=None, keep=False, filter=None,
8
(r_add, r_remove) = resolve_work(src, target, max=max, keep=keep,
10
self.assertEqual(r_add, add)
11
self.assertEqual(r_remove, remove)
13
def test_keep_with_max_none_is_exception(self):
14
self.assertRaises(TypeError, resolve_work, [1], [2], None, True)
16
def test_full_replace(self):
19
self.tryit(src=src, target=target, add=src, remove=target)
21
def test_only_new_with_max(self):
22
self.tryit(src=[10, 9, 8], target=[7, 6, 5],
23
add=[10, 9], remove=[7, 6, 5], max=2)
25
def test_only_new_with_keep(self):
26
self.tryit(src=[10, 9, 8], target=[7, 6, 5],
27
add=[10, 9, 8], remove=[6, 5], max=4, keep=True)
29
def test_only_remove(self):
30
self.tryit(src=[3], target=[3, 2, 1], add=[], remove=[2, 1])
32
def test_only_remove_with_keep(self):
33
self.tryit(src=[3], target=[3, 2, 1],
34
add=[], remove=[], max=3, keep=True)
36
def test_only_remove_with_max(self):
37
self.tryit(src=[3], target=[3, 2, 1],
38
add=[], remove=[2, 1], max=2)
40
def test_only_remove_with_no_max(self):
41
self.tryit(src=[3], target=[3, 2, 1],
42
add=[], remove=[2, 1], max=None)
44
def test_null_remote_without_keep(self):
45
self.tryit(src=[], target=[3,2,1], add=[], remove=[3, 2, 1])
47
def test_null_remote_with_keep(self):
48
self.tryit(src=[], target=[3,2,1], max=3, keep=True, add=[], remove=[])
50
def test_null_remote_without_keep(self):
51
self.tryit(src=[], target=[3,2,1], max=3, keep=False, add=[],
54
def test_max_forces_remove(self):
55
self.tryit(src=[2,1], target=[2,1], max=1, keep=False,
58
def test_nothing_needed_with_max(self):
59
self.tryit(src=[1], target=[1], max=1, keep=False, add=[], remove=[])
61
def test_filtered_items_not_present(self):
62
self.tryit(src=[1,2,3,4,5], target=[1], max=None, keep=False,
63
filter=lambda a: a < 3, add=[2], remove=[])
65
def test_max_and_target_has_newest(self):
66
self.tryit(src=[1,2,3,4], target=[4], max=1, keep=False,