def test_kwds_all_ok(self): function = lambda iterable: list() # <- Accepts everything. in_diffs = [ Missing('foo', aaa='x', bbb='y'), Missing('bar', aaa='x', bbb='z'), ] # Using keyword aaa='x' should accept all in_diffs. with allow_iter(function, 'example message', aaa='x'): raise DataError('example error', in_diffs) # Using keyword bbb=['y', 'z'] should also accept all in_diffs. with allow_iter(function, 'example message', bbb=['y', 'z']): raise DataError('example error', in_diffs)
def test_no_exception(self): function = lambda iterable: list() # <- Accepts everything. with self.assertRaises(AssertionError) as cm: with allow_iter(function): pass # No exceptions raised exc = cm.exception self.assertEqual('No differences found: <lambda>', str(exc))
def test_function_some_ok(self): function = lambda iterable: (x for x in iterable if x.value != 'bar') in_diffs = [ Missing('foo'), Missing('bar'), ] with self.assertRaises(DataError) as cm: with allow_iter(function, 'example message'): raise DataError('example error', in_diffs) rejected = list(cm.exception.differences) self.assertEqual(rejected, [Missing('foo')])
def test_function_all_bad(self): function = lambda iterable: iterable # <- Rejects everything. in_diffs = [ Extra('foo'), Extra('bar'), ] with self.assertRaises(DataError) as cm: with allow_iter(function, 'example message'): raise DataError('example error', in_diffs) rejected = cm.exception.differences self.assertEqual(rejected, in_diffs)
def test_kwds_some_ok(self): function = lambda iterable: list() # <- Accepts everything. in_diffs = [ Missing('foo', aaa='x', bbb='y'), Missing('bar', aaa='x', bbb='z'), ] with self.assertRaises(DataError) as cm: # Keyword bbb='y' should reject second in_diffs element. with allow_iter(function, 'example message', bbb='y'): raise DataError('example error', in_diffs) rejected = list(cm.exception.differences) self.assertEqual(rejected, [Missing('bar', aaa='x', bbb='z')])
def test_kwds_all_bad(self): function = lambda iterable: list() # <- Accepts everything. in_diffs = [ Missing('foo', aaa='x', bbb='y'), Missing('bar', aaa='x', bbb='z'), ] with self.assertRaises(DataError) as cm: # Using keyword bbb='j' should reject all in_diffs. with allow_iter(function, 'example allowance', bbb='j'): raise DataError('example error', in_diffs) rejected = list(cm.exception.differences) self.assertEqual(rejected, in_diffs)
def _allowMissing(self, number=None, msg=None): def function(iterable): t1, t2 = itertools.tee(iterable) not_allowed = [] count = 0 for x in t1: if not isinstance(x, datatest.Missing): not_allowed.append(x) else: count += 1 if number and count > number: return t2 # <- EXIT! Exceeds limit, return all. return not_allowed return datatest.allow_iter(function, msg)
def test_function_all_ok(self): function = lambda iterable: list() # <- Accepts everything. with allow_iter(function, 'example message'): raise DataError('example error', [Missing('foo'), Missing('bar')])