public void ValidateAsyncTaskMethodOutput() { const string expectedResult = "Echo Me!"; var boundObject = new AsyncBoundObject(); var objectRepository = new JavascriptObjectRepository(); objectRepository.Register("testObject", boundObject, true, new BindingOptions { CamelCaseJavascriptNames = false }); var methodInvocation = new MethodInvocation(1, 1, 1, nameof(boundObject.AsyncWaitTwoSeconds), 1); methodInvocation.Parameters.Add(expectedResult); var methodRunnerQueue = new ConcurrentMethodRunnerQueue(objectRepository); var manualResetEvent = new ManualResetEvent(false); var actualResult = ""; methodRunnerQueue.MethodInvocationComplete += (sender, args) => { methodRunnerQueue.Stop(); actualResult = args.Result.Result.ToString(); manualResetEvent.Set(); }; methodRunnerQueue.Start(); methodRunnerQueue.Enqueue(methodInvocation); manualResetEvent.WaitOne(3000); Assert.Equal(expectedResult, actualResult); }
public async Task StopConcurrentMethodRunnerQueueWhenMethodRunning() { var boundObject = new AsyncBoundObject(); var objectRepository = new JavascriptObjectRepository(); objectRepository.Register("testObject", boundObject, true, new BindingOptions { CamelCaseJavascriptNames = false }); var methodInvocation = new MethodInvocation(1, 1, 1, nameof(boundObject.AsyncWaitTwoSeconds), 1); methodInvocation.Parameters.Add("Echo Me!"); var methodRunnerQueue = new ConcurrentMethodRunnerQueue(objectRepository); methodRunnerQueue.Start(); methodRunnerQueue.Enqueue(methodInvocation); //Wait a litle for the queue to start processing our Method call await Task.Delay(500); var ex = Record.Exception(() => methodRunnerQueue.Stop()); Assert.Null(ex); }