internal GuardDataReader() { guards = new List <Day04Solver.Guard>(); currentGuard = null; fallsAsleepMinute = 0; const string timestampRegexFormat = "\\[(\\d{4})-(\\d{2})-(\\d{2}) (\\d{2}):(\\d{2})\\]"; guardBeginsShiftParsingRegex = new Regex($"^{timestampRegexFormat} Guard #(\\d+) begins shift$"); guardFallsAsleepParsingRegex = new Regex($"^{timestampRegexFormat} falls asleep$"); guardWakesUpParsingRegex = new Regex($"^{timestampRegexFormat} wakes up"); }
private void HandleBeginsShift(Match match) { var id = int.Parse(match.Groups[6].Value); currentGuard = guards.SingleOrDefault(g => g.Id == id); if (currentGuard != null) { return; } currentGuard = new Day04Solver.Guard(id); guards.Add(currentGuard); }
public Day04SolverTest() { var guard10 = new Day04Solver.Guard(10); guard10.SleepIntervals.Add(new Day04Solver.Guard.SleepInterval(05, 25)); guard10.SleepIntervals.Add(new Day04Solver.Guard.SleepInterval(30, 55)); guard10.SleepIntervals.Add(new Day04Solver.Guard.SleepInterval(24, 29)); var guard99 = new Day04Solver.Guard(99); guard99.SleepIntervals.Add(new Day04Solver.Guard.SleepInterval(40, 50)); guard99.SleepIntervals.Add(new Day04Solver.Guard.SleepInterval(36, 46)); guard99.SleepIntervals.Add(new Day04Solver.Guard.SleepInterval(45, 55)); var dataProvider = new Mock <DataProvider <IEnumerable <Day04Solver.Guard> > >(); dataProvider.Setup(dp => dp.GetData()).Returns(new[] { guard10, guard99 }); solver = new Day04Solver(dataProvider.Object); }
public void ReturnsGuardsFromFile() { const string filename = "data\\day04_guard_list.txt"; var guard10 = new Day04Solver.Guard(10); guard10.SleepIntervals.Add(new Day04Solver.Guard.SleepInterval(05, 25)); guard10.SleepIntervals.Add(new Day04Solver.Guard.SleepInterval(30, 55)); guard10.SleepIntervals.Add(new Day04Solver.Guard.SleepInterval(24, 29)); var guard99 = new Day04Solver.Guard(99); guard99.SleepIntervals.Add(new Day04Solver.Guard.SleepInterval(40, 50)); guard99.SleepIntervals.Add(new Day04Solver.Guard.SleepInterval(36, 46)); guard99.SleepIntervals.Add(new Day04Solver.Guard.SleepInterval(45, 55)); var expected = new[] { guard10, guard99 }; var guards = new Day04GuardFileReaderDataProvider(filename).GetData(); Assert.Equal(expected, guards, new GuardComparer()); }