15d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)# Copyright 2014 The Chromium Authors. All rights reserved. 25d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)# Use of this source code is governed by a BSD-style license that can be 35d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)# found in the LICENSE file. 45d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 55d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)import unittest 65d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 75d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)from telemetry.core.platform.power_monitor import power_monitor_controller 85d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)import telemetry.core.platform.power_monitor as power_monitor 95d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)class PowerMonitorControllerTest(unittest.TestCase): 125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) def testComposition(self): 135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) class P1(power_monitor.PowerMonitor): 15c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch def StartMonitoringPower(self, browser): 165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) raise NotImplementedError() 17c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch def StopMonitoringPower(self): 185d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) raise NotImplementedError() 195d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) class P2(power_monitor.PowerMonitor): 215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) def __init__(self, value): 225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) super(P2, self).__init__() 235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) self._value = value 24c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch def CanMonitorPower(self): 255d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return True 26c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch def StartMonitoringPower(self, browser): 275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) pass 28c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch def StopMonitoringPower(self): 295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return self._value 305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) controller = power_monitor_controller.PowerMonitorController( 325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) [P1(), P2(1), P2(2)]) 33c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.assertEqual(controller.CanMonitorPower(), True) 34c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch controller.StartMonitoringPower(None) 35c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch self.assertEqual(controller.StopMonitoringPower(), 1) 36