public void Part2(string filepath, int expected) { var parser = new Parser(filepath); var factory = new PassportFactory(); var passports = parser.Parse(factory).Where(p => p != null); var sut = new PassportValidator(passports, new Rule[] { new InRangeRule(p => p.BirthYear, 1920, 2020), new InRangeRule(p => p.ExperationYear, 2020, 2030), new ContainsRule(p => p.EyeColor, new [] { "amb", "blu", "brn", "gry", "grn", "hzl", "oth" }), new RegexRule(p => p.HairColor, "^#[0-9a-f]{6}$"), new PredicateRule( p => p.Unit == Unit.Metric, new InRangeRule(p => p.Height, 150, 193), new InRangeRule(p => p.Height, 59, 76) ), new InRangeRule(p => p.IssueYear, 2010, 2020), new RegexRule(p => p.PassportId, "^[0-9]{9}$"), }); var actual = sut.Validate(); Assert.Equal(expected, actual); }