Ejemplo n.º 1
0
    def testCallWriteSuccess(self, thread, iokit, cf, GetDeviceIntProperty):  # pylint: disable=invalid-name
        init_mock_iokit(iokit)
        init_mock_cf(cf)
        init_mock_get_int_property(GetDeviceIntProperty)

        device = macos.MacOsHidDevice('fakepath')

        # Write 64 bytes to device
        data = bytearray(range(64))

        # Write to device
        device.Write(data)

        # Validate that write calls into IOKit
        set_report_call_args = iokit.IOHIDDeviceSetReport.call_args
        self.assertIsNotNone(set_report_call_args)

        set_report_call_pos_args = iokit.IOHIDDeviceSetReport.call_args[0]
        self.assertEquals(len(set_report_call_pos_args), 5)
        self.assertEquals(set_report_call_pos_args[0], 'handle')
        self.assertEquals(set_report_call_pos_args[1], 1)
        self.assertEquals(set_report_call_pos_args[2], 0)
        self.assertEquals(set_report_call_pos_args[4], 64)

        report_buffer = set_report_call_pos_args[3]
        self.assertEqual(len(report_buffer), 64)
        self.assertEqual(
            bytearray(report_buffer), data, 'Data sent to '
            'IOHIDDeviceSetReport should match data sent to the '
            'device')
Ejemplo n.º 2
0
    def testInitHidDevice(self, thread, iokit, cf, GetDeviceIntProperty):  # pylint: disable=invalid-name
        init_mock_iokit(iokit)
        init_mock_cf(cf)
        init_mock_get_int_property(GetDeviceIntProperty)

        device = macos.MacOsHidDevice('fakepath')

        self.assertEquals(64, device.GetInReportDataLength())
        self.assertEquals(64, device.GetOutReportDataLength())
Ejemplo n.º 3
0
    def testCallWriteFailure(self, thread, iokit, cf, GetDeviceIntProperty):  # pylint: disable=invalid-name
        init_mock_iokit(iokit)
        init_mock_cf(cf)
        init_mock_get_int_property(GetDeviceIntProperty)

        # Make set report call return failure (non-zero)
        iokit.IOHIDDeviceSetReport.return_value = -1

        device = macos.MacOsHidDevice('fakepath')

        # Write 64 bytes to device
        data = bytearray(range(64))

        # Write should throw an OsHidError exception
        with self.assertRaises(errors.OsHidError):
            device.Write(data)
Ejemplo n.º 4
0
    def testCallReadSuccess(self, thread, iokit, cf, GetDeviceIntProperty):  # pylint: disable=invalid-name
        init_mock_iokit(iokit)
        init_mock_cf(cf)
        init_mock_get_int_property(GetDeviceIntProperty)

        device = macos.MacOsHidDevice('fakepath')

        # Call callback for IN report
        report = (ctypes.c_uint8 * 64)()
        report[:] = range(64)[:]
        q = device.read_queue
        macos.HidReadCallback(q, None, None, None, 0, report, 64)

        # Device read should return the callback data
        read_result = device.Read()
        self.assertEquals(
            read_result, list(range(64)), 'Read data should match '
            'data passed into the callback')