private static Guest ReadOne(TextReader reader, IReadOnlyThemePark themePark) { var lines = new[] { reader.ReadLineAsync().Result, reader.ReadLineAsync().Result, reader.ReadLineAsync().Result, }; // TODO: may check hours are not after park closed var entryTimeMinutes = lines[0].ParseInteger(); VerifyWithinParkHours(entryTimeMinutes, themePark.MaxHoursPerDay); var visitCount = lines[1].ParseInteger().VerifyDesiredAttractions(); var visits = from x in lines[2].Split(' ') select x.ParseInteger().VerifyRange(0, themePark.ReadOnlyAttractions.Count - 1); // ReSharper disable once PossibleMultipleEnumeration visits.Count().VerifyValue(visitCount); // ReSharper disable once PossibleMultipleEnumeration return new Guest(entryTimeMinutes, themePark, visits); }
public Guest(int entryTimeMinutes, IReadOnlyThemePark themePark, IEnumerable<int> desired) { _themePark = themePark; EntryTimeMinutes = entryTimeMinutes; Desired = VerifyDistinct(desired).ToList(); }
public static IEnumerable<Guest> ReadAll(TextReader reader, int count, IReadOnlyThemePark themePark) { while (count-- > 0) yield return ReadOne(reader, themePark); }
public Visit(Guest guest, IReadOnlyThemePark themePark, IEnumerable<int> desired) { _guest = guest; _themePark = themePark; _desired = desired.ToList(); }