Exemplo n.º 1
0
    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')
Exemplo n.º 2
0
 def test_no_subject(self):
     required = CompareSet([1,2,3])
     with self.assertRaisesRegex(NameError, "cannot find 'subject'"):
         self.assertSubjectSet(required)
Exemplo n.º 3
0
 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)