def main(): args = parse_arguments() if args.test: run_tests() return assert args.day, "Need to specify day" directories = [ name for name in os.listdir(".") if os.path.isdir(name) and name == "day_{:02d}".format(args.day) ] assert len(directories) == 1 import_module("{name}.{name}".format(name=directories[0])) assert len(Day.__subclasses__()) == 1 day = Day.__subclasses__()[0]() if args.part_1: print("Solution part 1:", day.part_1()) if args.part_2: print("Solution part 2:", day.part_2())
def run_tests(): directories = [ name for name in os.listdir(".") if os.path.isdir(name) and name.startswith("day_") ] for directory in directories: import_module("{name}.{name}".format(name=directory)) for day_class in tqdm( sorted(Day.__subclasses__(), key=lambda cls: cls.__name__)): day = day_class() if day.part_1_solution is None: tqdm.write("Part 1 of {} is not implemented!".format( day_class.__name__)) else: assert day.part_1() == day.part_1_solution, "Part 1 is broken" if day.part_2_solution is None: tqdm.write("Part 2 of {} is not implemented!".format( day_class.__name__)) else: assert day.part_2() == day.part_2_solution, "Part 2 is broken" if day.part_1_solution is not None and day.part_2_solution is not None: tqdm.write("{} is ok!".format(day_class.__name__))