def test_select_merge_components_random_raisesError(self): ''' Verify that when comp 0 is excluded with K=3 we cannot provide comp 0 as kA, [error is raised] AND in free choice, we only choose kA=1, kB=2 ''' MT = MergeTracker(3) MSelector = MergePairSelector() MT.excludeList = set([0]) MT._synchronize_and_verify() for trial in range(10): kA, kB = MSelector.select_merge_components(None, None, MT, kA=1, mergename='random') assert kA == 1 assert kB == 2 for trial in range(10): kA, kB = MSelector.select_merge_components(None, None, MT, kA=2, mergename='random') assert kA == 1 assert kB == 2 with self.assertRaises(AssertionError): kA, kB = MSelector.select_merge_components(None, None, MT, mergename='random', kA=0)
def test_select_merge_components_random_raisesErrorAllButOneExcluded(self): ''' Verify that when comps 0,1 are excluded with K=3 we cannot provide comp 2 as kA, [error is raised] ''' MT = MergeTracker(3) MSelector = MergePairSelector() MT.excludeList = set([1, 0]) MT._synchronize_and_verify() with self.assertRaises(AssertionError): kA, kB = MSelector.select_merge_components(None, None, MT, mergename='random', kA=2)
def test_synchronize_catch_former_bug2(self): ''' Given un-synched excludeList and excludePairs, verify that the synchronization will discover (correctly) that no pairs are left This prevents relapse of a bug captured in Jan 2013 ''' MT = MergeTracker(6) MT.excludeList = set([1, 4, 2, 3]) MT.excludePairs[0] = set([0, 1, 3, 4, 5]) MT.excludePairs[1] = set([0, 1, 2, 3, 4, 5]) MT.excludePairs[2] = set([0, 1, 2, 3, 4, 5]) MT.excludePairs[3] = set([0, 1, 2, 3, 4, 5]) MT.excludePairs[4] = set([0, 1, 2, 3, 4, 5]) MT.excludePairs[5] = set([0, 1, 3, 4, 5]) MT._synchronize_and_verify() for k in range(6): assert k in MT.excludeList assert not MT.hasAvailablePairs()
def test_synchronize_catch_former_bug3(self): ''' This prevents relapse of a bug captured in Jan 2013 ''' MT = MergeTracker(7) MT.excludeList = set([3, 0, 2, 6]) MT.excludePairs[0] = set([0, 1, 2, 3, 4, 5, 6]) MT.excludePairs[1] = set([0, 1, 2, 3, 5]) MT.excludePairs[2] = set([0, 1, 2, 3, 4, 5, 6]) MT.excludePairs[3] = set([0, 1, 2, 3, 4, 5, 6]) MT.excludePairs[4] = set([0, 2, 3, 4, 5]) MT.excludePairs[5] = set([0, 1, 2, 3, 4, 5]) MT.excludePairs[6] = set([0, 1, 2, 3, 4, 5, 6]) MT._synchronize_and_verify() assert 1 in MT.getAvailableComps() assert 4 in MT.getAvailableComps() assert 5 in MT.excludePairs[1] assert 1 in MT.excludePairs[5] assert 6 in MT.excludePairs[4] assert 6 in MT.excludePairs[1]