public void TestWaitTimeout(int maxHeartbeatIntervalMilliseconds, int timeoutMilliseconds) { var memory = new PLCMemory(); TimeSpan?maxHeartbeatInterval = null; TimeSpan?timeout = null; if (maxHeartbeatIntervalMilliseconds > 0) { maxHeartbeatInterval = TimeSpan.FromMilliseconds(maxHeartbeatIntervalMilliseconds); } if (timeoutMilliseconds > 0) { timeout = TimeSpan.FromMilliseconds(timeoutMilliseconds); } var controller = new PLCController(memory, maxHeartbeatInterval); if (maxHeartbeatInterval.HasValue) { Assert.Equal(false, controller.IsConnected); if (timeout.HasValue) { Assert.Throws <TimeoutException>(() => { controller.WaitUntilConnected(timeout); }); } } else { Assert.Equal(true, controller.IsConnected); controller.WaitUntilConnected(timeout); } Assert.Throws <TimeoutException>(() => { controller.WaitFor("someSignal", true, timeout); }); Assert.Throws <TimeoutException>(() => { controller.WaitUntil("someSignal", true, timeout); }); }