// Alias Console to MockConsole so we don't accidentally use Console namespace Terminal.Gui.ApplicationTests; public class SyncrhonizationContextTests { [Fact] [AutoInitShutdown] public void SynchronizationContext_CreateCopy () { SynchronizationContext context = SynchronizationContext.Current; Assert.NotNull (context); SynchronizationContext contextCopy = context.CreateCopy (); Assert.NotNull (contextCopy); Assert.NotEqual (context, contextCopy); } [Fact] [AutoInitShutdown] public void SynchronizationContext_Post () { SynchronizationContext context = SynchronizationContext.Current; var success = false; Task.Run ( () => { Thread.Sleep (1_000); // non blocking context.Post ( delegate { success = true; // then tell the application to quit Application.Invoke (() => Application.RequestStop ()); }, null ); Assert.False (success); } ); // blocks here until the RequestStop is processed at the end of the test Application.Run ().Dispose (); Assert.True (success); } [Fact] [AutoInitShutdown] public void SynchronizationContext_Send () { SynchronizationContext context = SynchronizationContext.Current; var success = false; Task.Run ( () => { Thread.Sleep (1_000); // blocking context.Send ( delegate { success = true; // then tell the application to quit Application.Invoke (() => Application.RequestStop ()); }, null ); Assert.True (success); } ); // blocks here until the RequestStop is processed at the end of the test Application.Run ().Dispose (); Assert.True (success); } }