public void PropertyAccessModiferOnNotNullableMember()
        {
            IExpressionRewriter modifier = new PropertyAccessRewriter();
            Expression<Func<Member, int>> expression = m => m.GroupId2;

            Expression newBody = modifier.Rewrite(expression.Body);
            expression = ExpressionUtils.ChangeBody(expression, newBody);

            int? result = expression.Compile().Invoke(null);
        }
        public void PropertyAccessModiferOnCastedMember()
        {
            IExpressionRewriter modifier = new PropertyAccessRewriter();
            Expression<Func<Member, int?>> expression = m => (int?)m.GroupId2;

            Expression newBody = modifier.Rewrite(expression.Body);
            expression = ExpressionUtils.ChangeBody(expression, newBody);

            int? result = expression.Compile().Invoke(null);

            Assert.IsNull(result);
        }
        public void PropertyAccessModiferOnMappedNullableMember()
        {
            IExpressionRewriter modifier = new PropertyAccessRewriter();
            Expression<Func<Member, string>> expression = m => m.GroupId == null ? "null" : "not null";

            Expression newBody = modifier.Rewrite(expression.Body);
            expression = ExpressionUtils.ChangeBody(expression, newBody);

            string result = expression.Compile().Invoke(null);

            Assert.AreEqual("null", result);
        }
        public void PropertyAccessModiferOnConvertedStaticMember()
        {
            IExpressionRewriter modifier = new PropertyAccessRewriter();
            Expression<Func<DateTime?>> expression = () => (DateTime?)DateTime.Now;

            Expression newBody = modifier.Rewrite(expression.Body);
            expression = ExpressionUtils.ChangeBody(expression, newBody);

            DateTime? result = expression.Compile().Invoke();

            Assert.IsNotNull(result);
        }
        public void PropertyAccessModiferOnStaticMember()
        {
            IExpressionRewriter modifier = new PropertyAccessRewriter();
            Expression<Func<string>> expression = () => PropertyAccessModifierFixture.Static;

            Expression newBody = modifier.Rewrite(expression.Body);
            expression = ExpressionUtils.ChangeBody(expression, newBody);

            string result = expression.Compile().Invoke();

            Assert.IsNotNull(result);
        }