def test_bad_intervals(self): with self.assertRaisesRegexp(ValueError, 'Full speed'): hid_gadget.HidGadget(report_desc, features={}, interval_ms=50000, vendor_id=0, product_id=0) with self.assertRaisesRegexp(ValueError, 'High speed'): hid_gadget.HidGadget(report_desc, features={}, interval_ms=5000, vendor_id=0, product_id=0)
def test_set_bad_report(self): feature = TestFeature() g = hid_gadget.HidGadget(report_desc, features={1: feature}, vendor_id=0, product_id=0) self.assertIsNone(g.ControlWrite(0x21, 0x09, 0x0102, 0, 'Hello!'))
def test_get_report_descriptor(self): g = hid_gadget.HidGadget(report_desc=report_desc, features={}, vendor_id=0, product_id=0) desc = g.ControlRead(0x81, 6, 0x2200, 0, 63) self.assertEquals(desc, report_desc)
def test_get_bad_report(self): feature = TestFeature() g = hid_gadget.HidGadget(report_desc, features={1: feature}, vendor_id=0, product_id=0) self.assertIsNone(g.ControlRead(0xA1, 1, 0x0102, 0, 8))
def test_get_string_descriptor(self): g = hid_gadget.HidGadget(report_desc=report_desc, features={}, vendor_id=0, product_id=0) g.AddStringDescriptor(2, 'HID Gadget') desc = g.ControlRead(0x80, 6, 0x0302, 0x0409, 255) self.assertEquals(desc, '\x16\x03H\0I\0D\0 \0G\0a\0d\0g\0e\0t\0')
def test_set_feature_report(self): feature = TestFeature() g = hid_gadget.HidGadget(report_desc, features={1: feature}, vendor_id=0, product_id=0) self.assertTrue(g.ControlWrite(0x21, 0x09, 0x0301, 0, 'Hello!')) self.assertEquals(feature.feature_report, 'Hello!')
def test_get_feature_report(self): feature = TestFeature() g = hid_gadget.HidGadget(report_desc, features={1: feature}, vendor_id=0, product_id=0) report = g.ControlRead(0xA1, 1, 0x0301, 0, 8) self.assertEquals(report, 'Feature ')
def test_set_idle(self): g = hid_gadget.HidGadget(report_desc=report_desc, features={}, vendor_id=0, product_id=0) chip = mock.Mock() g.Connected(chip, usb_constants.Speed.HIGH) self.assertTrue(g.ControlWrite(0x21, 0x0A, 0, 0, ''))
def test_class_wrong_target(self): g = hid_gadget.HidGadget(report_desc=report_desc, features={}, vendor_id=0, product_id=0) self.assertIsNone(g.ControlRead(0xA0, 0, 0, 0, 0)) # Device self.assertIsNone(g.ControlRead(0xA1, 0, 0, 1, 0)) # Interface 1 self.assertIsNone(g.ControlWrite(0x20, 0, 0, 0, '')) # Device self.assertIsNone(g.ControlWrite(0x21, 0, 0, 1, '')) # Interface 1
def test_send_report_zero(self): g = hid_gadget.HidGadget(report_desc=report_desc, features={}, vendor_id=0, product_id=0) chip = mock.Mock() g.Connected(chip, usb_constants.Speed.HIGH) g.SendReport(0, 'Hello world!') chip.SendPacket.assert_called_once_with(0x81, 'Hello world!')
def test_set_bad_report(self): feature = TestFeature() g = hid_gadget.HidGadget(report_desc, features={1: feature}, vendor_id=0, product_id=0) chip = mock.Mock() g.Connected(chip, usb_constants.Speed.HIGH) self.assertIsNone(g.ControlWrite(0x21, 0x09, 0x0102, 0, 'Hello!'))
def test_get_report_descriptor(self): g = hid_gadget.HidGadget(report_desc=report_desc, features={}, vendor_id=0, product_id=0) chip = mock.Mock() g.Connected(chip, usb_constants.Speed.HIGH) desc = g.ControlRead(0x81, 6, 0x2200, 0, 63) self.assertEquals(desc, report_desc)
def test_receive_bad_interrupt(self): feature = TestFeature() g = hid_gadget.HidGadget(report_desc, features={1: feature}, vendor_id=0, product_id=0) chip = mock.Mock() g.Connected(chip, usb_constants.Speed.HIGH) g.ReceivePacket(0x01, '\x00Hello!') chip.HaltEndpoint.assert_called_once_with(0x01)
def test_get_feature_report(self): feature = TestFeature() g = hid_gadget.HidGadget(report_desc, features={1: feature}, vendor_id=0, product_id=0) chip = mock.Mock() g.Connected(chip, usb_constants.Speed.HIGH) report = g.ControlRead(0xA1, 1, 0x0301, 0, 8) self.assertEquals(report, 'Feature ')
def test_set_output_report(self): feature = TestFeature() g = hid_gadget.HidGadget(report_desc, features={1: feature}, vendor_id=0, product_id=0) chip = mock.Mock() g.Connected(chip, usb_constants.Speed.HIGH) self.assertTrue(g.ControlWrite(0x21, 0x09, 0x0201, 0, 'Hello!')) self.assertEquals(feature.output_report, 'Hello!')
def test_class_wrong_target(self): g = hid_gadget.HidGadget(report_desc=report_desc, features={}, vendor_id=0, product_id=0) chip = mock.Mock() g.Connected(chip, usb_constants.Speed.HIGH) self.assertIsNone(g.ControlRead(0xA0, 0, 0, 0, 0)) # Device self.assertIsNone(g.ControlRead(0xA1, 0, 0, 1, 0)) # Interface 1 self.assertIsNone(g.ControlWrite(0x20, 0, 0, 0, '')) # Device self.assertIsNone(g.ControlWrite(0x21, 0, 0, 1, '')) # Interface 1
def test_receive_interrupt_report_zero(self): feature = TestFeature() g = hid_gadget.HidGadget(report_desc, features={0: feature}, vendor_id=0, product_id=0) chip = mock.Mock() g.Connected(chip, usb_constants.Speed.HIGH) g.ReceivePacket(0x01, 'Hello!') self.assertFalse(chip.HaltEndpoint.called) self.assertEquals(feature.output_report, 'Hello!')
def test_send_report(self): feature = TestFeature() g = hid_gadget.HidGadget(report_desc, features={1: feature}, vendor_id=0, product_id=0) chip = mock.Mock() g.Connected(chip, usb_constants.Speed.HIGH) feature.SendReport('Hello world!') chip.SendPacket.assert_called_once_with(0x81, '\x01Hello world!') g.Disconnected()
def test_send_multiple_reports(self): g = hid_gadget.HidGadget(report_desc=report_desc, features={}, vendor_id=0, product_id=0) chip = mock.Mock() g.Connected(chip, usb_constants.Speed.HIGH) g.SendReport(1, 'Hello!') g.SendReport(2, 'World!') chip.SendPacket.assert_has_calls([ mock.call(0x81, '\x01Hello!'), mock.call(0x81, '\x02World!'), ])
def test_set_idle(self): g = hid_gadget.HidGadget(report_desc=report_desc, features={}, vendor_id=0, product_id=0) self.assertTrue(g.ControlWrite(0x21, 0x0A, 0, 0, ''))