# Copyright (C) 2009, Tutorius.org # # 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 # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA import unittest import os from sugar.tutorius.translator import * from sugar.tutorius.properties import * ############################################################################## ## Helper classes class ResourceAction(TPropContainer): resource = TResourceProperty() def __init__(self): TPropContainer.__init__(self) class NestedResource(TPropContainer): nested = TAddonProperty() def __init__(self): TPropContainer.__init__(self) self.nested = ResourceAction() class ListResources(TPropContainer): nested_list = TAddonListProperty() def __init__(self): TPropContainer.__init__(self) self.nested_list = [ResourceAction(), ResourceAction()] ## ############################################################################## class ResourceTranslatorTests(unittest.TestCase): temp_path = "/tmp/tutorius" file_name = "temp.txt" def setUp(self): try: os.mkdir(self.temp_path) except: pass new_file = file(os.path.join(self.temp_path, self.file_name), "w") # Use a dummy prob manager - we shouldn't be using it self.prob_man = object() self.translator = ResourceTranslator(self.prob_man, '0101010101', testing=True) pass def tearDown(self): os.unlink(os.path.join(self.temp_path, self.file_name)) pass def test_translate(self): # Create an action with a resource property res_action = ResourceAction() self.translator.translate(res_action) assert getattr(res_action, "resource").type == "file", "Resource was not converted to file" def test_recursive_translate(self): nested_action = NestedResource() self.translator.translate(nested_action) assert getattr(getattr(nested_action, "nested"), "resource").type == "file", "Nested resource was not converted properly" def test_list_translate(self): list_action = ListResources() self.translator.translate(list_action) for container in list_action.nested_list: assert getattr(container, "resource").type == "file", "Element of list was not converted properly"