blob: 148bc048bf947bc63306bfc0d38301078b7e90af [file] [log] [blame]
# Copyright 2019 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file
"""Tests for cfm_helper.py."""
import unittest
import cfm_helper
import get_usb_devices
SPEAKERS = 'speakers'
CAMERAS = 'cameras'
DISPLAY_MIMO = 'display_mimo'
CONTROLLER_MIMO = 'controller_mimo'
DEVICE_TYPES = (SPEAKERS, CAMERAS, DISPLAY_MIMO, CONTROLLER_MIMO)
class TestExtractPeripherals(unittest.TestCase):
"""Test cfm_helper.extract_peripherals()"""
def create_mock_device_getter(self, device_list):
"""Mock a function to take usb_data and return device_list"""
def mock_device_getter(usb_data):
"""Return the specified device_list, ignoring usb_data."""
return device_list
return mock_device_getter
def setUp(self):
"""
Mock the various get_devices functions so that each one returns a
key-value pair.
In extract_peripherals(), the key represents the pid_vid, and the value
represents the device_count.
For these testing purposes, we use the device_type ('cameras', etc.)
as the key, and a number 1-4 as the device_count.
(If we used a device_count of 0 it would be ignored; hence, 1-4.)
"""
self.original_funcs = {}
for i in range(len(DEVICE_TYPES)):
device_type = DEVICE_TYPES[i]
mock = self.create_mock_device_getter({device_type: i + 1})
setattr(cfm_helper.get_usb_devices, 'get_%s' % device_type, mock)
def runTest(self):
"""Verify that all 4 peripheral-types are extracted."""
peripherals = cfm_helper.extract_peripherals_for_cfm(None)
self.assertEqual(len(peripherals), 4)
for i in range(len(DEVICE_TYPES)):
device_type = DEVICE_TYPES[i]
self.assertEqual(peripherals[device_type], i + 1)
def tearDown(self):
"""Restore the original functions, for the sake of other tests."""
for device_type in DEVICE_TYPES:
original_func = getattr(get_usb_devices, 'get_%s' % device_type)
setattr(cfm_helper.get_usb_devices, 'get_%s' % device_type,
original_func)
if __name__ == '__main__':
unittest.main()