chromium/tools/usb_gadget/mouse_gadget_test.py

#!/usr/bin/env python
# Copyright 2014 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import unittest

import mock

import hid_constants
import mouse_gadget
import usb_constants


class MouseGadgetTest(unittest.TestCase):

  def test_click(self):
    g = mouse_gadget.MouseGadget()
    chip = mock.Mock()
    g.Connected(chip, usb_constants.Speed.FULL)
    g.ButtonDown(hid_constants.Mouse.BUTTON_1)
    self.assertEqual(g.ControlRead(0xA1, 1, 0x0100, 0, 8), '\x01\x00\x00')
    g.ButtonUp(hid_constants.Mouse.BUTTON_1)
    chip.SendPacket.assert_has_calls([
        mock.call(0x81, '\x01\x00\x00'),
        mock.call(0x81, '\x00\x00\x00'),
    ])

  def test_move(self):
    g = mouse_gadget.MouseGadget()
    chip = mock.Mock()
    g.Connected(chip, usb_constants.Speed.FULL)
    g.Move(-1, 1)
    chip.SendPacket.assert_called(0x81, '\x00\xFF\x01')

  def test_drag(self):
    g = mouse_gadget.MouseGadget()
    chip = mock.Mock()
    g.Connected(chip, usb_constants.Speed.FULL)
    g.ButtonDown(hid_constants.Mouse.BUTTON_1)
    g.Move(5, 5)
    g.ButtonUp(hid_constants.Mouse.BUTTON_1)
    chip.SendPacket.assert_has_calls([
        mock.call(0x81, '\x01\x00\x00'),
        mock.call(0x81, '\x01\x05\x05'),
        mock.call(0x81, '\x00\x00\x00'),
    ])

if __name__ == '__main__':
  unittest.main()