public void TestAsyncAwaitWithinAppExceptionPath() { var app = new ConsoleApp(1, 1); var appPromise = app.Start(); app.QueueAction(async() => { ConsoleApp.AssertAppThread(app); foreach (TaskCreationOptions option in Enum.GetValues(typeof(TaskCreationOptions))) { Console.WriteLine(option); try { await Task.Factory.StartNew(() => { throw new NotImplementedException("OOPS"); }, option); Assert.Fail("An exception should have been thrown"); } catch (NotImplementedException) { } ConsoleApp.AssertAppThread(app); } app.Stop(); }); appPromise.Wait(); }
public async Task TestQueueActionAsyncExceptions() { try { var app = new ConsoleApp(80, 30); var appTask = app.Start().AsAwaitable(); var hello = await app.QueueActionAsync <string>(async() => { ConsoleApp.AssertAppThread(app); await Task.Delay(10); ConsoleApp.AssertAppThread(app); throw new FormatException("Some random format exception"); }); Assert.AreEqual("Hello", hello); await appTask; Assert.Fail("A format exception should have been thrown"); } catch (Exception ex) { Assert.IsTrue(ex.InnerException is FormatException); Assert.IsTrue(ex.InnerException.Message == "Some random format exception"); } }
public async Task TestQueueActionAsync() { var app = new ConsoleApp(80, 30); var appTask = app.Start().AsAwaitable(); var hello = await app.QueueActionAsync <string>(async() => { ConsoleApp.AssertAppThread(app); await Task.Delay(100); ConsoleApp.AssertAppThread(app); app.Stop(); return("Hello"); }); Assert.AreEqual("Hello", hello); await appTask; }
public void TestAsyncAwaitWithinApp() { var app = new ConsoleApp(1, 1); var appPromise = app.Start(); app.QueueAction(async() => { ConsoleApp.AssertAppThread(app); foreach (TaskCreationOptions option in Enum.GetValues(typeof(TaskCreationOptions))) { Console.WriteLine(option); await Task.Factory.StartNew(() => { Thread.Sleep(50); }, option); ConsoleApp.AssertAppThread(app); } app.Stop(); }); appPromise.Wait(); }
public void TestAsyncAwaitWithinApp() { var app = new ConsoleApp(1, 1); var appTask = app.Start(); app.InvokeNextCycle(async() => { ConsoleApp.AssertAppThread(app); foreach (TaskCreationOptions option in Enum.GetValues(typeof(TaskCreationOptions))) { Console.WriteLine(option); await Task.Factory.StartNew(() => { Thread.Sleep(50); }, option); ConsoleApp.AssertAppThread(app); Console.WriteLine("App thread confirmed"); } app.Stop(); }); appTask.Wait(); }