From 7035c6e281332b1688c59877ac78516a0dd4635d Mon Sep 17 00:00:00 2001 From: JCTutorius Date: Fri, 06 Nov 2009 01:05:12 +0000 Subject: Merge branch 'master' of gitorious@git.sugarlabs.org:tutorius/mainline --- (limited to 'tests/enginetests.py') diff --git a/tests/enginetests.py b/tests/enginetests.py new file mode 100644 index 0000000..30d68de --- /dev/null +++ b/tests/enginetests.py @@ -0,0 +1,116 @@ +# Copyright (C) 2009, Tutorius.org +# Copyright (C) 2009, Erick Lavoie +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +""" +Engine Tests + + + +Usage of actions and event filters is tested, but not the concrete actions +and event filters. Those are in their separate test module + +""" + +import unittest + +from sugar.tutorius.tutorial import Tutorial +from sugar.tutorius.engine import TutorialRunner +from sugar.tutorius.filters import EventFilter + +from actiontests import CountAction + +class MockProbeMgr(object): + def __init__(self): + self.action = None + self.event = None + self.cB = None + + def doCB(self): + self.cB(self.event) + + currentActivity = property(fget=lambda s:s, fset=lambda s, v: v) + + def install(self, action, block=False): + self.action = action + + def update(self, action, newaction, block=False): + self.action = newaction + + def uninstall(self, action, block=False): + self.action = None + + def subscribe(self, event, callback): + self.event = event + self.cB = callback + self.event.install_handlers(callback) + return str(event) + + def unsubscribe(self, address): + self.event = None + +class MockEvent(EventFilter): + pass + + + +class TutorialRunnerTest(unittest.TestCase): + """ + This class needs to test the TutorialRunner + """ + def setUp(self): + self.pM = MockProbeMgr() + + + def tearDown(self): + self.pM = None + + # Basic interface cases + def testOneStateTutorial(self): + tutorial = Tutorial("TutorialRunner") + state_name = tutorial.add_state() + tutorial.update_transition(Tutorial.INITIAL_TRANSITION_NAME, + None, state_name) + event = MockEvent() + tutorial.add_transition(state_name, (event, Tutorial.END)) + + runner = TutorialRunner(tutorial, self.pM) + runner.start() + + assert runner._state == state_name, "Current state is: %s"%runner._state + assert self.pM.action == None + assert self.pM.event == event + + event.do_callback() + assert runner._state == Tutorial.END, "Current state is: %s"%runner._state + assert self.pM.action == None, "Current action is %s"%str(self.pM.action) + assert self.pM.event == None, "Current event is %s"%str(self.pM.event) + + + + # Limit cases + def testEmptyTutorial(self): + tutorial = Tutorial("TutorialRunner") + runner = TutorialRunner(tutorial, self.pM) + runner.start() + + assert runner._state == Tutorial.END, "Current state is: %s"%runner._state + assert self.pM.action == None + assert self.pM.event == None + + # Error cases + +if __name__ == "__main__": + unittest.main() -- cgit v0.9.1