Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/src/sugar/tutorius/tests
diff options
context:
space:
mode:
authormike <michael.jmontcalm@gmail.com>2009-05-05 05:30:41 (GMT)
committer mike <michael.jmontcalm@gmail.com>2009-05-05 05:30:41 (GMT)
commitfb49b482f5bd478bada50cd1ab25a876806eff31 (patch)
tree8f5f0d291da99f98a1d42119c259d634b6f986be /src/sugar/tutorius/tests
parent2a1c6d6fbcb60c44d8690add635260faf243dcd6 (diff)
[LP 352437] Core : Minor refactoring on XMLSerializer, added tests
Diffstat (limited to 'src/sugar/tutorius/tests')
-rw-r--r--src/sugar/tutorius/tests/serializertests.py183
1 files changed, 80 insertions, 103 deletions
diff --git a/src/sugar/tutorius/tests/serializertests.py b/src/sugar/tutorius/tests/serializertests.py
index 2a743e1..bc29601 100644
--- a/src/sugar/tutorius/tests/serializertests.py
+++ b/src/sugar/tutorius/tests/serializertests.py
@@ -32,10 +32,10 @@ import shutil
from sugar.tutorius import gtkutils, overlayer
from sugar.tutorius.core import Tutorial, State, FiniteStateMachine
-from sugar.tutorius.actions import DialogMessage, OnceWrapper, BubbleMessage
-from sugar.tutorius.filters import GtkWidgetEventFilter, TimerEvent
-from sugar.tutorius.bundler import *
-
+from sugar.tutorius.actions import *
+from sugar.tutorius.filters import *
+from sugar.tutorius.bundler import XMLSerializer, Serializer
+import sugar
from uuid import *
import rpdb2
@@ -56,7 +56,7 @@ class SerializerInterfaceTest(unittest.TestCase):
ser = Serializer()
try:
- ser.load_fsm(str(uuid.uuid1))
+ ser.load_fsm(str(uuid.uuid1()))
assert False, "load_fsm() should throw an unimplemented error"
except:
pass
@@ -66,6 +66,12 @@ class XMLSerializerTest(unittest.TestCase):
Tests the transformation of XML to FSM, then back.
"""
def setUp(self):
+ # Make the serializer believe the test is in a activity path
+ self.testpath = "/tmp/testdata/"
+ os.environ["SUGAR_BUNDLE_PATH"] = self.testpath
+ os.environ["SUGAR_PREFIX"] = self.testpath
+## os.mkdir(sugar.tutorius.bundler._get_store_root())
+
# Create the sample FSM
self.fsm = FiniteStateMachine("testingMachine")
@@ -76,6 +82,7 @@ class XMLSerializerTest(unittest.TestCase):
st1 = State("INIT")
st1.add_action(act1)
+ st1.add_event_filter(ev1)
st2 = State("Second")
@@ -86,33 +93,34 @@ class XMLSerializerTest(unittest.TestCase):
self.uuid = uuid1()
+ # Flag to set to True if the output can be deleted after execution of
+ # the test
+ self.remove = True
+
+ def tearDown(self):
+ """
+ Removes the created files, if need be.
+ """
+ if self.remove == True:
+ os.remove(os.path.join(sugar.tutorius.bundler._get_store_root(), str(self.uuid)) + "/fsm.xml")
+ if os.path.isdir(self.testpath):
+ shutil.rmtree(self.testpath)
- def test_save(self, remove=True):
+ def test_save(self):
"""
Writes an FSM to disk, then compares the file to the expected results.
"Remove" boolean argument specify if the test data must be removed or not
- """
- # Make the serializer believe the test is in a activity path
- testpath = "/tmp/testdata/"
- os.environ["SUGAR_BUNDLE_PATH"] = testpath
- os.environ["SUGAR_PREFIX"] = testpath
-## os.mkdir(sugar.tutorius.bundler._get_store_root())
+ """
xml_ser = XMLSerializer()
os.makedirs(os.path.join(sugar.tutorius.bundler._get_store_root(), str(self.uuid)))
#rpdb2.start_embedded_debugger('flakyPass')
xml_ser.save_fsm(self.fsm, "fsm.xml", os.path.join(sugar.tutorius.bundler._get_store_root(), str(self.uuid)))
-
- #Remove test file and path
- if remove == True:
- os.remove(os.path.join(sugar.tutorius.bundler._get_store_root(), str(self.uuid)) + "/fsm.xml")
- if os.path.isdir(testpath):
- shutil.rmtree(testpath)
-
+
def test_save_and_load(self):
"""
Load up the written FSM and compare it with the object representation.
"""
- self.test_save(False)
+ self.test_save()
testpath = "/tmp/testdata/"
#rpdb2.start_embedded_debugger('flakyPass')
xml_ser = XMLSerializer()
@@ -130,90 +138,59 @@ class XMLSerializerTest(unittest.TestCase):
self.fsm._states.get("INIT").get_action_list()[0].message.value, \
'FSM underlying State underlying Action differ from original to reformed one'
assert len(loaded_fsm.get_action_list()) == 0, "FSM should not have any actions on itself"
-
- os.remove(os.path.join(sugar.tutorius.bundler._get_store_root(), str(self.uuid)) + "/fsm.xml")
- if os.path.isdir(testpath):
- shutil.rmtree(testpath)
-
-
-# Helper classes to help testing
-class SerializerTest(unittest.TestCase):
- """
- This class has to test the Serializer methods as well as the expected
- functionality.
- """
+ def test_all_actions(self):
+ """
+ Inserts all the known action types in a FSM, then attempt to load it.
+ """
+ st = State("INIT")
- # Voiding test as it is meant to be used with the pickle serializer,
- # that was deprecated
-## def test_pickle_integrity(self):
-## """
-## Validates content is uncorrupted trough a pickle file save/load.
-## """
-##
-## # Sample valid FSM dict
-## sampleDict = {
-## "INIT":State("INIT",
-## action_list=[
-## OnceWrapper(BubbleMessage(message="Welcome to the text editor tutorial!\n\n Click on the canvas and type a letter.", pos=[100,100], tailpos=[-10,-20])),
-## ],
-## event_filter_list=[
-## GtkWidgetEventFilter("TEXT","0.0.0.1.0.0.0","key-press-event"),
-## TimerEvent("LOST",15),
-## ],
-## ),
-## "LOST":State("LOST",
-## action_list=[BubbleMessage("Click in the canvas and type on your keyboard", [400, 400]),],
-## event_filter_list=[
-## GtkWidgetEventFilter("TEXT","0.0.0.1.0.0.0","key-press-event"),
-## TimerEvent("INIT",5),
-## ],
-## ),
-## "TEXT":State("TEXT",
-## action_list=[OnceWrapper(BubbleMessage(" You can type more letters if you want!\n\n" +
-## "To proceed to the next step, select your text.\n\n Click and drag over the text!", [200,150])),],
-## event_filter_list=[
-## GtkWidgetEventFilter("SELECTED","0.0.0.1.0.0","text-selected"),
-## ],
-## ),
-## }
-##
-## testpath = "/tmp/testdata/"
-##
-## # Create testdata/ folder if no exists
-## if not os.path.exists(testpath):
-## os.mkdir(testpath)
-##
-## serialize = TutoSerializer()
-##
-## # Make the class believe the test is in a activity path
-## os.environ["SUGAR_ACTIVITY_ROOT"] = testpath
-##
-## fsm = FiniteStateMachine("Test", state_dict=sampleDict)
-##
-## serialize.save_tutorial("Test", "Test", fsm, "serializeTest")
-##
-## fileDict = serialize.load_tuto_list()
-##
-## for filekey, tutorial in fileDict.items():
-## if filekey == "Test":
-## reformedTuto = serialize.build_tutorial(filekey)
-##
-## reformedfsm = reformedTuto.get("Test").state_machine
-##
-## #Tests
-## assert reformedfsm._states.get("INIT").name == fsm._states.get("INIT").name, \
-## 'FSM underlying dictionary differ from original to pickled/reformed one'
-## assert reformedfsm._states.get("LOST").name == fsm._states.get("LOST").name, \
-## 'FSM underlying dictionary differ from original to pickled/reformed one'
-## assert reformedfsm._states.get("TEXT").name == fsm._states.get("TEXT").name, \
-## 'FSM underlying dictionary differ from original to pickled/reformed one'
-##
-##
-## os.remove(testpath + "serializeTest.tml")
-## os.rmdir(testpath)
-## os.rmdir("/tmp")
-
-
+ act1 = BubbleMessage("Hi!", pos=[10,120], tailpos=[-12,30])
+ act2 = DialogMessage("Hello again.", pos=[120,10])
+ act3 = WidgetIdentifyAction()
+ act4 = DisableWidgetAction("0.0.0.1.0.0.0")
+ act5 = TypeTextAction("0.0.0.1.1.1.0.0", "New text")
+ act6 = ClickAction("0.0.1.0.1.1")
+ act7 = OnceWrapper(act1)
+ act8 = ChainAction([act1, act2, act3, act4])
+ actions = [act1, act2, act3, act4, act5, act6, act7, act8]
+
+ for action in actions:
+ st.add_action(action)
+
+ self.fsm.remove_state("Second")
+ self.fsm.remove_state("INIT")
+ self.fsm.add_state(st)
+
+ xml_ser = XMLSerializer()
+
+ self.test_save()
+
+ reloaded_fsm = xml_ser.load_fsm(str(self.uuid))
+
+ def test_all_filters(self):
+ """
+ Inserts all the known action types in a FSM, then attempt to load it.
+ """
+ st = State("INIT")
+
+ ev1 = TimerEvent("Second", 1000)
+ ev2 = GtkWidgetEventFilter("Second", "0.0.1.1.0.0.1", "clicked")
+ ev3 = GtkWidgetTypeFilter("Second", "0.0.1.1.1.2.3", text="Typed stuff")
+ ev4 = GtkWidgetTypeFilter("Second", "0.0.1.1.1.2.3", strokes="acbd")
+ filters = [ev1, ev2, ev3, ev4]
+
+ for filter in filters:
+ st.add_event_filter(filter)
+
+ self.fsm.remove_state("INIT")
+ self.fsm.add_state(st)
+
+ xml_ser = XMLSerializer()
+
+ self.test_save()
+
+ reloaded_fsm = xml_ser.load_fsm(str(self.uuid))
+
if __name__ == "__main__":
unittest.main()