blob: f37989a3c2a81a058052f6a37e0e766fbc55fffb [file] [log] [blame]
#!/usr/bin/env python
# Copyright (c) 2013 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.
import common
import request_response
import logging
import mox
import unittest
import at_transceiver
import global_state
import modem_configuration
import task_loop
class RequestResponseTestCase(unittest.TestCase):
""" Test fixture for RequestResponse class. """
def setUp(self):
self._mox = mox.Mox()
# Prepare modem configuration to suit our needs.
self._modem_conf = modem_configuration.ModemConfiguration()
self._modem_conf.base_wm_request_response_map = {
'AT1': 'AT1RESPONSE',
'AT2': ('AT2OK', 'AT2ERROR'),
'AT3': 'AT3RESPONSE'
}
self._modem_conf.plugin_wm_request_response_map = {
'AT3': 'AT3RESPONSE_OVERRIDEN',
'AT4': 'AT4RESPONSE',
'AT5': ['AT5RESPONSE1', 'AT5RESPONSE2']
}
self._task_loop = self._mox.CreateMock(task_loop.TaskLoop)
self._transceiver = self._mox.CreateMock(at_transceiver.ATTransceiver)
self._machine = request_response.RequestResponse(
global_state.GlobalState(),
self._transceiver,
self._modem_conf)
# Mock out the task_loop
self._machine._task_loop = self._task_loop
def test_enabled_responses(self):
"""
Responses for different configurations when machine is enabled.
"""
self._machine.enable_machine()
self._task_loop.post_task_after_delay(mox.IgnoreArg(),
0,
'wm_response_text_only',
'AT1RESPONSE')
self._task_loop.post_task_after_delay(mox.IgnoreArg(),
0,
'wm_response_text_only',
'AT2OK')
self._task_loop.post_task_after_delay(mox.IgnoreArg(),
0,
'wm_response_text_only',
'AT3RESPONSE_OVERRIDEN')
self._task_loop.post_task_after_delay(mox.IgnoreArg(),
0,
'wm_response_text_only',
'AT4RESPONSE')
self._task_loop.post_task_after_delay(mox.IgnoreArg(),
0,
'wm_response_text_only',
'AT5RESPONSE1')
self._task_loop.post_task_after_delay(mox.IgnoreArg(),
0,
'wm_response_text_only',
'AT5RESPONSE2')
self._task_loop.post_task_after_delay(mox.IgnoreArg(),
0,
'wm_response_ok')
self._task_loop.post_task_after_delay(mox.IgnoreArg(),
0,
'wm_response_error')
self._mox.ReplayAll()
self._machine.act_on('AT1')
self._machine.act_on('AT2')
self._machine.act_on('AT3')
self._machine.act_on('AT4')
self._machine.act_on('AT5')
self._machine.act_on('AT6')
self._mox.VerifyAll()
def test_disabled_responses(self):
"""
Responses for different configurations when machine is enabled.
"""
self._machine.disable_machine()
self._task_loop.post_task_after_delay(mox.IgnoreArg(),
0,
'wm_response_error')
self._task_loop.post_task_after_delay(mox.IgnoreArg(),
0,
'wm_response_text_only',
'AT2ERROR')
self._task_loop.post_task_after_delay(mox.IgnoreArg(),
0,
'wm_response_error')
self._task_loop.post_task_after_delay(mox.IgnoreArg(),
0,
'wm_response_error')
self._task_loop.post_task_after_delay(mox.IgnoreArg(),
0,
'wm_response_error')
self._task_loop.post_task_after_delay(mox.IgnoreArg(),
0,
'wm_response_error')
self._mox.ReplayAll()
self._machine.act_on('AT1')
self._machine.act_on('AT2')
self._machine.act_on('AT3')
self._machine.act_on('AT4')
self._machine.act_on('AT5')
self._machine.act_on('AT6')
self._mox.VerifyAll()
if __name__ == '__main__':
logging.basicConfig(level=logging.DEBUG)
unittest.main()