Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def test_state_detection(self):
"""Check that the state detection works as expected.
"""
self.atv.max_volume = 60.
self.assertUpdate([False, False, None, -1, None, None, None, None, None, None],
(constants.STATE_OFF, None, None, None, None, None))
self.assertUpdate([True, False, None, -1, None, None, None, None, None, None],
(constants.STATE_STANDBY, None, None, None, None, None))
# ATV Launcher
self.assertUpdate([True, True, constants.STATE_IDLE, 2, constants.APP_ATV_LAUNCHER, 3, 'hmdi_arc', False, 30, None],
(constants.STATE_IDLE, constants.APP_ATV_LAUNCHER, [constants.APP_ATV_LAUNCHER], 'hmdi_arc', False, 0.5))
# ATV Launcher with custom state detection
self.atv._state_detection_rules = {constants.APP_ATV_LAUNCHER: [{'idle': {'audio_state': 'idle'}}]}
self.assertUpdate([True, True, constants.STATE_PAUSED, 2, constants.APP_ATV_LAUNCHER, 3, 'hmdi_arc', False, 30, None],
(constants.STATE_IDLE, constants.APP_ATV_LAUNCHER, [constants.APP_ATV_LAUNCHER], 'hmdi_arc', False, 0.5))
self.atv._state_detection_rules = {constants.APP_ATV_LAUNCHER: [{'idle': {'INVALID': 'idle'}}]}
self.assertUpdate([True, True, constants.STATE_IDLE, 2, constants.APP_ATV_LAUNCHER, 3, 'hmdi_arc', False, 30, None],
(constants.STATE_IDLE, constants.APP_ATV_LAUNCHER, [constants.APP_ATV_LAUNCHER], 'hmdi_arc', False, 0.5))
self.atv._state_detection_rules = None
GET_PROPERTIES_DICT1 = {'screen_on': False,
'awake': False,
'wake_lock_size': -1,
'current_app': None,
'media_session_state': None,
'running_apps': None}
STATE1 = (constants.STATE_OFF, None, None)
GET_PROPERTIES_OUTPUT2 = "1"
GET_PROPERTIES_DICT2 = {'screen_on': True,
'awake': False,
'wake_lock_size': -1,
'current_app': None,
'media_session_state': None,
'running_apps': None}
STATE2 = (constants.STATE_STANDBY, None, None)
GET_PROPERTIES_OUTPUT3 = """11Wake Locks: size=2
com.amazon.tv.launcher
u0_a2 17243 197 998628 24932 ffffffff 00000000 S com.amazon.device.controllermanager
u0_a2 17374 197 995368 20764 ffffffff 00000000 S com.amazon.device.controllermanager:BluetoothReceiver"""
GET_PROPERTIES_DICT3 = {'screen_on': True,
'awake': True,
'wake_lock_size': 2,
'current_app': 'com.amazon.tv.launcher',
'media_session_state': None,
'running_apps': ['com.amazon.device.controllermanager', 'com.amazon.device.controllermanager:BluetoothReceiver']}
STATE3 = (constants.STATE_IDLE, 'com.amazon.tv.launcher', ['com.amazon.device.controllermanager', 'com.amazon.device.controllermanager:BluetoothReceiver'])
GET_PROPERTIES_OUTPUT3A = GET_PROPERTIES_OUTPUT3[0]
GET_PROPERTIES_OUTPUT3B = GET_PROPERTIES_OUTPUT3[:2]
with patchers.patch_shell(GET_PROPERTIES_OUTPUT3)[self.PATCH_KEY]:
state = self.ftv.update()
self.assertTupleEqual(state, STATE3)
self.ftv._state_detection_rules = STATE_DETECTION_RULES1
state = self.ftv.update()
self.assertEqual(state[0], constants.STATE_OFF)
self.ftv._state_detection_rules = STATE_DETECTION_RULES2
state = self.ftv.update()
self.assertEqual(state[0], constants.STATE_OFF)
self.ftv._state_detection_rules = STATE_DETECTION_RULES3
state = self.ftv.update()
self.assertEqual(state[0], constants.STATE_STANDBY)
self.ftv._state_detection_rules = STATE_DETECTION_RULES4
state = self.ftv.update()
self.assertEqual(state[0], constants.STATE_PAUSED)
self.ftv._state_detection_rules = STATE_DETECTION_RULES5
state = self.ftv.update()
self.assertEqual(state[0], constants.STATE_IDLE)
"HOST", 5555, adb_server_ip="ADB_SERVER_IP", device_class="androidtv"
)
self.aftv = AndroidTVDevice(aftv, "Fake Android TV", {}, True, None, None)
with patchers.patch_shell("")[patch_key]:
self.aftv.update()
assert self.aftv.state == STATE_OFF
with patch("androidtv.androidtv.androidtv_sync.AndroidTVSync.update", side_effect=LockNotAcquiredException):
with patchers.patch_shell("1")[patch_key]:
self.aftv.update()
assert self.aftv.state == STATE_OFF
with patchers.patch_shell("1")[patch_key]:
self.aftv.update()
assert self.aftv.state == STATE_STANDBY
"""
# Get the volume (between 0 and 1)
volume_level = self._volume_level(volume)
# Check if device is unavailable
if screen_on is None:
state = None
# Check if device is off
elif not screen_on or current_app == 'off':
state = constants.STATE_OFF
# Check if screen saver is on
elif not awake:
state = constants.STATE_STANDBY
else:
# Get the running apps
if not running_apps and current_app:
running_apps = [current_app]
# Determine the state using custom rules
state = self._custom_state_detection(current_app=current_app, media_session_state=media_session_state, wake_lock_size=wake_lock_size, audio_state=audio_state)
if state:
return state, current_app, running_apps, audio_output_device, is_volume_muted, volume_level
# ATV Launcher
if current_app in [constants.APP_ATV_LAUNCHER, None]:
state = constants.STATE_IDLE
# BELL Fibe
"""
# Check if device is unavailable
if screen_on is None:
state = None
current_app = None
running_apps = None
# Check if device is off
elif not screen_on:
state = constants.STATE_OFF
current_app = None
running_apps = None
# Check if screen saver is on
elif not awake:
state = constants.STATE_STANDBY
current_app = None
running_apps = None
else:
# Get the running apps
if not running_apps and current_app:
running_apps = [current_app]
# Determine the state using custom rules
state = self._custom_state_detection(current_app=current_app, media_session_state=media_session_state, wake_lock_size=wake_lock_size)
if state:
return state, current_app, running_apps
# Determine the state based on the `current_app`
if current_app in [constants.APP_FIRETV_PACKAGE_LAUNCHER, constants.APP_FIRETV_PACKAGE_SETTINGS, None]:
state = constants.STATE_IDLE