def match(self, other): other_list = list(other) extra = misc.sequence_minus(other_list, self._list) missing = misc.sequence_minus(self._list, other_list) if extra or missing: msg = "Sequences %s and %s do not have same items." % (self._seq, other) if missing: msg += " Extra items in first sequence: %s." % missing if extra: msg += " Extra items in second sequence: %s." % extra return matchers.Mismatch(msg) return None
def _get_next_value(self, values, history): # Fetches the next resolution result to try, removes overlapping # entries with what has already been tried and then returns the first # resolution strategy remaining. remaining = misc.sequence_minus(values, history.provided_iter()) if not remaining: raise exc.NotFound("No elements left in collection of iterable " "retry controller %s" % self.name) return remaining[0]
def test_equal_items_not_continious(self): result = misc.sequence_minus([1, 2, 3, 1], [1, 3]) self.assertEqual(result, [2, 1])
def test_some_items_are_equal(self): result = misc.sequence_minus([1, 1, 1, 1], [1, 1, 3]) self.assertEqual(result, [1, 1])
def test_subtrahend_has_extra_elements(self): result = misc.sequence_minus([1, 2, 3, 4], [2, 3, 5, 7, 13]) self.assertEqual(result, [1, 4])
def test_simple_case(self): result = misc.sequence_minus([1, 2, 3, 4], [2, 3]) self.assertEqual(result, [1, 4])
def test_some_items_are_equal(self): result = misc.sequence_minus([1, 1, 1, 1], [1, 1, 3]) self.assertEqual([1, 1], result)
def test_subtrahend_has_extra_elements(self): result = misc.sequence_minus([1, 2, 3, 4], [2, 3, 5, 7, 13]) self.assertEqual([1, 4], result)
def test_simple_case(self): result = misc.sequence_minus([1, 2, 3, 4], [2, 3]) self.assertEqual([1, 4], result)