You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

75 lines
2.1 KiB
Dart

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/aoc20201213.dart';
import 'package:aoc2020/aoc20201214.dart';
import 'package:aoc2020/aocbase.dart';
import 'dart:mirrors';
class aoc2020 {
final String dayParam;
final String subdayParam;
aoc2020({this.dayParam, this.subdayParam});
static List<AOCBase> aocDays = [
AOC20201201(),
AOC20201202(),
AOC20201203(),
AOC20201204(),
AOC20201205(),
AOC20201206(),
AOC20201207(),
AOC20201208(),
AOC20201209(),
AOC20201210(),
AOC20201211(),
AOC20201212(),
AOC20201213(),
AOC20201214(),
];
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);
}
}
}