public async Task DispatcherCancelTest() { var fixture = new Fixture().Customize(new AutoMoqCustomization { ConfigureMembers = true }).Customize(new SupportMutableValueTypesCustomization()); var opFoo = fixture.Create <Foo>(); var fooHandler = new FooTestHandler(); var factory = new Mock <IHandlerFactory>(); factory.Setup(f => f.Create <Foo, int, DefaultMessage>(It.IsAny <RequestContext <DefaultMessage> >())).Returns(fooHandler); var generatedDispatcher = new ExpressionDispatcher <DefaultMessage, DefaultMessage>( new MsgSerializer(), factory.Object, OperationRuntimeModel.CreateFromAttribute(new[] { typeof(Foo) }), new NullLoggerFactory(), new DescriptionRuntimeModel()); generatedDispatcher.ExecutionSide = Side.Server; generatedDispatcher.Subscribe(new Mock <IResponseReceiver <DefaultMessage> >().Object); var mockSession = new Mock <Session>(Array.Empty <SessionProperty>()); var hasData = true; mockSession.SetupGet(s => s.HasAvailableData).Returns(() => hasData); mockSession.Setup(s => s.ReceiveMessageAsync()).ReturnsAsync(() => { hasData = false; return(CreateRawMessage(0, opFoo)); }); var hasCancelData = true; var mockSessionWithCancel = new Mock <Session>(Array.Empty <SessionProperty>()); mockSessionWithCancel.SetupGet(s => s.HasAvailableData).Returns(() => hasCancelData); mockSessionWithCancel.Setup(s => s.ReceiveMessageAsync()).ReturnsAsync(() => { hasCancelData = false; return(MessagePackSerializer.Serialize(new DefaultMessage() { OperationCode = 0, Status = BuiltInOperationState.Cancel })); }); generatedDispatcher.DispatchAsync(mockSession.Object).GetAwaiter(); Task.Delay(100).ContinueWith(task => { generatedDispatcher.DispatchAsync(mockSessionWithCancel.Object).GetAwaiter(); }).GetAwaiter(); await Task.Delay(300); mockSession.Verify(s => s.SendMessageAsync(It.IsAny <ArraySegment <byte> >(), DeliveryMode.Reliable | DeliveryMode.Ordered), Times.Never); mockSessionWithCancel.Verify(s => s.SendMessageAsync(It.IsAny <ArraySegment <byte> >(), DeliveryMode.Reliable | DeliveryMode.Ordered), Times.Never); mockSession.Verify(s => s.ReceiveMessageAsync(), Times.Once); mockSessionWithCancel.Verify(s => s.ReceiveMessageAsync(), Times.Once); }
internal EntitySetExpression(TableExpression sourceTable, MemberInfo memberInfo, Type entitySetType, BuilderContext builderContext, ExpressionDispatcher dispatcher) : base(ExpressionType, entitySetType) { this.builderContext = builderContext; this.EntitySetType = entitySetType; this.dispatcher = dispatcher; this.sourceTable = sourceTable; this.memberInfo = memberInfo; ParseExpression(sourceTable); }
public async Task GeneratedDispatchTest() { var fixture = new Fixture().Customize(new AutoMoqCustomization { ConfigureMembers = true }).Customize(new SupportMutableValueTypesCustomization()); var opA = fixture.Create <A>(); var opB = fixture.Create <B>(); var resultA = fixture.Freeze <int>(); var handlerA = fixture.Freeze <Mock <IHandler <A, int, DefaultMessage> > >(); var handlerB = fixture.Freeze <Mock <IHandler <B, float, DefaultMessage> > >(); var factory = new Mock <IHandlerFactory>(); factory.Setup(f => f.Create <A, int, DefaultMessage>(It.IsAny <RequestContext <DefaultMessage> >())).ReturnsUsingFixture(fixture); factory.Setup(f => f.Create <B, float, DefaultMessage>(It.IsAny <RequestContext <DefaultMessage> >())).ReturnsUsingFixture(fixture); var generatedDispatcher = new ExpressionDispatcher <DefaultMessage, DefaultMessage>(new MsgSerializer(), factory.Object, OperationRuntimeModel.CreateFromAttribute(new[] { typeof(A), typeof(B) }), new NullLoggerFactory(), new DescriptionRuntimeModel()); generatedDispatcher.ExecutionSide = Side.Server; generatedDispatcher.Subscribe(new Mock <IResponseReceiver <DefaultMessage> >().Object); var mockSession = new Mock <Session>(Array.Empty <SessionProperty>()); var hasData = true; mockSession.SetupGet(s => s.HasAvailableData).Returns(() => hasData); mockSession.Setup(s => s.ReceiveMessageAsync()).ReturnsAsync(() => { hasData = false; return(CreateRawMessage(0, opA, TypeMessage.Request)); }); await generatedDispatcher.DispatchAsync(mockSession.Object); mockSession.Verify(s => s.SendMessageAsync(It.IsAny <ArraySegment <byte> >(), DeliveryMode.Reliable | DeliveryMode.Ordered), Times.Once); handlerA.Verify(handler => handler.Handle(opA, It.IsAny <RequestContext <DefaultMessage> >(), It.IsAny <CancellationToken>()), Times.Once); handlerB.Verify(h => h.Handle(It.IsAny <B>(), It.IsAny <RequestContext <DefaultMessage> >(), It.IsAny <CancellationToken>()), Times.Never); }