Ejemplo n.º 1
0
        public static IEnumerable <object[]> GetUnaryExpressionMatrix()
        {
            Expression <Func <string, bool> > isNullOrWhiteSpace = str =>
                                                                   string.IsNullOrWhiteSpace(str);

            Expression <Func <string, bool> > isNullOrWhiteSpaceWrapper = str =>
                                                                          StringWrapper.IsNullOrWhitespace(str);

            Expression <Func <string, bool> > isNullOrEmpty = str =>
                                                              string.IsNullOrEmpty(str);

            var method = (isNullOrWhiteSpace.Body as MethodCallExpression)
                         .Method;

            var methodWrapper = (isNullOrWhiteSpaceWrapper.Body as MethodCallExpression)
                                .Method;

            var methodAlt = (isNullOrEmpty.Body as MethodCallExpression)
                            .Method;

            // everything is the same, should be true
            yield return(new object[]
            {
                Expression.IsTrue("1".AsConstantExpression(), method),
                Expression.IsTrue("1".AsConstantExpression(), method),
                true
            });

            // different types = false
            yield return(new object[]
            {
                Expression.IsTrue("1".AsConstantExpression(), method),
                Expression.IsTrue("1".AsConstantExpression(), methodWrapper),
                false
            });

            // different method names = false
            yield return(new object[]
            {
                Expression.IsTrue("1".AsConstantExpression(), method),
                Expression.IsTrue("1".AsConstantExpression(), methodAlt),
                false
            });

            // null and null = true
            yield return(new object[]
            {
                Expression.IsTrue(true.AsConstantExpression()),
                Expression.IsTrue(true.AsConstantExpression()),
                true
            });

            // null and not null = false
            yield return(new object[]
            {
                Expression.IsTrue(true.AsConstantExpression()),
                Expression.IsTrue("1".AsConstantExpression(), method),
                false
            });

            // not null and null = false
            yield return(new object[]
            {
                Expression.IsTrue("1".AsConstantExpression(), method),
                Expression.IsTrue(true.AsConstantExpression()),
                false
            });
        }