Home | History | Annotate | Download | only in cros
      1 #!/usr/bin/python
      2 # Copyright 2017 The Chromium OS Authors. All rights reserved.
      3 # Use of this source code is governed by a BSD-style license that can be
      4 # found in the LICENSE file.
      5 
      6 import unittest
      7 
      8 import power_cycle_usb_util
      9 
     10 
     11 class PowerCycleUsbUtilTest(unittest.TestCase):
     12     """Unittest for the parse functions within power_cycle_usb_util.py."""
     13 
     14     VID = '0001'
     15     PID = '0001'
     16     BUS = 1
     17     DEV = 2
     18 
     19     LSUSB_DEVICE_OUTPUT = 'Bus 001 Device 002:  ID 0001:0001\n'
     20     LSUSB_DEVICE_OUTPUT_NONE = ''
     21     LSUSB_DEVICE_OUTPUT_MULTI = ('Bus 001 Device 002:  ID 0001:0001\n'
     22                                  'Bus 001 Device 002:  ID 0001:0001\n')
     23 
     24     LSUSB_TREE_OUTPUT = \
     25     ('/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 5000M\n'
     26      '    |__ Port 3: Dev 2, If 0, Class=Hub, Driver=hub/4p, 5000M\n'
     27      '/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/11p, 480M\n'
     28      '    |__ Port 2: Dev 52, If 0, Class=Hub, Driver=hub/4p, 480M\n'
     29      '        |__ Port 1: Dev 2, If 0, Class=Human Interface Device,'
     30      'Driver=usbhid, 12M\n'
     31      '        |__ Port 3: Dev 54, If 0, Class=Vendor Specific Class,'
     32      'Driver=udl, 480M\n'
     33      '    |__ Port 3: Dev 3, If 0, Class=Hub, Driver=hub/4p, 480M\n'
     34      '    |__ Port 4: Dev 4, If 0, Class=Wireless, Driver=btusb, 12M\n'
     35      '    |__ Port 4: Dev 4, If 1, Class=Wireless, Driver=btusb, 12M\n')
     36 
     37     def test_get_bus_dev_id(self):
     38         want = (self.BUS, self.DEV)
     39         want_none = (None, None)
     40         want_multi = (None, None)
     41 
     42         bus, dev = power_cycle_usb_util.get_bus_dev_id(
     43             self.LSUSB_DEVICE_OUTPUT, self.VID, self.PID)
     44         self.assertEqual((bus, dev), want)
     45         bus, dev = power_cycle_usb_util.get_bus_dev_id(
     46             self.LSUSB_DEVICE_OUTPUT_NONE, self.VID, self.PID)
     47         self.assertEqual((bus, dev), want_none)
     48         bus, dev = power_cycle_usb_util.get_bus_dev_id(
     49             self.LSUSB_DEVICE_OUTPUT_MULTI, self.VID, self.PID)
     50         self.assertEqual((bus, dev), want_multi)
     51 
     52     def test_get_port_number(self):
     53         want = 2
     54 
     55         port = power_cycle_usb_util.get_port_number(
     56             self.LSUSB_TREE_OUTPUT, self.BUS, self.DEV)
     57         self.assertEqual(port, want)
     58 
     59 
     60 if __name__ == '__main__':
     61   unittest.main()
     62