def test_distinct(self): distinct = self.datasource.distinct # Test single column. expected = ['a', 'b'] self.assertEqual(expected, distinct('label1')) self.assertEqual(expected, distinct(['label1'])) # Test single column wrapped in iterable (list). expected = [('a', ), ('b', )] self.assertEqual(expected, distinct('label1')) self.assertEqual(expected, distinct(['label1'])) # Test multiple columns. expected = [ ('a', 'x'), ('a', 'y'), ('a', 'z'), ('b', 'z'), # <- ordered (if possible) ('b', 'y'), # <- ordered (if possible) ('b', 'x'), # <- ordered (if possible) ] self.assertEqual(expected, distinct(['label1', 'label2'])) # Test multiple columns with filter. expected = [('a', 'x'), ('a', 'y'), ('b', 'y'), ('b', 'x')] self.assertEqual(expected, distinct(['label1', 'label2'], label2=['x', 'y'])) # Test multiple columns with filter on non-grouped column. expected = [('a', '17'), ('a', '13'), ('b', '25')] result = distinct(['label1', 'value'], label2='x') if isinstance(self.datasource, ExcelSource): result = CompareSet((x, str(int(y))) for x, y in result) self.assertEqual(expected, result) # Test when specified column is missing. msg = 'Error should reference missing column.' with self.assertRaisesRegex(Exception, 'label3', msg=msg): result = distinct(['label1', 'label3'], label2='x')
def test_no_subject(self): required = CompareSet([1,2,3]) with self.assertRaisesRegex(NameError, "cannot find 'subject'"): self.assertSubjectSet(required)
def test_compareset_v_callable_pass(self): first = CompareSet([1,2,3,4,5,6,7]) second = lambda x: x < 10 self.assertEqual(first, second)