1fa2ddb8bae799e3c97ecd15f8e4f9c13136b10abDavid Rochberg# Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
2fa2ddb8bae799e3c97ecd15f8e4f9c13136b10abDavid Rochberg# Use of this source code is governed by a BSD-style license that can be
3fa2ddb8bae799e3c97ecd15f8e4f9c13136b10abDavid Rochberg# found in the LICENSE file.
4fa2ddb8bae799e3c97ecd15f8e4f9c13136b10abDavid Rochberg
5d55c96d6bef22b7fc1d815ab83caec4935ba76f2Byron Kubertimport cellular_system_error
6fa2ddb8bae799e3c97ecd15f8e4f9c13136b10abDavid Rochberg
7fa2ddb8bae799e3c97ecd15f8e4f9c13136b10abDavid Rochberg
8fa2ddb8bae799e3c97ecd15f8e4f9c13136b10abDavid Rochbergclass AirStateVerifierPermissive(object):
9a31bfb233915b16aa9cb0f85cc41b3926055dd64Ben Chan    """An abstraction for verifying the air-side cellular state.
10a31bfb233915b16aa9cb0f85cc41b3926055dd64Ben Chan
11a31bfb233915b16aa9cb0f85cc41b3926055dd64Ben Chan    This version is for commercial networks where we can't verify
12a31bfb233915b16aa9cb0f85cc41b3926055dd64Ben Chan    anything, so it's a no-op."""
13a31bfb233915b16aa9cb0f85cc41b3926055dd64Ben Chan    def AssertDataStatusIn(self, states):
14a31bfb233915b16aa9cb0f85cc41b3926055dd64Ben Chan        """Assert that the device's status is in states.
15a31bfb233915b16aa9cb0f85cc41b3926055dd64Ben Chan        Arguments:
16a31bfb233915b16aa9cb0f85cc41b3926055dd64Ben Chan            states:  Collection of states
17a31bfb233915b16aa9cb0f85cc41b3926055dd64Ben Chan        Raises:
18a31bfb233915b16aa9cb0f85cc41b3926055dd64Ben Chan            Error on failure.
19a31bfb233915b16aa9cb0f85cc41b3926055dd64Ben Chan        """
20a31bfb233915b16aa9cb0f85cc41b3926055dd64Ben Chan        # This base class is for commercial networks.  It can't verify, so
21a31bfb233915b16aa9cb0f85cc41b3926055dd64Ben Chan        # it doesn't
22a31bfb233915b16aa9cb0f85cc41b3926055dd64Ben Chan        pass
23fa2ddb8bae799e3c97ecd15f8e4f9c13136b10abDavid Rochberg
24a31bfb233915b16aa9cb0f85cc41b3926055dd64Ben Chan    def IsDataStatusIn(self, expected):
25a31bfb233915b16aa9cb0f85cc41b3926055dd64Ben Chan        return True
2665a34fc4e3b8bddfe934a317091587196daa6e07David Rochberg
27fa2ddb8bae799e3c97ecd15f8e4f9c13136b10abDavid Rochberg
28fa2ddb8bae799e3c97ecd15f8e4f9c13136b10abDavid Rochbergclass AirStateVerifierBasestation(object):
29a31bfb233915b16aa9cb0f85cc41b3926055dd64Ben Chan    """An abstraction for verifying the air-side cellular state.
30a31bfb233915b16aa9cb0f85cc41b3926055dd64Ben Chan
31a31bfb233915b16aa9cb0f85cc41b3926055dd64Ben Chan    This version checks with the base station emulator.
32a31bfb233915b16aa9cb0f85cc41b3926055dd64Ben Chan    """
33a31bfb233915b16aa9cb0f85cc41b3926055dd64Ben Chan    def __init__(self, base_station):
34a31bfb233915b16aa9cb0f85cc41b3926055dd64Ben Chan        self.base_station = base_station
35a31bfb233915b16aa9cb0f85cc41b3926055dd64Ben Chan
36a31bfb233915b16aa9cb0f85cc41b3926055dd64Ben Chan    def IsDataStatusIn(self, expected):
37a31bfb233915b16aa9cb0f85cc41b3926055dd64Ben Chan        actual = self.base_station.GetUeDataStatus()
38a31bfb233915b16aa9cb0f85cc41b3926055dd64Ben Chan        return actual in expected
39a31bfb233915b16aa9cb0f85cc41b3926055dd64Ben Chan
40a31bfb233915b16aa9cb0f85cc41b3926055dd64Ben Chan    def AssertDataStatusIn(self, expected):
41a31bfb233915b16aa9cb0f85cc41b3926055dd64Ben Chan        actual = self.base_station.GetUeDataStatus()
42a31bfb233915b16aa9cb0f85cc41b3926055dd64Ben Chan        if actual not in expected:
43d55c96d6bef22b7fc1d815ab83caec4935ba76f2Byron Kubert            raise cellular_system_error.BadState(
44d55c96d6bef22b7fc1d815ab83caec4935ba76f2Byron Kubert                'expected UE in status %s, got %s' % (expected, actual))
45