def test_powerset_full(self): test_in = '123,456,789' expected_result = """123\n456\n789\n123,456\n123,789\n456,789\n123,456,789""" parsed_input = parse_input(test_in) powerset_out = powerset_pythonic(parsed_input) formatted_out = '\n'.join(format_output(powerset_out)) self.assertMultiLineEqual(formatted_out, expected_result)
def main(): try: inline = sys.stdin.readlines()[0][:-1] elements = parse_input(inline) except IndexError: logger.error('No argument was provided. Exit.') sys.exit( """Input argument is missing. Please provide a string complaint to the following regular expression: '\w+(\,\w+)*'""" ) except ValueError: logger.error( 'The passed input does not respect the following regular expression: \w+(\,\w+)*' ) sys.exit( 'Your input does not respect this regular expression: \w+(\,\w+)*') try: iter_powerset = powerset_pythonic(elements) print(*format_output(iter_powerset), sep='\n') except MemoryError as e: exception_name = e.__class__.__name__ logger.error('The program has exited due to {} exception'.format( exception_name)) sys.exit( '{}: It is an O(n*2^n) algorithm in memory and space. Watch out for the input length. Try with less input elements.' .format(str(exception_name)))
def test_parse_input(self): test_in = '1,2,3' expected_result = ['1', '2', '3'] self.assertEqual(parse_input(test_in), expected_result, 'Input parser test failed!')