From a023cce7ec486c85234bc25ad1740191c920d454 Mon Sep 17 00:00:00 2001 From: erick Date: Fri, 30 Oct 2009 22:21:54 +0000 Subject: Tutorial: Changed Tutorial.update_* to update properties instead of replacing the object, Moved validation of state name to a decorator to avoid dupliation --- (limited to 'tests') diff --git a/tests/tutorialtests.py b/tests/tutorialtests.py index c1f591f..cd0ef6f 100644 --- a/tests/tutorialtests.py +++ b/tests/tutorialtests.py @@ -60,11 +60,21 @@ from sugar.tutorius.tutorial import * # the tests will break each time we change something in the # implementation +from sugar.tutorius.properties import * + +class MockAction(TPropContainer): + i = TIntProperty(0, 0, 9) + +class MockEvent(TPropContainer): + i = TIntProperty(0, 0, 9) + class StateTest(unittest.TestCase): """Test basic functionalities of states used by tutorials""" def setUp(self): self.state = State("State1") + self.action = MockAction() + self.event = MockEvent() def tearDown(self): pass @@ -86,11 +96,16 @@ class StateTest(unittest.TestCase): assert action_name1 != action_name2 def test_update_dummy_action(self): - action_name = self.state.add_action("action1") - self.state.update_action(action_name, "action2") + action_name = self.state.add_action(self.action) + assert self.action.i == 0 + + prop = self.action.get_properties_dict_copy() + prop["i"] = 2 + self.state.update_action(action_name, prop) + assert len(self.state.get_action_dict()) == 1 assert self.state.get_action_dict().has_key(action_name) - assert self.state.get_action_dict()[action_name] == "action2" + assert self.state.get_action_dict()[action_name].get_properties_dict_copy() == prop def test_delete_dummy_action(self): action_name = self.state.add_action("action1") @@ -123,11 +138,22 @@ class StateTest(unittest.TestCase): assert transition_name1 != transition_name2 def test_update_dummy_transition(self): - transition_name = self.state.add_transition("transition1") - self.state.update_transition(transition_name, "transition2") + transition_name = self.state.add_transition((self.event, Tutorial.END)) + assert self.event.i == 0 + + prop = self.event.get_properties_dict_copy() + prop["i"] = 2 + self.state.update_transition(transition_name, prop) + assert len(self.state.get_transition_dict()) == 1 assert self.state.get_transition_dict().has_key(transition_name) - assert self.state.get_transition_dict()[transition_name] == "transition2" + assert self.state.get_transition_dict()[transition_name][0].get_properties_dict_copy() == prop + assert self.state.get_transition_dict()[transition_name][1] == Tutorial.END + + # Now update only the transition + self.state.update_transition(transition_name, new_state=Tutorial.INIT) + assert self.state.get_transition_dict()[transition_name][0].get_properties_dict_copy() == prop + assert self.state.get_transition_dict()[transition_name][1] == Tutorial.INIT def test_delete_dummy_transition(self): transition_name = self.state.add_transition("transition1") @@ -184,6 +210,8 @@ class TutorialTest(unittest.TestCase): def setUp(self): self.tutorial = Tutorial("Tutorial Test") + self.action = MockAction() + self.event = MockEvent() def tearDown(self): pass @@ -247,7 +275,7 @@ class TutorialTest(unittest.TestCase): def test_delete_linked_state(self): state_name1 = self.tutorial.add_state() self.tutorial.update_transition(Tutorial.INITIAL_TRANSITION_NAME, \ - (Tutorial.AUTOMATIC_TRANSITION_EVENT, state_name1)) + None, state_name1) transition_name1 = self.tutorial.add_transition(state_name1,("event1", Tutorial.END)) self.tutorial.delete_state(state_name1) assert len(self.tutorial.get_state_dict()) == 2 @@ -277,11 +305,15 @@ class TutorialTest(unittest.TestCase): def test_update_dummy_action(self): state_name = self.tutorial.add_state() - action_name = self.tutorial.add_action(state_name,"action1") - self.tutorial.update_action(action_name, "action2") + action_name = self.tutorial.add_action(state_name,self.action) + + prop = self.action.get_properties_dict_copy() + prop["i"] = 2 + self.tutorial.update_action(action_name, prop) + assert len(self.tutorial.get_action_dict()) == 1 assert self.tutorial.get_action_dict().has_key(action_name) - assert self.tutorial.get_action_dict()[action_name] == "action2" + assert self.tutorial.get_action_dict()[action_name].get_properties_dict_copy() == prop def test_delete_dummy_action(self): state_name = self.tutorial.add_state() @@ -310,11 +342,21 @@ class TutorialTest(unittest.TestCase): def test_update_dummy_transition(self): state_name = self.tutorial.add_state() - transition_name = self.tutorial.add_transition(state_name,"transition1") - self.tutorial.update_transition(transition_name, "transition2") + transition_name = self.tutorial.add_transition(state_name,(self.event, Tutorial.END)) + + prop = self.event.get_properties_dict_copy() + prop["i"] = 2 + self.tutorial.update_transition(transition_name, prop) + assert len(self.tutorial.get_transition_dict()) == 2 assert self.tutorial.get_transition_dict().has_key(transition_name) - assert self.tutorial.get_transition_dict()[transition_name] == "transition2" + assert self.tutorial.get_transition_dict()[transition_name][0].get_properties_dict_copy() == prop + assert self.tutorial.get_transition_dict()[transition_name][1] == Tutorial.END + + # Now update only the transition + self.tutorial.update_transition(transition_name, new_state=Tutorial.INIT) + assert self.tutorial.get_transition_dict()[transition_name][0].get_properties_dict_copy() == prop + assert self.tutorial.get_transition_dict()[transition_name][1] == Tutorial.INIT def test_delete_dummy_transition(self): state_name = self.tutorial.add_state() -- cgit v0.9.1