Beispiel #1
0
        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();
        }
Beispiel #2
0
        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");
            }
        }
Beispiel #3
0
        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;
        }
Beispiel #4
0
        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();
        }
Beispiel #5
0
        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();
        }