Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVincent Vinet <vince.vinet@gmail.com>2009-03-25 18:35:17 (GMT)
committer Vincent Vinet <vince.vinet@gmail.com>2009-03-31 14:02:56 (GMT)
commit6d5c55191f504357760267849c2524b3d8d64711 (patch)
tree6ad5e6a1d2d4ed05148450b98787cb8d32cda76a
parent18871f0d1b5eef4c6c3621e50a651f8760756ab6 (diff)
Split action tests into own file, and add some testing
-rw-r--r--src/sugar/tutorius/tests/actiontests.py83
-rw-r--r--src/sugar/tutorius/tests/coretests.py60
-rw-r--r--src/sugar/tutorius/tests/linear_creatortests.py16
-rwxr-xr-xsrc/sugar/tutorius/tests/run-tests.py4
4 files changed, 102 insertions, 61 deletions
diff --git a/src/sugar/tutorius/tests/actiontests.py b/src/sugar/tutorius/tests/actiontests.py
index 2a60a65..7c508a8 100644
--- a/src/sugar/tutorius/tests/actiontests.py
+++ b/src/sugar/tutorius/tests/actiontests.py
@@ -1,4 +1,6 @@
# Copyright (C) 2009, Tutorius.org
+# Copyright (C) 2009, Michael Janelle-Montcalm <michael.jmontcalm@gmail.com>
+# Copyright (C) 2009, Vincent Vinet <vince.vinet@gmail.com>
#
# 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
@@ -20,7 +22,83 @@ The behavior of the actions must be tested here.
"""
import unittest
-from sugar.tutorius.actions import *
+import gtk
+
+from sugar.tutorius.actions import Action, OnceWrapper, DisableWidgetAction
+from sugar.tutorius.services import ObjectStore
+
+class CountAction(Action):
+ """
+ This action counts how many times it's do and undo methods get called
+ """
+ def __init__(self):
+ self.do_count = 0
+ self.undo_count = 0
+
+ def do(self):
+ self.do_count += 1
+
+ def undo(self):
+ self.undo_count += 1
+
+
+class BaseActionTests(unittest.TestCase):
+ def test_do_unimplemented(self):
+ act = Action()
+ try:
+ act.do()
+ assert False, "do() should trigger a NotImplemented"
+ except NotImplementedError:
+ assert True, "do() should trigger a NotImplemented"
+
+ def test_undo(self):
+ act = Action()
+ act.undo()
+ assert True, "undo() should never fail on the base action"
+
+
+class OnceWrapperTests(unittest.TestCase):
+ def test_onceaction_toggle(self):
+ """
+ Validate that the OnceWrapper wrapper works properly using the
+ CountAction
+ """
+ act = CountAction()
+ wrap = OnceWrapper(act)
+
+ assert act.do_count == 0, "do() should not have been called in __init__()"
+ assert act.undo_count == 0, "undo() should not have been called in __init__()"
+
+ wrap.undo()
+
+ assert act.undo_count == 0, "undo() should not be called if do() has not been called"
+
+ wrap.do()
+ assert act.do_count == 1, "do() should have been called once"
+
+ wrap.do()
+ assert act.do_count == 1, "do() should have been called only once"
+
+ wrap.undo()
+ assert act.undo_count == 1, "undo() should have been called once"
+
+ wrap.undo()
+ assert act.undo_count == 1, "undo() should have been called only once"
+
+class DisableWidgetActionTests(unittest.TestCase):
+ def test_disable(self):
+ btn = gtk.Button()
+ ObjectStore().activity = btn
+ btn.set_sensitive(True)
+
+ assert btn.props.sensitive is True, "Callback should have been called"
+
+ act = DisableWidgetAction("0")
+ assert btn.props.sensitive is True, "Callback should have been called again"
+ act.do()
+ assert btn.props.sensitive is False, "Callback should not have been called again"
+ act.undo()
+ assert btn.props.sensitive is True, "Callback should have been called again"
class PropertyAction(Action):
def __init__(self, na):
@@ -42,4 +120,5 @@ class PropsTest(unittest.TestCase):
assert prop.get_properties() == ['a'], "Action does not contain property 'a'"
if __name__ == "__main__":
- unittest.main() \ No newline at end of file
+ unittest.main()
+
diff --git a/src/sugar/tutorius/tests/coretests.py b/src/sugar/tutorius/tests/coretests.py
index ec730f2..9ac17a0 100644
--- a/src/sugar/tutorius/tests/coretests.py
+++ b/src/sugar/tutorius/tests/coretests.py
@@ -26,10 +26,13 @@ related elements and interfaces are tested here.
import unittest
import logging
-from sugar.tutorius.actions import Action, OnceWrapper
+from sugar.tutorius.actions import Action
from sugar.tutorius.core import *
from sugar.tutorius.filters import *
+
+from actiontests import CountAction
+
# Helper classes to help testing
class SimpleTutorial(Tutorial):
"""
@@ -60,19 +63,6 @@ class TrueWhileActiveAction(Action):
self.active = False
-class CountAction(Action):
- """
- This action counts how many times it's do and undo methods get called
- """
- def __init__(self):
- self.do_count = 0
- self.undo_count = 0
-
- def do(self):
- self.do_count += 1
-
- def undo(self):
- self.undo_count += 1
class TriggerEventFilter(EventFilter):
"""
@@ -110,48 +100,6 @@ class FakeEventFilter(TriggerEventFilter):
self.tutorial.set_state(event_filter.get_next_state())
-class BaseActionTests(unittest.TestCase):
- def test_do_unimplemented(self):
- act = Action()
- try:
- act.do()
- assert False, "do() should trigger a NotImplemented"
- except NotImplementedError:
- assert True, "do() should trigger a NotImplemented"
-
- def test_undo(self):
- act = Action()
- act.undo()
- assert True, "undo() should never fail on the base action"
-
-
-class OnceWrapperTests(unittest.TestCase):
- def test_onceaction_toggle(self):
- """
- Validate that the OnceWrapper wrapper works properly using the
- CountAction
- """
- act = CountAction()
- wrap = OnceWrapper(act)
-
- assert act.do_count == 0, "do() should not have been called in __init__()"
- assert act.undo_count == 0, "undo() should not have been called in __init__()"
-
- wrap.undo()
-
- assert act.undo_count == 0, "undo() should not be called if do() has not been called"
-
- wrap.do()
- assert act.do_count == 1, "do() should have been called once"
-
- wrap.do()
- assert act.do_count == 1, "do() should have been called only once"
-
- wrap.undo()
- assert act.undo_count == 1, "undo() should have been called once"
-
- wrap.undo()
- assert act.undo_count == 1, "undo() should have been called only once"
# State testing class
diff --git a/src/sugar/tutorius/tests/linear_creatortests.py b/src/sugar/tutorius/tests/linear_creatortests.py
index 3bc06f9..f9ffbe7 100644
--- a/src/sugar/tutorius/tests/linear_creatortests.py
+++ b/src/sugar/tutorius/tests/linear_creatortests.py
@@ -19,8 +19,8 @@ from sugar.tutorius.core import *
from sugar.tutorius.actions import *
from sugar.tutorius.filters import *
from sugar.tutorius.linear_creator import *
-from coretests import TriggerEventFilter, CountAction
-
+from coretests import TriggerEventFilter
+from actiontests import CountAction
import unittest
class CreatorTests(unittest.TestCase):
@@ -64,6 +64,16 @@ class CreatorTests(unittest.TestCase):
assert len(state2.get_action_list()) == 0, "Creator inserted extra actions on wrong state"
assert len(state2.get_event_filter_list()) == 0, "Creator assigner events to the final state"
+
+ creator.action(CountAction())
+
+ fsm = creator.generate_fsm()
+
+ state2 = fsm.get_state_by_name("State2")
+
+ assert len(state2.get_action_list()) == 1, "Creator did not add the action"
+
+ assert len(state2.get_event_filter_list()) == 0, "Creator assigner events to the final state"
if __name__ == '__main__':
- unittest.main() \ No newline at end of file
+ unittest.main()
diff --git a/src/sugar/tutorius/tests/run-tests.py b/src/sugar/tutorius/tests/run-tests.py
index 2f89c62..74b32fe 100755
--- a/src/sugar/tutorius/tests/run-tests.py
+++ b/src/sugar/tutorius/tests/run-tests.py
@@ -29,6 +29,7 @@ if __name__=='__main__':
import overlaytests
import linear_creatortests
import actiontests
+ import uamtests
suite = unittest.TestSuite()
suite.addTests(unittest.findTestCases(coretests))
@@ -37,6 +38,7 @@ if __name__=='__main__':
suite.addTests(unittest.findTestCases(overlaytests))
suite.addTests(unittest.findTestCases(linear_creatortests))
suite.addTests(unittest.findTestCases(actiontests))
+ suite.addTests(unittest.findTestCases(uamtests))
runner = unittest.TextTestRunner()
runner.run(suite)
@@ -50,5 +52,7 @@ if __name__=='__main__':
from gtkutilstests import *
from overlaytests import *
from actiontests import *
+ from linear_creatortests import *
+ from uamtests import *
unittest.main()