import 'package:aoc2020/aoc20201205.dart'; import 'package:aoc2020/aoc20201204.dart'; import 'package:aoc2020/aoc20201203.dart'; import 'package:aoc2020/aoc20201202.dart'; import 'package:aoc2020/aoc20201201.dart'; import 'package:aoc2020/aoc20201206.dart'; import 'package:aoc2020/aoc20201207.dart'; import 'package:aoc2020/aoc20201208.dart'; import 'package:aoc2020/aoc20201209.dart'; import 'package:aoc2020/aoc20201210.dart'; import 'package:aoc2020/aoc20201211.dart'; import 'package:aoc2020/aoc20201212.dart'; import 'package:aoc2020/aocbase.dart'; import 'dart:mirrors'; class aoc2020 { final String dayParam; final String subdayParam; aoc2020({this.dayParam, this.subdayParam}); static List aocDays = [ AOC20201201(), AOC20201202(), AOC20201203(), AOC20201204(), AOC20201205(), AOC20201206(), AOC20201207(), AOC20201208(), AOC20201209(), AOC20201210(), AOC20201211(), AOC20201212(), ]; static void list() async { print('Days available:'); for (var index = 0; index < aocDays.length; index++) { var aocReflect = reflect(aocDays[index]); var classString = aocReflect.toString().split("'")[1]; print('${index + 1} : ${classString ?? 'null'}'); } } static void runAt({AOCBase single, bool testOnly}) async { var aocReflect = reflect(single); var classString = aocReflect.toString().split("'")[1]; await single.a(test: true); await single.b(test: true); print('$classString A Test : ${single.answerA ?? 'null'}'); print('$classString B Test : ${single.answerB ?? 'null'}'); if (!testOnly) { await single.a(); await single.b(); print('$classString A : ${single.answerA ?? 'null'}'); print('$classString B : ${single.answerB ?? 'null'}'); } } static void runLast({bool testOnly}) async { runAt(single: aocDays.last, testOnly: testOnly); } static void runAll({bool testOnly}) async { for (var single in aocDays) { runAt(single: single, testOnly: testOnly); } } }