public void TestSwitchOnCoolingWhilstReceivingData()
        {
            // Create an instance of a faked external hardware device
            FakeExternalDevice device = new FakeExternalDevice();
            device.Open();

            DeviceManager manager = new DeviceManager(new[] { device });

            // Force a data received from the device.
            // Locks external device lock then try to lock on syncObject in manager.
            device.TriggerDataReceived();

            // This should lock on Manager syncObject, try to lock on the external device lock.
            manager.EnableCooling();

            // Either the TriggerDataReceived call should fail to lock on the managers syncObject
            // or EnableCooling should fail to lock on the external Device's hardware lock as the other thread should
            // already have acquired the lock.
        }