public void CanCombineSpecificationsUsingXor() { Specification <string> isLowercase = new IsLowercaseSpecification(); Specification <string> startsWithF = new StartsWithFSpecification(); Assert.IsFalse(isLowercase.Xor(startsWithF).IsSatisfiedBy("foo"), "foo (both)"); Assert.IsTrue(isLowercase.Xor(startsWithF).IsSatisfiedBy("fl4M1ng0"), "fl4M1ng0 (starts with f)"); Assert.IsTrue(isLowercase.Xor(startsWithF).IsSatisfiedBy("bar"), "bar (lowercase)"); Assert.IsFalse(isLowercase.Xor(startsWithF).IsSatisfiedBy("Bassoon"), "Bassoon (neither)"); }
public void CanFilterByNotSpecification() { Specification <string> isLowercase = new IsLowercaseSpecification(); Specification <string> isNotJustLowercase = new NotSpecification <string>(isLowercase); Assert.IsTrue(isLowercase.IsSatisfiedBy("foo")); Assert.IsFalse(isLowercase.IsSatisfiedBy("Bar")); Assert.IsFalse(isNotJustLowercase.IsSatisfiedBy("foo")); Assert.IsTrue(isNotJustLowercase.IsSatisfiedBy("Bar")); }