public void TestConsoleWipesOnStopped()
{
var testCli = new CliUnitTestConsole(80, 4);
ConsoleProvider.Current = testCli;
var viewModel = new BasicXmlAppViewModel();
var app = ConsoleApp.FromMvVm(Resources.BasicXmlApp, viewModel);
bool appDrewProperly = false;
bool appWipedAfterStoppedEvent = false;
bool appWipedAfterTask = false;
app.Stopping.SubscribeForLifetime(() =>
{
appDrewProperly = testCli.Buffer.ToString().Trim().Length > 0;
Console.WriteLine("STOPPING");
Console.WriteLine(testCli.Buffer.ToString());
Console.WriteLine("STOPPING");
}, app.LifetimeManager);
app.Stopped.SubscribeForLifetime(() =>
{
appWipedAfterStoppedEvent = testCli.Buffer.ToString().Trim().Length == 0;
Console.WriteLine("STOPPED");
Console.WriteLine(testCli.Buffer.ToString());
Console.WriteLine("STOPPED");
}
, app.LifetimeManager);
var task = app.Start();
var timer = app.SetTimeout(() =>
{
testCli.Input.Enqueue("Adam");
testCli.Input.Enqueue(ConsoleKey.Tab);
testCli.Input.Enqueue(ConsoleKey.Enter);
}, TimeSpan.FromMilliseconds(1));
task.Wait();
appWipedAfterTask = testCli.Buffer.ToString().Trim().Length == 0;
Console.WriteLine("END");
Console.WriteLine(testCli.Buffer.ToString());
Console.WriteLine("END");
Assert.IsTrue(appDrewProperly, "Assert app drew properly");
Assert.IsTrue(appWipedAfterStoppedEvent, "Assert app wiped properly during event");
Assert.IsTrue(appWipedAfterTask, "Assert app wiped properly afer task");
}