Beispiel #1
0
        public void HandleBlockingRequestArgsReturns()
        {
            const int num            = 10;
            const int expectedResult = 55;
            var       mock           = new Mock <ITestService> (MockBehavior.Strict);

            mock.Setup(x => x.BlockingProcedureReturns(It.IsAny <int> (), It.IsAny <int> ()))
            .Returns((int n, int sum) => BlockingProcedureReturnsFn(n, sum));
            TestService.Service = mock.Object;
            var call = Call("TestService", "BlockingProcedureReturns", Arg(0, num));

            BlockingProcedureReturnsFnCount = 0;
            ProcedureResult result = null;
            Continuation <ProcedureResult> continuation = new ProcedureCallContinuation(call);

            while (result == null)
            {
                try {
                    result = continuation.Run();
                } catch (YieldException e) {
                    continuation = (Continuation <ProcedureResult>)e.Continuation;
                }
            }
            // Verify the KRPCProcedure is called once, but the handler function is called multiple times
            mock.Verify(x => x.BlockingProcedureReturns(It.IsAny <int> (), It.IsAny <int> ()), Times.Once());
            Assert.AreEqual(num + 1, BlockingProcedureReturnsFnCount);
            CheckResultNotEmpty(result);
            Assert.AreEqual(expectedResult, (int)result.Value);
        }
Beispiel #2
0
        static ProcedureResult Run(ProcedureCall call)
        {
            var continuation = new ProcedureCallContinuation(call);

            return(continuation.Run());
        }