def test_tree_buildup(self): config = Config("../resources/devices.yaml") source_devices = SourceDevicesMock(config) target_devices = TargetDevices(config) event_tree = EventTree(config, source_devices, target_devices) self.assertIsNotNone( save_fetch(lambda: event_tree.tree["digital"]["EV_KEY"]["103"][ "xbox1"]["driver"])) self.assertEqual( int( save_fetch(lambda: event_tree.tree["digital"]["EV_KEY"]["103"][ "xbox1"]["value"])), -1) self.assertIsNotNone( save_fetch(lambda: event_tree.tree["analog_left"]["EV_KEY"]["103"][ "xbox1"]["driver"])) self.assertIsNotNone( save_fetch(lambda: event_tree.tree["analog_left"]["EV_KEY"]["103"][ "xbox2"]["driver"])) self.assertIsNotNone( save_fetch(lambda: event_tree.tree["analog_left"]["EV_KEY"]["105"][ "exec1"]["driver"])) self.assertIsNotNone( save_fetch(lambda: event_tree.tree["analog_left"]["EV_KEY"]["105"][ "exec1"]["ev_meta"])) self.assertIsNotNone( save_fetch(lambda: event_tree.tree["analog_left"]["EV_KEY"]["105"][ "exec1"]["driver"]))
def test_device_match(self): devices = TargetDevices(Config("../resources/devices.yaml")) self.assertEqual(len(devices.drivers), 5, "5 devices found") self.assertTrue(devices.drivers["xbox1"] is not None) self.assertTrue(devices.drivers["xbox2"] is not None) self.assertTrue(devices.drivers["mouse1"] is not None) self.assertTrue(devices.drivers["keybd1"] is not None)
def _device_match(self, device: evdev.InputDevice): for key in save_fetch(lambda: self.config.inputs, {}): name, name_re, phys, phys_re, rel_pos, vendor, product, exclusive, i_max, i_min, i_deadzone = self.config.get_config_input_params( key) device_match_string = str(self.config.inputs[key]) found = Config.full_match(device, name, name_re, phys, phys_re, vendor, product) if found: if exclusive: try: device.grab() except Exception as e: print(e) pass if save_fetch( lambda: self._matched_devices[device_match_string], False) is True: return False, None accessor_key = name or phys or name_re or phys_re or vendor or product already_processed = save_fetch( lambda: self.matched[accessor_key], 1) if already_processed == rel_pos: self._matched_devices[device_match_string] = True return True, key else: self.matched[accessor_key] = already_processed + 1 return False, None
def test_udev_event_handling(self): config = Config("../resources/devices.yaml") eventcontroller = EventControllerMock(config) listener = UdevListenerMock(eventcontroller) device1 = UdevDeviceMock("Ultimarc_UltraStik", "Ultimarc_Ultra-Stik_Player_1") self.assertTrue(eventcontroller.started) self.assertTrue(eventcontroller.restarted_cnt == 0) listener.trigger_event_usb("remove", device1) self.assertFalse(eventcontroller.started) listener.trigger_event_input("add", device1) self.assertTrue(eventcontroller.started) self.assertTrue(eventcontroller.restarted_cnt > 0)
def run_pid(self): with PIDFile(self.args.pidfile): self.config = Config(self.args.conf) self.evtcl = EventController(self.config) asyncio.get_event_loop().run_forever()
def test_overlay_toml(self): conf = Config("../resources/devices.toml") conf.overlay("../resources/overlay.yaml") self._assert_overlayed_structure(conf)
def test_basic_config_toml(self): conf = Config("../resources/devices.toml") self._assert_basic_structure(conf)
def test_basic_config_json5(self): conf = Config("../resources/devices.json5") self._assert_basic_structure(conf)
def test_basic_template(self): conf = Config("../resources/devices.json5.vtpl") self._assert_basic_structure(conf)
def test_device_parsing(self): self.devices = SourceDevicesMock(Config("../resources/devices.yaml")) asyncio.run(self.assertAll())