diff --git a/Tests/MatterControl.AutomationTests/MatterControl.AutomationTests.csproj b/Tests/MatterControl.AutomationTests/MatterControl.AutomationTests.csproj index 665b0ded5..b9876b320 100644 --- a/Tests/MatterControl.AutomationTests/MatterControl.AutomationTests.csproj +++ b/Tests/MatterControl.AutomationTests/MatterControl.AutomationTests.csproj @@ -59,6 +59,7 @@ + diff --git a/Tests/MatterControl.AutomationTests/PrinterConnectionTests.cs b/Tests/MatterControl.AutomationTests/PrinterConnectionTests.cs new file mode 100644 index 000000000..69dc00dae --- /dev/null +++ b/Tests/MatterControl.AutomationTests/PrinterConnectionTests.cs @@ -0,0 +1,44 @@ +using System; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; +using MatterHackers.Agg.UI; +using MatterHackers.GuiAutomation; +using MatterHackers.MatterControl.PrinterCommunication; +using MatterHackers.MatterControl.PrinterCommunication.Io; +using MatterHackers.MatterControl.SlicerConfiguration; +using MatterHackers.PrinterEmulator; +using MatterHackers.VectorMath; +using NUnit.Framework; + +namespace MatterHackers.MatterControl.Tests.Automation +{ + [TestFixture, Category("MatterControl.UI.Automation"), RunInApplicationDomain, Apartment(ApartmentState.STA)] + public class PrinterConnectionTests + { + [Test] + public async Task PrinterDisconnectedOnTabClose() + { + await MatterControlUtilities.RunTest((testRunner) => + { + // Create and connect to Airwolf via emulator port + using (var emulator = testRunner.LaunchAndConnectToPrinterEmulator()) + { + var printer = testRunner.FirstPrinter(); + + // Ensure connected + Assert.AreEqual(CommunicationStates.Connected, printer.Connection.CommunicationState, "Printer should be Connected after LaunchAndConnectToPrinterEmulator"); + + // Close Printer + testRunner.CloseFirstPrinterTab(); + + // Ensure disconnected + testRunner.WaitFor(() => printer.Connection.CommunicationState == PrinterCommunication.CommunicationStates.Disconnected); + Assert.AreEqual(CommunicationStates.Disconnected, printer.Connection.CommunicationState, "Printer should be Disconnected after closing printer tab"); + } + + return Task.CompletedTask; + }, maxTimeToRun: 120); + } + } +}