public void TestForSensorNodeDisconnectionWhileInUse() { Console.WriteLine("Please ensure that the sensor arduino ('sens') is connected for this test. Press ENTER when ready"); Console.ReadLine(); ArduinoCommsBase sensorArduino = new SensorNodeArduino(mLogger); TestDelegate connectDel = new TestDelegate(delegate() { sensorArduino.StartArduinoComms(); }); Assert.DoesNotThrow(connectDel); Assert.IsTrue(sensorArduino.IsConnected); sensorArduino.ToggleHeartbeat(true, 500, 3); Console.WriteLine(string.Format("Arduino {0} has now been connected. The test will validate behaviour when it is unplugged. Uplug the arduino to continue", sensorArduino.ArduinoID)); System.Threading.ManualResetEvent disconnectEvent = new System.Threading.ManualResetEvent(false); sensorArduino.Disconnected += delegate(ArduinoCommsBase ard) { disconnectEvent.Set(); }; disconnectEvent.WaitOne(); Assert.IsFalse(sensorArduino.IsConnected); Assert.DoesNotThrow(delegate() { sensorArduino.StopArduinoComms(true); }); }