public void AndSpecificationTestAndSpecification() { // arrange var specFirstName = new AdHocSpecification <Sample>(x => x.FirstName.StartsWith("J")); var specLastName = new AdHocSpecification <Sample>(x => x.LastName.StartsWith("R")); var spec = new AndSpecification <Sample>(specFirstName, specLastName); // act var resultFirstName = TestData.List.Where(specFirstName.IsSatisfied()).OrderBy(c => c.FirstName); var resultLastName = TestData.List.Where(specLastName.IsSatisfied()).OrderBy(c => c.FirstName); var result = TestData.List.Where(spec.IsSatisfied()).OrderBy(c => c.FirstName); // assert Assert.That(resultFirstName.Count(), Is.EqualTo(2)); Assert.That(resultFirstName.First().FirstName, Is.EqualTo("Jose")); Assert.That(resultFirstName.Last().FirstName, Is.EqualTo("Julian")); Assert.That(resultLastName.Count(), Is.EqualTo(2)); Assert.That(resultLastName.First().LastName, Is.EqualTo("Rodriguez")); Assert.That(resultLastName.Last().LastName, Is.EqualTo("Rivera")); Assert.That(result.Count(), Is.EqualTo(1)); Assert.That(result.First().FirstName, Is.EqualTo("Jose")); Assert.That(result.First().LastName, Is.EqualTo("Rodriguez")); }