public void IComplexSpecification_ReturnSelf()
            {
                ISpecification <object> sut = MockComplexSpecification.True();

                var result = sut.AsComplexSpecification();

                Assert.Equal(sut, result);
            }
            public void NullCollectionLinqToEntities_NoException()
            {
                var specification = MockComplexSpecification <int> .True();

                var sut       = new AnySpecification <int[], int>(specification, true);
                var exception = Record.Exception(() => sut.IsSatisfiedBy(null));

                Assert.Null(exception);
            }
            public void NullCandidate_NoException()
            {
                var specification = MockComplexSpecification.True();
                var sut           = new NotSpecification <object>(specification);

                var exception = Record.Exception(() => sut.IsSatisfiedBy(null));

                Assert.Null(exception);
            }
示例#4
0
            public void IComplexSpecification_ArgumentException()
            {
                var exception = Record.Exception(() =>
                                                 new SpecificationAdapter <object>(
                                                     MockComplexSpecification.True()));

                Assert.NotNull(exception);
                Assert.IsType <ArgumentException>(exception);
            }
示例#5
0
            public void InvokeNull_NotRaiseException()
            {
                var specification = MockComplexSpecification.True();
                var sut           = new NotSpecification <object>(specification);

                var exception = Record.Exception(() => sut.GetExpression().Compile().Invoke(null));

                Assert.Null(exception);
            }
示例#6
0
        public void InvokeOr_ReturnOrSpecification()
        {
            var left     = MockComplexSpecification.True();
            var right    = MockComplexSpecification.True();
            var expected = new OrSpecification <object>(left, right);

            var sut = Specification.Or(left, right);

            Assert.Equal(expected, sut, new SpecificationComparer());
        }
示例#7
0
        public void InvokeCompositeForProperty_ReturnPropertySpecification()
        {
            var expected = new PropertySpecification <FakeType, string>(ft => ft.Second,
                                                                        MockComplexSpecification <string> .True());

            var sut = new MockCompositeSpecification <FakeType>().ForProperty(
                ft => ft.Second, MockComplexSpecification <string> .True());

            Assert.Equal(expected, sut, new SpecificationComparer());
        }
示例#8
0
        public void InvokeCompositeCast_ReturnCastSpecification()
        {
            var specification = MockComplexSpecification <IEnumerable <int> > .True();

            var expected = new CastSpecification <FakeType, IEnumerable <int> >(specification);

            var sut = new MockCompositeSpecification <FakeType>().Cast(specification);

            Assert.Equal(expected, sut, new SpecificationComparer());
        }
示例#9
0
        public void InvokeAll_ReturnAllSpecification()
        {
            var specification = MockComplexSpecification <int> .True();

            var expected = new AllSpecification <FakeType, int>(specification, true);

            var sut = Specification.All <FakeType, int>(specification);

            Assert.Equal(expected, sut, new SpecificationComparer());
        }
示例#10
0
            public void InvokeIncorrectData_ReturnFalse(bool leftResult, bool rightResult)
            {
                var left  = MockComplexSpecification.Create(leftResult);
                var right = MockComplexSpecification.Create(rightResult);
                var sut   = new OrSpecification <object>(left, right);

                var result = sut.GetExpression().Compile().Invoke(new object());

                Assert.False(result);
            }
            public void RelatedComplexTypes_ReturnNewSpecificationAdapterObject()
            {
                ISpecification <IEnumerable <char> > sut = MockComplexSpecification <IEnumerable <char> > .True();

                var result = sut.AsComplexSpecification <ChildFakeType>();

                Assert.NotNull(result);
                Assert.NotSame(sut, result);
                Assert.IsType <SpecificationAdapter <ChildFakeType> >(result);
            }
            public void AnyElementsValid_ReturnTrue <T, TType>(T candidate, Expression <Func <TType, bool> > expression)
                where T : IEnumerable <TType>
            {
                var specification = new MockComplexSpecification <TType>(expression);
                var sut           = new AnySpecification <T, TType>(specification);

                var result = sut.IsSatisfiedBy(candidate);

                Assert.True(result);
            }
示例#13
0
        public void InvokeAndNot_ReturnAndSpecification()
        {
            var left     = MockComplexSpecification.True();
            var right    = MockComplexSpecification.True();
            var expected = new AndSpecification <object>(left, right.Not());

            var sut = Specification.AndNot(left, right);

            Assert.Equal(expected, sut, new SpecificationComparer());
        }
        public void InvokeCompositeAny_ReturnAnySpecification()
        {
            var specification = MockComplexSpecification <int> .True();

            var expected = new AnySpecification <FakeType, int>(specification, true);

            var sut = new MockCompositeSpecification <FakeType>().Any(specification);

            Assert.Equal(expected, sut, new SpecificationComparer());
        }
            public void InvokeNullCollectionLinqToEntities_Exception()
            {
                var specification = MockComplexSpecification <int> .True();

                var sut       = new AnySpecification <int[], int>(specification, true);
                var exception = Record.Exception(() => sut.GetExpression().Compile().Invoke(null));

                Assert.NotNull(exception);
                Assert.IsType <ArgumentNullException>(exception);
            }
            public void NotAnyElementsValid_ReturnFalse <T, TType>(T candidate, Expression <Func <TType, bool> > expression)
                where T : IEnumerable <TType>
            {
                candidate = candidate?.ToString() != "null" ? candidate : default;
                var specification = new MockComplexSpecification <TType>(expression);
                var sut           = new AnySpecification <T, TType>(specification);

                var result = sut.IsSatisfiedBy(candidate);

                Assert.False(result);
            }
