public void Or_a_function_creates_combined_function_which_must_satisfy_either(Person personOne, Person personTwo, Person personThree) { // Arrange personOne.Identity = 1; personOne.Name = "Bob"; personTwo.Identity = 2; personTwo.Name = "Anna"; personThree.Identity = 3; personThree.Name = "Jo"; var firstSpec = new PersonIdentifierSpecificationExpression(3); var secondSpec = new PersonNameSpecificationFunction("Anna"); var combinedSpec = firstSpec.Or(secondSpec); var people = new[] { personOne, personTwo, personThree }; // Act var result = people.Where(combinedSpec).ToArray(); // Assert Assert.That(result, Is.EquivalentTo(new[] { personTwo, personThree })); }
public void And_creates_combined_expression_which_must_satisfy_both(Person personOne, Person personTwo, Person personThree) { // Arrange personOne.Identity = 1; personOne.Name = "Bob"; personTwo.Identity = 2; personTwo.Name = "Anna"; personThree.Identity = 3; personThree.Name = "Anna"; var firstSpec = new PersonNameSpecificationExpression("Anna"); var secondSpec = new PersonIdentifierSpecificationExpression(2); var combinedSpec = firstSpec.And(secondSpec); var people = new[] { personOne, personTwo, personThree }.AsQueryable(); var result = people.Where(combinedSpec).ToArray(); Assert.That(result, Is.EquivalentTo(new[] { personTwo })); }