public void Not_SameLinqPredicate_SameResults()
        {
            var spec1 = new StringContainsSpecification("ab");

            var spec     = spec1.Not();
            var actual   = StringCollection.Items.Where(x => spec.IsSatisfiedBy(x));
            var expected = StringCollection.Items.Where(x => !x.Contains(spec1.Part));

            Assert.Equal(expected, actual);
        }
        public void AndNot_SameLinqPredicate_SameResults()
        {
            var spec1 = new StringContainsSpecification("ab");
            var spec2 = new StringLengthSpecification(3);

            var spec     = spec1.AndNot(spec2);
            var actual   = StringCollection.Items.Where(x => spec.IsSatisfiedBy(x));
            var expected = StringCollection.Items.Where(x => x.Contains(spec1.Part) && x.Length != spec2.Length);

            Assert.Equal(expected, actual);
        }