def testMatching1(self): dm = DeviceManager() device = DebugLinearMotionDevice() dm.addDevice(device) matched = dm.matchPhysicalDevicesOfType(DebugLinearMotionDevice) self.assertTrue(len(matched) == 1) self.assertTrue(matched[0] == device)
def testMatching2(self): dm = DeviceManager() device1 = DebugLinearMotionDevice() device2 = DebugLinearMotionDevice() dm.addDevice(device1) dm.addDevice(device2) matched = dm.matchPhysicalDevicesOfType(DebugLinearMotionDevice) self.assertTrue(len(matched) == 2)
def testSendCommand(self): DeviceManager().updateConnectedDevices() devices = list(DeviceManager().devices) if len(devices) > 0: devices[0].initializeDevice() _ = DeviceManager().sendCommand("VERSION", deviceIdentifier=0) _ = DeviceManager().sendCommand("GETWAVELENGTH", deviceIdentifier=0) device[0].shutdownDevice()
def testRestartRunLoop(self): dm = DeviceManager() startTime = time.time() expectedMaxEndTime = startTime + 3.0 dm.startMonitoring() dm.stopMonitoring() self.assertTrue(expectedMaxEndTime > time.time()) startTime = time.time() expectedMaxEndTime = startTime + 3.0 dm.startMonitoring() dm.stopMonitoring() self.assertTrue(expectedMaxEndTime > time.time())
def setUp(self): # DeviceManager().devices = [] DeviceManager() del DeviceManager._instance DeviceManager._instance = None NotificationCenter() del NotificationCenter._instance NotificationCenter._instance = None self.lock = RLock() self.notificationsToReceive = [] self.assertEqual(NotificationCenter().observersCount(), 0)
def testNotificationReceivedWhileAddingDevices(self): dm = DeviceManager() nc = NotificationCenter() nc.addObserver(self, self.handle, DeviceManagerNotification.willStartMonitoring) nc.addObserver(self, self.handle, DeviceManagerNotification.didStartMonitoring) nc.addObserver(self, self.handle, DeviceManagerNotification.willStopMonitoring) nc.addObserver(self, self.handle, DeviceManagerNotification.didStopMonitoring) nc.addObserver(self, self.handleStatus, DeviceManagerNotification.status) self.notificationsToReceive = [ DeviceManagerNotification.willStartMonitoring, DeviceManagerNotification.didStartMonitoring, DeviceManagerNotification.willStopMonitoring, DeviceManagerNotification.didStopMonitoring ] dm.startMonitoring() time.sleep(0.5) self.addRemoveManyDevices() time.sleep(0.5) dm.stopMonitoring() self.assertTrue(len(self.notificationsToReceive) == 0) nc.removeObserver(self)
def testMatching4WithSubclass(self): dm = DeviceManager() device1 = DebugLinearMotionDevice() dm.addDevice(device1) device2 = SutterDevice("debug") dm.addDevice(device2) matched = dm.matchPhysicalDevicesOfType(LinearMotionDevice) self.assertTrue(len(matched) == 2) self.assertTrue(device1 in matched) self.assertTrue(device2 in matched) matched = dm.matchPhysicalDevicesOfType(DebugLinearMotionDevice) self.assertTrue(len(matched) == 1) self.assertTrue(device1 in matched) matched = dm.matchPhysicalDevicesOfType(SutterDevice) self.assertTrue(len(matched) == 1) self.assertTrue(device2 in matched)
def testStartRunLoop(self): dm = DeviceManager() dm.startMonitoring() startTime = time.time() expectedMaxEndTime = startTime + 3.0 time.sleep(2.0) # self.assertEqual(len(dm.devices), 1) dm.stopMonitoring() self.assertTrue(expectedMaxEndTime > time.time())
def addRemoveManyDevices(N=1000): dm = DeviceManager() devices = [] for i in range(N): device = DebugLinearMotionDevice() dm.addDevice(device) devices.append(device) for device in devices: dm.removeDevice(device)
def testMatching3WithSerial(self): dm = DeviceManager() device1 = DebugLinearMotionDevice() device2 = DebugLinearMotionDevice() device2.serialNumber = "debug2" dm.addDevice(device1) dm.addDevice(device2) matched = dm.matchPhysicalDevicesOfType(DebugLinearMotionDevice, serialNumber="debug") self.assertTrue(len(matched) == 2) matched = dm.matchPhysicalDevicesOfType(DebugLinearMotionDevice, serialNumber="debu") self.assertTrue(len(matched) == 2) matched = dm.matchPhysicalDevicesOfType(DebugLinearMotionDevice, serialNumber="debug2") self.assertTrue(len(matched) == 1)
def testNotificationReceivedFromAddingDevices(self): dm = DeviceManager() nc = NotificationCenter() dm.startMonitoring() time.sleep(1.0) # let newlyConnected devices be added. nc.addObserver(self, self.handle, DeviceManagerNotification.willAddDevice) nc.addObserver(self, self.handle, DeviceManagerNotification.didAddDevice) nc.addObserver(self, self.handle, DeviceManagerNotification.willRemoveDevice) nc.addObserver(self, self.handle, DeviceManagerNotification.didRemoveDevice) N = 1000 self.notificationsToReceive = [ DeviceManagerNotification.willAddDevice, DeviceManagerNotification.didAddDevice ] * N self.notificationsToReceive.extend([ DeviceManagerNotification.willRemoveDevice, DeviceManagerNotification.didRemoveDevice ] * N) time.sleep(0.5) self.addRemoveManyDevices(N) time.sleep(0.5) with self.lock: self.assertEqual(len(self.notificationsToReceive), 0) nc.removeObserver(self) dm.stopMonitoring()
def testEmpty(self): self.assertEqual(len(DeviceManager().devices), 0)
def testSingleton(self): dm1 = DeviceManager() dm2 = DeviceManager() self.assertEqual(dm1, dm2)
def testStopRunLoopTwice(self): dm = DeviceManager() with self.assertRaises(Exception): dm.stopMonitoring()
def testInstantiate(self): self.assertIsNotNone(DeviceManager())