def test_invalid_r(self): iterable = 'abcde' r = 4 n = factorial(len(iterable)) // factorial(len(iterable) - r) for r in [-1, n + 1]: with self.assertRaises(ValueError): mi.nth_combination(iterable, r, 0)
def test_invalid_index(self): iterable = 'abcde' r = 4 n = factorial(len(iterable)) // factorial(len(iterable) - r) for index in [-1 - n, n + 1]: with self.assertRaises(IndexError): mi.nth_combination(iterable, r, index)
def test_invalid_index(self): with self.assertRaises(IndexError): mi.nth_combination('abcdefg', 3, -36)
def test_invalid_r(self): for r in (-1, 3): with self.assertRaises(ValueError): mi.nth_combination([], r, 0)
def test_long(self): actual = mi.nth_combination(range(180), 4, 2000000) expected = (2, 12, 35, 126) self.assertEqual(actual, expected)
def test_basic(self): iterable = 'abcdefg' r = 4 for index, expected in enumerate(combinations(iterable, r)): actual = mi.nth_combination(iterable, r, index) self.assertEqual(actual, expected)