From bbc61e78c1f47537f9a7118073ca89f06ad53ea9 Mon Sep 17 00:00:00 2001 From: mike Date: Mon, 06 Apr 2009 02:41:41 +0000 Subject: LP 353185 Core : Create chain action --- (limited to 'src/sugar/tutorius/tests/actiontests.py') diff --git a/src/sugar/tutorius/tests/actiontests.py b/src/sugar/tutorius/tests/actiontests.py index 5fb3d0f..9c398d4 100644 --- a/src/sugar/tutorius/tests/actiontests.py +++ b/src/sugar/tutorius/tests/actiontests.py @@ -24,7 +24,7 @@ The behavior of the actions must be tested here. import unittest import gtk -from sugar.tutorius.actions import Action, OnceWrapper +from sugar.tutorius.actions import * from sugar.tutorius.services import ObjectStore class PropertyAction(Action): @@ -104,6 +104,55 @@ class OnceWrapperTests(unittest.TestCase): wrap.undo() assert act.undo_count == 1, "undo() should have been called only once" +class ChainTester(Action): + def __init__(self, witness): + self._witness = witness + + def do(self, **kwargs): + self._witness.append([self,"do"]) + + def undo(self): + self._witness.append([self,"undo"]) + +class ChainActionTest(unittest.TestCase): + """Tester for ChainAction""" + def test_empty(self): + """If the expected empty behavior (do nothing) changes + and starts throwing exceptions, this will flag it""" + a = ChainAction() + a.do() + a.undo() + + def test_order(self): + witness = [] + first = ChainTester(witness) + second = ChainTester(witness) + + c = ChainAction(first, second) + assert witness == [], "Actions should not be triggered on init""" + c.do() + + assert witness[0][0] is first, "First triggered action must be 'first'" + assert witness[0][1] is "do", "Action do() should be triggered" + + assert witness[1][0] is second, "second triggered action must be 'second'" + assert witness[1][1] is "do", "Action do() should be triggered" + + assert len(witness) is 2, "Two actions should give 2 do's" + + #empty the witness list + while len(witness): + rm = witness.pop() + + c.undo() + assert witness[1][0] is first, "second triggered action must be 'first'" + assert witness[1][1] is "undo", "Action undo() should be triggered" + + assert witness[0][0] is second, "first triggered action must be 'second'" + assert witness[0][1] is "undo", "Action undo() should be triggered" + + assert len(witness) is 2, "Two actions should give 2 undo's" + + if __name__ == "__main__": unittest.main() - -- cgit v0.9.1