コード例 #1
0
        public void SetUp()
        {
            _stageMock                      = MockRepository.GenerateStrictMock <IMappingResolutionStage>();
            _resolverMock                   = MockRepository.GenerateStrictMock <IMappingResolver>();
            _sqlTable                       = SqlStatementModelObjectMother.CreateSqlTable_WithResolvedTableInfo(typeof(Cook));
            _mappingResolutionContext       = new MappingResolutionContext();
            _generator                      = new UniqueIdentifierGenerator();
            _entityIdentityResolverMock     = MockRepository.GenerateStrictMock <IEntityIdentityResolver> ();
            _compoundComparisonSplitterMock = MockRepository.GenerateStrictMock <ICompoundExpressionComparisonSplitter> ();
            _namedExpressionCombinerMock    = MockRepository.GenerateStrictMock <INamedExpressionCombiner>();
            _groupAggregateSimplifierMock   = MockRepository.GenerateStrictMock <IGroupAggregateSimplifier>();

            _visitor = CreateVisitor(true);
        }
コード例 #2
0
        public void VisitMemberExpression()
        {
            var memberInfo       = typeof(Cook).GetProperty("ID");
            var expression       = SqlStatementModelObjectMother.CreateSqlEntityDefinitionExpression(typeof(Cook));
            var memberExpression = Expression.MakeMemberAccess(expression, memberInfo);

            var fakeResolvedExpression = new SqlLiteralExpression(1);

            _stageMock
            .Expect(mock => mock.ResolveMemberAccess(expression, memberInfo, _resolverMock, _mappingResolutionContext))
            .Return(fakeResolvedExpression);
            _stageMock.Replay();

            var result = ResolvingExpressionVisitor.ResolveExpression(memberExpression, _resolverMock, _stageMock, _mappingResolutionContext, _generator);

            _stageMock.VerifyAllExpectations();
            Assert.That(result, Is.SameAs(fakeResolvedExpression));
        }
コード例 #3
0
        public void ResolveExpression_OptimizesEntityRefMemberComparisons()
        {
            // This test proves that the first stage (without resolving SqlEntityRefMemberExpressions) is executed.
            var memberInfo                = typeof(Kitchen).GetProperty("Cook");
            var entityExpression          = SqlStatementModelObjectMother.CreateSqlEntityDefinitionExpression(typeof(Kitchen));
            var fakeOptimizedRefIdentity  = new SqlColumnDefinitionExpression(typeof(int), "c", "KitchenID", false);
            var entityRefMemberExpression = new SqlEntityRefMemberExpression(entityExpression, memberInfo);

            _resolverMock
            .Stub(stub => stub.TryResolveOptimizedIdentity(entityRefMemberExpression))
            .Return(fakeOptimizedRefIdentity);

            var entity = CreateEntityExpressionWithIdentity(typeof(Cook), typeof(int));
            var binary = Expression.Equal(entityRefMemberExpression, entity);

            var result = ResolvingExpressionVisitor.ResolveExpression(binary, _resolverMock, _stageMock, _mappingResolutionContext, _generator);

            var expected = Expression.Equal(fakeOptimizedRefIdentity, entity.GetIdentityExpression());

            SqlExpressionTreeComparer.CheckAreEqualTrees(expected, result);
        }
コード例 #4
0
        public void ResolveExpression_ResolvesSqlEntityRefMemberExpressions()
        {
            // This test proves that the second stage (resolving SqlEntityRefMemberExpressions) is executed.
            var memberInfo                = typeof(Cook).GetProperty("Kitchen");
            var entityExpression          = SqlStatementModelObjectMother.CreateSqlEntityDefinitionExpression(typeof(Cook));
            var entityRefMemberExpression = new SqlEntityRefMemberExpression(entityExpression, memberInfo);

            var fakeResult = SqlStatementModelObjectMother.CreateSqlEntityDefinitionExpression(typeof(Kitchen));

            _stageMock
            .Expect(
                mock => mock.ResolveEntityRefMemberExpression(
                    Arg.Is(entityRefMemberExpression),
                    Arg <UnresolvedJoinInfo> .Matches(
                        i => i.OriginatingEntity == entityExpression && i.MemberInfo == memberInfo && i.Cardinality == JoinCardinality.One),
                    Arg.Is(_mappingResolutionContext)))
            .Return(fakeResult);

            var result = ResolvingExpressionVisitor.ResolveExpression(
                entityRefMemberExpression, _resolverMock, _stageMock, _mappingResolutionContext, _generator);

            Assert.That(result, Is.SameAs(fakeResult));
        }