public void SelectsExistentialQuantification()
        {
            var spec = new IntegerGreaterThanZero().ForAny();

            Assert.IsTrue(spec.IsSatisfiedBy(new[] { -1, -2, -3, -4, 0, 1, 2 }));
            Assert.IsFalse(spec.IsSatisfiedBy(new[] { -1, -2, -3, -4, 0 }));
        }
        public void SelectsUniversalQuantification()
        {
            var spec = new IntegerGreaterThanZero().ForAll();

            Assert.IsTrue(spec.IsSatisfiedBy(new[] { 1, 1, 2, 3, 4, 5, 6 }));
            Assert.IsFalse(spec.IsSatisfiedBy(new[] { 3, 32, 589, 0, 11 }));
        }
        public void IsSatisfiedBy_Uses_Criteria()
        {
            var spec = new IntegerGreaterThanZero();

            Assert.That(spec.IsSatisfiedBy(1), Is.True);
            Assert.That(spec.IsSatisfiedBy(0), Is.False);
            Assert.That(spec.IsSatisfiedBy(-1), Is.False);
        }
        public void Matching_IQueryable_Uses_Specification()
        {
            var spec = new IntegerGreaterThanZero();
            var candidates = (new[] { -1, 0, 1, 2, 3 }).AsQueryable();

            var queryable = candidates.Matching(spec);
            foreach(var i in queryable)
            {
                Assert.That(spec.IsSatisfiedBy(i));
            }
        }
        public void Filter_IQueryable_Uses_Criteria()
        {
            var spec = new IntegerGreaterThanZero();
            var candidates = (new[] { -1, 0, 1, 2, 3 }).AsQueryable();

            var queryable = spec.Filter(candidates);
            foreach(var i in queryable)
            {
                Assert.That(spec.IsSatisfiedBy(i));
            }
        }