
- moved existing unit tests in synergy/tests/unit - added new unit test: synergy/tests/unit/test_serializer.py Change-Id: I5405570dc3cd11373d02eecf6d9c8181fb083f48
100 lines
2.9 KiB
Python
100 lines
2.9 KiB
Python
# coding: utf-8
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
|
# not use this file except in compliance with the License. You may obtain
|
|
# a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
# License for the specific language governing permissions and limitations
|
|
# under the License.
|
|
"""
|
|
Tests a simple implementation of the Manager class.
|
|
|
|
"""
|
|
|
|
from synergy.common.manager import Manager
|
|
from synergy.tests import base
|
|
|
|
|
|
class SimpleManager(Manager):
|
|
"""Simple implementation of the Manager class.
|
|
|
|
This class maintains an integer counter.
|
|
The manager task is to increment the counter by one.
|
|
Only one event is possible: increment the counter by 10.
|
|
The counter is set to 0 on setup, not on init.
|
|
"""
|
|
|
|
def __init__(self, name):
|
|
super(SimpleManager, self).__init__(name)
|
|
self._counter = None
|
|
|
|
def _reset_counter(self):
|
|
self._counter = None
|
|
|
|
def execute(self, command, *args, **kargs):
|
|
if command == "RESET":
|
|
self._reset_counter()
|
|
|
|
def task(self):
|
|
self._counter += 1
|
|
|
|
def doOnEvent(self, event_type, *args, **kargs):
|
|
if event_type == "JUMP10":
|
|
self._counter += 10
|
|
|
|
def setup(self):
|
|
self._counter = 0
|
|
|
|
def destroy(self):
|
|
self._counter = None
|
|
|
|
|
|
class TestManagerImplementation(base.TestCase):
|
|
|
|
def setUp(self):
|
|
super(TestManagerImplementation, self).setUp()
|
|
self.manager = SimpleManager(name="simple_manager")
|
|
# We set the manager list to be the manager itself for the sake of
|
|
# simplicity.
|
|
self.manager.managers = {"simple_manager": self.manager}
|
|
|
|
def test_execute(self):
|
|
self.manager.setup()
|
|
self.manager.execute("RESET")
|
|
self.assertIsNone(self.manager._counter)
|
|
|
|
def test_notify(self):
|
|
self.manager.setup()
|
|
self.manager.notify(event_type="JUMP10", manager_name="simple_manager")
|
|
self.assertEqual(10, self.manager._counter)
|
|
|
|
def test_setup(self):
|
|
self.assertIsNone(self.manager._counter)
|
|
self.manager.setup()
|
|
self.assertEqual(0, self.manager._counter)
|
|
|
|
def test_destroy(self):
|
|
self.manager.setup()
|
|
self.manager.destroy()
|
|
self.assertIsNone(self.manager._counter)
|
|
|
|
def test_do_on_event(self):
|
|
self.manager.setup()
|
|
self.manager.doOnEvent(event_type="JUMP10")
|
|
self.assertEqual(10, self.manager._counter)
|
|
|
|
def test_run_stop(self):
|
|
self.manager.setup()
|
|
self.manager.rate = 1.0 / 60 / 1000 # to sleep only 1 ms and not 1 min
|
|
|
|
self.manager.start()
|
|
self.assertEqual(True, self.manager.isAlive())
|
|
|
|
self.manager.stop()
|
|
self.assertEqual(False, self.manager.isAlive())
|