def process_usb_operation(self, usb_operation):
     transmitter = TransmitterIndex.find_matching(usb_operation.usb_device)
     if transmitter:
         if usb_operation.operation is Operation.ADD:
             self.start_transmitter_application(transmitter)
         elif usb_operation.operation is Operation.REMOVE:
             self.stop_transmitter_application(transmitter)
    def test_filter6(self):
        """Filter large Cache against many devices yields many matches"""
        self.cache.build(self.cache_test_directory_many_without_broken)

        devices = [FakeUsbDevice(i+1, i+1, i+1, i+1) for i in range(25)]
        bus = FakeUsbBus(devices)
        matching = TransmitterIndex.filter(bus, self.cache)

        ids = [x.usb_device.idVendor for x in matching]
        self.assertEqual(
            set(ids),
            set([i+1 for i in range(9)])
        )
    def test_filter1(self):
        """Filter empty Cache against many devices yields no matches"""
        self.cache.build(self.cache_test_directory_none)

        devices = [FakeUsbDevice(i+1, i+1, i+1, i+1) for i in range(0, 25)]
        bus = FakeUsbBus(devices)

        matching = TransmitterIndex.filter(bus, self.cache)

        ids = [x.idVendor for x in matching]
        self.assertEqual(
            set(ids),
            set()
        )
    def test_filter2(self):
        """Filter non-empty Cache against no devices yields no matches"""
        self.cache.build(self.cache_test_directory_few_without_broken)

        devices = [
        ]
        bus = FakeUsbBus(devices)

        matching = TransmitterIndex.filter(bus, self.cache)

        ids = [x.idVendor for x in matching]
        self.assertEqual(
            set(ids),
            set()
        )
    def test_filter4(self):
        """Filter non-empty Cache against some devices yields one match"""
        self.cache.build(self.cache_test_directory_few_without_broken)

        devices = [
            FakeUsbDevice(1, 1, 1, 1),
            FakeUsbDevice(4, 4, 4, 4)
        ]
        bus = FakeUsbBus(devices)

        matching = TransmitterIndex.filter(bus, self.cache)

        ids = [x.usb_device.idVendor for x in matching]
        self.assertEqual(
            set(ids),
            {1, 4}
        )
    def test_filter3(self):
        """Filter non-empty cache against some devices yields no matches"""
        self.cache.build(self.cache_test_directory_few_without_broken)

        devices = [
            FakeUsbDevice(15, 16, 2012, 4021),
            FakeUsbDevice(12, 19, 20123, 19421)
        ]
        bus = FakeUsbBus(devices)

        matching = TransmitterIndex.filter(bus, self.cache)

        ids = [x.idVendor for x in matching]
        self.assertEqual(
            set(ids),
            set()
        )