示例#17
0
            public void InvokeAllElementsValid_ReturnTrue <T, TType>(T candidate,
                                                                     Expression <Func <TType, bool> > expression)
                where T : IEnumerable <TType>
            {
                var specification = new MockComplexSpecification <TType>(expression);
                var sut           = new AllSpecification <T, TType>(specification);

                var result = sut.GetExpression().Compile().Invoke(candidate);

                Assert.True(result);
            }
            public void CorrectComplexSpecification_ReturnExpressionForAny()
            {
                ISpecification <string> specification = MockComplexSpecification <string> .True();

                var sut = new AnySpecification <string[], string>(specification);

                var sutExpression = sut.GetExpression();
                var result        = sutExpression.ToString();

                Assert.Equal(@"candidate => ((candidate != null) AndAlso candidate.Any(candidate => True))", result);
            }
            public void InvokeRelatedTypes_NoException()
            {
                var specification = MockComplexSpecification <IEnumerable <int> > .True();

                var exception = Record.Exception(() =>
                {
                    var sut = new AnySpecification <IEnumerable <EquatableFakeType>, EquatableFakeType>(specification);
                    sut.GetExpression().Compile().Invoke(new EquatableFakeType[0]);
                });

                Assert.Null(exception);
            }
示例#20
0
            public void InvokeIncorrectData_ReturnTrue(bool isNegatable)
            {
                var specification = !isNegatable
                    ? MockComplexSpecification.True()
                    : MockNegatableComplexSpecification.True();

                var sut = new NotSpecification <object>(specification);

                var result = sut.GetExpression().Compile().Invoke(new object());

                Assert.False(result);
            }
            public void RelatedTypes_NoException()
            {
                var specification = MockComplexSpecification <IEnumerable <char> > .True();

                var exception = Record.Exception(() =>
                {
                    var sut = new NotSpecification <ChildFakeType>(specification);
                    sut.IsSatisfiedBy(new ChildFakeType());
                });

                Assert.Null(exception);
            }
        public void InvokeOrNotProperty_ReturnPropertySpecification()
        {
            var left = MockComplexSpecification<int>.True();
            var right = MockComplexSpecification<int>.True();
            var expected = new PropertySpecification<FakeType, int>(
                ft => ft.First, new OrSpecification<int>(left, right.Not()));

            var sut = Specification.OrNot<FakeType, int>(
                ft => ft.First, left, right);

            Assert.Equal(expected, sut, new SpecificationComparer());
        }
示例#23
0
            public void CastCorrectSpecification_ReturnIsSatisfiedByFunction()
            {
                ISpecification <string> specification = MockComplexSpecification <string> .True();

                var sut = new AnySpecification <string[], string>(specification);
                Func <string[], bool> expected = sut.IsSatisfiedBy;

                var result = (Func <string[], bool>)sut;

                Assert.NotNull(result);
                Assert.Equal(expected, result);
            }
示例#24
0
            public void CastCorrectSpecification_ReturnExpressionWithParameterFromSelector()
            {
                ISpecification <string> specification = MockComplexSpecification <string> .True();

                var sut = new AnySpecification <string[], string>(specification);

                var expected      = sut.GetExpression().ToString();
                var sutExpression = (Expression)sut;
                var result        = sutExpression.ToString();

                Assert.Equal(expected, result);
            }
            public void NonGenericILinqSpecification_ReturnBaseExpressionAsAbstractExpression()
            {
                ISpecification <string> specification = MockComplexSpecification <string> .True();

                var sut = new AnySpecification <string[], string>(specification);

                var expected      = sut.GetExpression().ToString();
                var sutExpression = ((ILinqSpecification)sut).GetExpression();
                var result        = sutExpression.ToString();

                Assert.Equal(expected, result);
            }
            public void RelatedTypes_NoException()
            {
                var specification = MockComplexSpecification <IEnumerable <int> > .True();

                var exception = Record.Exception(() =>
                {
                    var sut = new AnySpecification <IEnumerable <EquatableFakeType>, EquatableFakeType>(specification);
                    sut.IsSatisfiedBy(new EquatableFakeType[0]);
                });

                Assert.Null(exception);
            }
示例#27
0
            public void InvokeRelatedTypes_NoException()
            {
                var specification = MockComplexSpecification <IEnumerable <char> > .True();

                var exception = Record.Exception(() =>
                {
                    var sut = new NotSpecification <ChildFakeType>(specification);
                    sut.GetExpression().Compile().Invoke(new ChildFakeType());
                });

                Assert.Null(exception);
            }
        public void InvokeCompositeAnyProperty_ReturnPropertySpecification()
        {
            var specification = MockComplexSpecification <int> .True();

            var expected = new PropertySpecification <FakeType, IEnumerable <int> >(
                ft => ft.Fourth, new AnySpecification <IEnumerable <int>, int>(specification, true));

            var sut = new MockCompositeSpecification <FakeType>().Any(
                ft => ft.Fourth, specification);

            Assert.Equal(expected, sut, new SpecificationComparer());
        }
            public void AnyElementsValid_ReturnExpectedResultObject <T, TType>(T candidate,
                                                                               Expression <Func <TType, bool> > expression, SpecificationResult expected)
                where T : IEnumerable <TType>
            {
                var specification = new MockComplexSpecification <TType>(expression);
                var sut           = new AnySpecification <T, TType>(specification);

                var overall = sut.IsSatisfiedBy(candidate, out var result);

                Assert.True(overall);
                Assert.Equal(expected, result, new SpecificationResultComparer());
            }
            public void CastCorrectSpecification_ReturnIsSatisfiedByFunction()
            {
                ISpecification <object> specification = MockComplexSpecification <object> .True();

                var sut = new CastSpecification <FakeType, object>(specification);
                Func <FakeType, bool> expected = sut.IsSatisfiedBy;

                var result = (Func <FakeType, bool>)sut;

                Assert.NotNull(result);
                Assert.Equal(expected, result);
            }