diff options
author | ben <ben@2b77aa54-bcbc-44c9-a7ec-4f6cf2b41109> | 2002-05-10 23:14:57 +0000 |
---|---|---|
committer | ben <ben@2b77aa54-bcbc-44c9-a7ec-4f6cf2b41109> | 2002-05-10 23:14:57 +0000 |
commit | 40fd4661d4b2a0fd2b2517408d4c5982474b2105 (patch) | |
tree | 6ab957325a74ddf7c64aebdb7424501ca7fc8a45 /rdiff-backup/testing/lazytest.py | |
parent | 807241bc4f322edc6f95782291900362484263df (diff) | |
download | rdiff-backup-40fd4661d4b2a0fd2b2517408d4c5982474b2105.tar.gz |
Many changes, see changelog for 0.7.4
git-svn-id: http://svn.savannah.nongnu.org/svn/rdiff-backup/trunk@73 2b77aa54-bcbc-44c9-a7ec-4f6cf2b41109
Diffstat (limited to 'rdiff-backup/testing/lazytest.py')
-rw-r--r-- | rdiff-backup/testing/lazytest.py | 150 |
1 files changed, 66 insertions, 84 deletions
diff --git a/rdiff-backup/testing/lazytest.py b/rdiff-backup/testing/lazytest.py index fb464a1..fb28604 100644 --- a/rdiff-backup/testing/lazytest.py +++ b/rdiff-backup/testing/lazytest.py @@ -1,5 +1,5 @@ from __future__ import generators -import unittest +import unittest, pickle execfile("commontest.py") rbexec("lazy.py") @@ -219,108 +219,90 @@ class MultiplexTest(Iterators): assert Iter.equal(i2, self.one_to_100()) -class index: - """This is just used below to test the iter tree reducer""" - def __init__(self, index): - self.index = index +class ITRadder(IterTreeReducer): + def start_process(self, index): + self.total = 0 + def end_process(self): + if self.base_index: + summand = self.base_index[-1] + #print "Adding ", summand + self.total += summand -class TreeReducerTest(unittest.TestCase): - def setUp(self): - self.i1 = iter(map(index, [(), (1,), (2,), (3,)])) - self.i2 = iter(map(index, [(0,), (0,1), (0,1,0), (0,1,1), - (0,2), (0,2,1), (0,3)])) + def branch_process(self, subinstance): + #print "Adding subinstance ", subinstance.total + self.total += subinstance.total - self.i1a = iter(map(index, [(), (1,)])) - self.i1b = iter(map(index, [(2,), (3,)])) - self.i2a = iter(map(index, [(0,), (0,1), (0,1,0)])) - self.i2b = iter(map(index, [(0,1,1), (0,2)])) - self.i2c = iter(map(index, [(0,2,1), (0,3)])) +class ITRadder2(IterTreeReducer): + def start_process(self, index): + self.total = 0 - # The four following are used to make an ITR later - def number_of_index(self, index_obj): - if not index_obj.index: return 0 - else: return index_obj.index[-1] + def end_process(self): + #print "Adding ", self.base_index + self.total += reduce(lambda x,y: x+y, self.base_index, 0) - def sum_index(self, index_obj): - return reduce(lambda x,y: x+y, index_obj.index, 0) + def branch_process(self, subinstance): + #print "Adding branch ", subinstance.total + self.total += subinstance.total - def add2(self, x, y): - #print "adding %d and %d" % (x,y) - return x+y +class TreeReducerTest(unittest.TestCase): + def setUp(self): + self.i1 = [(), (1,), (2,), (3,)] + self.i2 = [(0,), (0,1), (0,1,0), (0,1,1), (0,2), (0,2,1), (0,3)] - def add3(self, x,y,z): - #print "ignoring %s, adding %d and %d" % (x,y,z) - return y+z + self.i1a = [(), (1,)] + self.i1b = [(2,), (3,)] + self.i2a = [(0,), (0,1), (0,1,0)] + self.i2b = [(0,1,1), (0,2)] + self.i2c = [(0,2,1), (0,3)] def testTreeReducer(self): """testing IterTreeReducer""" - itm = IterTreeReducer(self.number_of_index, self.add2, 0, self.add3) - for elem in self.i1: - val = itm(elem) + itm = ITRadder() + for index in self.i1: + val = itm(index) assert val, elem.index - itm.calculate_final_val() - assert itm.getresult() == 6, itm.getresult() + itm.Finish() + assert itm.total == 6, itm.total - itm2 = IterTreeReducer(self.sum_index, self.add2, 0, self.add3) - for elem in self.i2: - val = itm2(elem) - if elem.index == (): assert not val + itm2 = ITRadder2() + for index in self.i2: + val = itm2(index) + if index == (): assert not val else: assert val - assert itm2.getresult() == 12, itm2.getresult() + itm2.Finish() + assert itm2.total == 12, itm2.total def testTreeReducerState(self): """Test saving and recreation of an IterTreeReducer""" - itm1a = IterTreeReducer(self.number_of_index, self.add2, 0, self.add3) - for elem in self.i1a: - val = itm1a(elem) - assert val, elem.index - itm1b = IterTreeReducer(self.number_of_index, self.add2, 0, self.add3, - itm1a.getstate()) - for elem in self.i1b: - val = itm1b(elem) - assert val, elem.index - itm1b.calculate_final_val() - assert itm1b.getresult() == 6, itm1b.getresult() - - itm2a = IterTreeReducer(self.sum_index, self.add2, 0, self.add3) - for elem in self.i2a: - val = itm2a(elem) - if elem.index == (): assert not val + itm1a = ITRadder() + for index in self.i1a: + val = itm1a(index) + assert val, index + itm1b = pickle.loads(pickle.dumps(itm1a)) + for index in self.i1b: + val = itm1b(index) + assert val, index + itm1b.Finish() + assert itm1b.total == 6, itm1b.total + + itm2a = ITRadder2() + for index in self.i2a: + val = itm2a(index) + if index == (): assert not val else: assert val - itm2b = IterTreeReducer(self.sum_index, self.add2, 0, self.add3, - itm2a.getstate()) - for elem in self.i2b: - val = itm2b(elem) - if elem.index == (): assert not val + itm2b = pickle.loads(pickle.dumps(itm2a)) + for index in self.i2b: + val = itm2b(index) + if index == (): assert not val else: assert val - itm2c = IterTreeReducer(self.sum_index, self.add2, 0, self.add3, - itm2b.getstate()) - for elem in self.i2c: - val = itm2c(elem) - if elem.index == (): assert not val + itm2c = pickle.loads(pickle.dumps(itm2b)) + for index in self.i2c: + val = itm2c(index) + if index == (): assert not val else: assert val - assert itm2c.getresult() == 12, itm2c.getresult() - - def testTreeReducer2(self): - """Another test of the tree reducer""" - assert Iter.len(self.i1) == 4 - - hit_021_02 = [None, None] - def helper(indexobj, elem_init, branch_result): - if indexobj.index == (0,2): - assert hit_021_02[0] - hit_021_02[1] = 1 - elif indexobj.index == (0,2,1): - assert not hit_021_02[1] - hit_021_02[0] = 1 - return None - itm = IterTreeReducer(lambda x: None, lambda x,y: None, None, helper) - - for elem in self.i2: itm(elem) - itm.getresult() - assert hit_021_02 == [1,1] - + itm2c.Finish() + assert itm2c.total == 12, itm2c.total if __name__ == "__main__": unittest.main() |