From 39a9a7030a774257d7398661edec9f50f6135974 Mon Sep 17 00:00:00 2001 From: mike Date: Mon, 06 Apr 2009 02:49:50 +0000 Subject: Merge branch 'lp353185' Conflicts: source/external/source/sugar-toolkit/src/sugar/tutorius/tests/actiontests.py --- (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..a1ec4ba 100644 --- a/src/sugar/tutorius/tests/actiontests.py +++ b/src/sugar/tutorius/tests/actiontests.py @@ -22,10 +22,7 @@ The behavior of the actions must be tested here. """ import unittest -import gtk - -from sugar.tutorius.actions import Action, OnceWrapper -from sugar.tutorius.services import ObjectStore +from sugar.tutorius.actions import * class PropertyAction(Action): def __init__(self, na): @@ -54,56 +51,55 @@ class CountAction(Action): self.do_count = 0 self.undo_count = 0 - def do(self): - self.do_count += 1 - - def undo(self): - self.undo_count += 1 +class ChainTester(Action): + def __init__(self, witness): + self._witness = witness + def do(self, **kwargs): + self._witness.append([self,"do"]) -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 undo(self): + self._witness.append([self,"undo"]) - def test_undo(self): - act = Action() - act.undo() - assert True, "undo() should never fail on the base action" +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) -class OnceWrapperTests(unittest.TestCase): - def test_onceaction_toggle(self): - """ - Validate that the OnceWrapper wrapper works properly using the - CountAction - """ - act = CountAction() - wrap = OnceWrapper(act) + c = ChainAction(first, second) + assert witness == [], "Actions should not be triggered on init""" + c.do() - 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__()" + assert witness[0][0] is first, "First triggered action must be 'first'" + assert witness[0][1] is "do", "Action do() should be triggered" - wrap.undo() + assert witness[1][0] is second, "second triggered action must be 'second'" + assert witness[1][1] is "do", "Action do() should be triggered" - assert act.undo_count == 0, "undo() should not be called if do() has not been called" + assert len(witness) is 2, "Two actions should give 2 do's" - wrap.do() - assert act.do_count == 1, "do() should have been called once" + #empty the witness list + while len(witness): + rm = witness.pop() - wrap.do() - assert act.do_count == 1, "do() should have been called only once" + 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" - wrap.undo() - assert act.undo_count == 1, "undo() should have been called once" + assert witness[0][0] is second, "first triggered action must be 'second'" + assert witness[0][1] is "undo", "Action undo() should be triggered" - wrap.undo() - assert act.undo_count == 1, "undo() should have been called only once" + assert len(witness) is 2, "Two actions should give 2 undo's" + if __name__ == "__main__": unittest.main() - -- cgit v0.9.1