Example #1
0
    def test_get_nested_structure(self):
        xml = self.get_data_from_test_files('nested_structures.xml', __file__)
        p = MockupOpusProject(xml)
        instance = SubModelEditor(p)
        # fetch the nested_structure for a given submodel, convert it from XML to dict and make
        # sure that it is the same as the should_be_dict
        def test_nested_structure(name, should_be_dict):
            submodel_node = p.find('model/specification/submodel', name=name)
            nest_struct_node = instance.update_model_nested_structure(submodel_node)
            if should_be_dict is None:
                self.assertEqual(nest_struct_node, None)
            else:
                node_data = p.xml_config._convert_node_to_data(nest_struct_node)
                print etree.tostring(nest_struct_node)
                self.assertDictsEqual(node_data, should_be_dict)

        should_be_dict = None
        test_nested_structure('no nests', should_be_dict)

        should_be_dict = {42: [5, 10]}
        test_nested_structure('one level nest', should_be_dict)

        should_be_dict = {1: {11: [5, 10], 12: [99, 100]} }
        test_nested_structure('multi level nest', should_be_dict)

        should_be_dict = {77: [1, 2, 3, 4], 33: [5, 6] }
        test_nested_structure('nest with # of samples', should_be_dict)

        submodel_node = p.find('malplaced_submodel')
        self.assertRaises(RuntimeError, instance.update_model_nested_structure, submodel_node)
Example #2
0
    def test_get_nested_structure(self):
        xml = self.get_data_from_test_files('nested_structures.xml', __file__)
        p = MockupOpusProject(xml)
        instance = SubModelEditor(p)

        # fetch the nested_structure for a given submodel, convert it from XML to dict and make
        # sure that it is the same as the should_be_dict
        def test_nested_structure(name, should_be_dict):
            submodel_node = p.find('model/specification/submodel', name=name)
            nest_struct_node = instance.update_model_nested_structure(
                submodel_node)
            if should_be_dict is None:
                self.assertEqual(nest_struct_node, None)
            else:
                node_data = p.xml_config._convert_node_to_data(
                    nest_struct_node)
                print etree.tostring(nest_struct_node)
                self.assertDictsEqual(node_data, should_be_dict)

        should_be_dict = None
        test_nested_structure('no nests', should_be_dict)

        should_be_dict = {42: [5, 10]}
        test_nested_structure('one level nest', should_be_dict)

        should_be_dict = {1: {11: [5, 10], 12: [99, 100]}}
        test_nested_structure('multi level nest', should_be_dict)

        should_be_dict = {77: [1, 2, 3, 4], 33: [5, 6]}
        test_nested_structure('nest with # of samples', should_be_dict)

        submodel_node = p.find('malplaced_submodel')
        self.assertRaises(RuntimeError, instance.update_model_nested_structure,
                          submodel_node)
 def test_get_tool_node_by_name(self):
     xml = self.get_data_from_test_files('tool_nodes.xml', __file__)
     project = MockupOpusProject(xml)
     another_tool = get_tool_node_by_name(project, 'another tool')
     another_tool_node = project.find("data_manager/tool_library/tool_group/tool[@name='another tool']")
     no_tool = get_tool_node_by_name(project, 'no tool')
     self.assertEquals(another_tool_node.find('class_module').text, 'correct_tool')
     self.assertEqual(another_tool, another_tool_node)
     self.assertTrue(no_tool is None)
Example #4
0
 def test_name_collision_test(self):
     xml = self.get_data_from_test_files('submodels.xml', __file__)
     p = MockupOpusProject(xml)
     instance = SubModelEditor(p)
     sub1 = p.find('submodel', name='submodel1')
     instance.init_for_submodel_node(sub1)
     instance.le_name.setText('taken name')
     self.assertEqual(instance.validate_submodel_and_accept(), 'name collision')
     instance.le_name.setText('unique name')
     self.assert_(instance.validate_submodel_and_accept() is None)
Example #5
0
 def test_name_collision_test(self):
     xml = self.get_data_from_test_files('submodels.xml', __file__)
     p = MockupOpusProject(xml)
     instance = SubModelEditor(p)
     sub1 = p.find('submodel', name='submodel1')
     instance.init_for_submodel_node(sub1)
     instance.le_name.setText('taken name')
     self.assertEqual(instance.validate_submodel_and_accept(), 'name collision')
     instance.le_name.setText('unique name')
     self.assert_(instance.validate_submodel_and_accept() is None)
    def test_get_tool_library_node(self):
        xml = self.get_data_from_test_files('tool_nodes.xml', __file__)
        project = MockupOpusProject(xml)
        lib_node = get_tool_library_node(project)
        self.assertTrue(lib_node is not None)
        self.assertEqual(lib_node.tag, 'tool_library')

        project = MockupOpusProject('<opus_project />')
        lib_node = get_tool_library_node(project)
        self.assertTrue(lib_node is None)
 def test_get_tool_node_by_name(self):
     xml = self.get_data_from_test_files('tool_nodes.xml', __file__)
     project = MockupOpusProject(xml)
     another_tool = get_tool_node_by_name(project, 'another tool')
     another_tool_node = project.find(
         "data_manager/tool_library/tool_group/tool[@name='another tool']")
     no_tool = get_tool_node_by_name(project, 'no tool')
     self.assertEquals(
         another_tool_node.find('class_module').text, 'correct_tool')
     self.assertEqual(another_tool, another_tool_node)
     self.assertTrue(no_tool is None)
Example #8
0
    def test_remove_variables_from_specification(self):
        filename = os.path.join(self.get_test_data_dir(__file__), 'model_child2.xml')
        p = MockupOpusProject()
        p.open(filename)
        xml = etree.tostring(p._root_node)
        manager = MockupManager(xml='', manager_node_path='model_manager', opus_project=p)
        controller = xcm.XmlController_Models(manager)
        shadowing_node = p.find('model_manager/model/submodel', name='shadow node')
        self.assert_(shadowing_node.get('inherit_parent_values') == 'False')
        self.assertEqual(len(shadowing_node.findall('variable_list/variable_spec')), 1)
 
#from opus_core.tests import opus_unittest
#if __name__ == "__main__":
#    opus_unittest.main()
    def test_update_submodel(self):
        filename = os.path.join(self.get_test_data_dir(__file__),
                                'model_child.xml')
        p = MockupOpusProject()
        p.open(filename)
        xml = etree.tostring(p._root_node)
        manager = MockupManager(xml='',
                                manager_node_path='model_manager',
                                opus_project=p)
        controller = xcm.XmlController_Models(manager)

        local_node = p.find('model_manager/model/submodel', name='local node')
        shadowing_node = p.find('model_manager/model/submodel',
                                name='shadow node')

        self.assert_(local_node is not None)
        self.assert_(shadowing_node is not None)

        # created an edited version of local node
        edited_node = etree.Element('submodel', {'name': 'edited local node'})
        vlist_node = etree.SubElement(edited_node, 'variable_list',
                                      {'type': 'variable_list'})
        variable_spec_node = etree.SubElement(vlist_node, 'variable_spec',
                                              {'name': '.edited_var'})

        controller._update_submodel(local_node, edited_node)
        # the decription should be gone and the variables and named should have changed
        self.assert_(local_node.find('description') is None)
        self.assertEqual(
            local_node.find('variable_list/variable_spec').get('name'),
            '.edited_var')
        self.assertEqual(local_node.get('name'), 'edited local node')
        # make sure no new nodes was added
        self.assertEqual(len(p.findall('model_manager/model/submodel')), 3)

        # renaming a shadowing node should insert a new local copy and reinsert the shadowed node
        self.assert_(shadowing_node.get('inherited') is None)
        edited_node.set('name', 'new copy')
        controller._update_submodel(shadowing_node, edited_node)
        shadowing_node = p.find('model_manager/model/submodel',
                                name='shadow node')
        self.assert_(shadowing_node.get('inherited')
                     is not None)  # this should now be inherited
        new_copy_node = p.find('model_manager/model/submodel', name='new copy')
        self.assert_(new_copy_node is not None)
        # make sure only one node was added
        self.assertEqual(len(p.findall('model_manager/model/submodel')), 4)
 def test_get_tool_nodes(self):
     xml = self.get_data_from_test_files('tool_nodes.xml', __file__)
     project = MockupOpusProject(xml)
     lib_node = get_tool_library_node(project)
     self.assertTrue(lib_node is not None)
     self.assertEqual(lib_node.tag, 'tool_library')
     tool_nodes = get_tool_nodes(project)
     names_should_be = set(['a tool', 'another tool', 'a third tool'])
     names_are = set([tool_node.get('name') for tool_node in tool_nodes])
     self.assertEqual(names_are, names_should_be)
    def test_remove_variables_from_specification(self):
        filename = os.path.join(self.get_test_data_dir(__file__),
                                'model_child2.xml')
        p = MockupOpusProject()
        p.open(filename)
        xml = etree.tostring(p._root_node)
        manager = MockupManager(xml='',
                                manager_node_path='model_manager',
                                opus_project=p)
        controller = xcm.XmlController_Models(manager)
        shadowing_node = p.find('model_manager/model/submodel',
                                name='shadow node')
        self.assert_(shadowing_node.get('inherit_parent_values') == 'False')
        self.assertEqual(
            len(shadowing_node.findall('variable_list/variable_spec')), 1)


#from opus_core.tests import opus_unittest
#if __name__ == "__main__":
#    opus_unittest.main()
Example #12
0
 def __init__(self,
              xml='<opus_project> <manager /> </opus_project>',
              manager_node_path='manager',
              opus_project=None):
     self.app = QtGui.QApplication([], True)
     base_widget = QtGui.QWidget()
     base_widget.setLayout(QtGui.QVBoxLayout())
     base_tab_widget = QtGui.QTabWidget(base_widget)
     project = MockupOpusProject(xml) if not opus_project else opus_project
     AbstractManager.__init__(self, base_widget, base_tab_widget, project,
                              manager_node_path)
Example #13
0
    def test_update_submodel(self):
        filename = os.path.join(self.get_test_data_dir(__file__), 'model_child.xml')
        p = MockupOpusProject()
        p.open(filename)
        xml = etree.tostring(p._root_node)
        manager = MockupManager(xml='', manager_node_path='model_manager', opus_project=p)
        controller = xcm.XmlController_Models(manager)

        local_node = p.find('model_manager/model/submodel', name='local node')
        shadowing_node = p.find('model_manager/model/submodel', name='shadow node')

        self.assert_(local_node is not None)
        self.assert_(shadowing_node is not None)

        # created an edited version of local node
        edited_node = etree.Element('submodel', {'name': 'edited local node'})
        vlist_node = etree.SubElement(edited_node, 'variable_list', {'type': 'variable_list'})
        variable_spec_node = etree.SubElement(vlist_node, 'variable_spec', {'name': '.edited_var'})

        controller._update_submodel(local_node, edited_node)
        # the decription should be gone and the variables and named should have changed
        self.assert_(local_node.find('description') is None)
        self.assertEqual(local_node.find('variable_list/variable_spec').get('name'), '.edited_var')
        self.assertEqual(local_node.get('name'), 'edited local node')
        # make sure no new nodes was added
        self.assertEqual(len(p.findall('model_manager/model/submodel')), 3)

        # renaming a shadowing node should insert a new local copy and reinsert the shadowed node
        self.assert_(shadowing_node.get('inherited') is None)
        edited_node.set('name', 'new copy')
        controller._update_submodel(shadowing_node, edited_node)
        shadowing_node = p.find('model_manager/model/submodel', name='shadow node')
        self.assert_(shadowing_node.get('inherited') is not None) # this should now be inherited
        new_copy_node = p.find('model_manager/model/submodel', name='new copy')
        self.assert_(new_copy_node is not None)
        # make sure only one node was added
        self.assertEqual(len(p.findall('model_manager/model/submodel')), 4)
Example #14
0
                    <variable source="expression" type="variable_definition" use="model variable" name="constant">constant</variable>
                    <variable source="expression" type="variable_definition" use="model variable" name="building.people_in_building">10 * urbansim.building.people_in_building</variable>
                    <variable source="expression" type="variable_definition" use="model variable" name=".add me">urbansim.zone.ln_constraint</variable>
            </expression_library>
        </general>
        <variable_list type="selectable_list">
            <variable_spec name=".ln_distance_to_highway" keep_fixed="True" starting_value="42.0" coefficient_name="dth" type="variable" />
            <variable_spec name=".land_price" keep_fixed="False" type="variable" />
            <variable_spec name=".ignore_me" type="variable" ignore="True"/>
            <variable_spec name="constant" type="variable" />
            <variable_spec name="dataset2.variable" type="variable" />
        </variable_list>
    </opus_project>
    '''
    app = QtGui.QApplication([], True)
    p = MockupOpusProject(xml)

    f = QtGui.QFrame()
    l = QtGui.QVBoxLayout()
    f.setLayout(l)
    tv = QtGui.QTableView()
    m = VariableSelectorTableModel(p)
    v_defs = p.findall('expression_library/variable')
    m.init_for_variable_node_list(p.find('variable_list'))
    tv.setModel(m)
    l.addWidget(QtGui.QLabel('Hello'))
    l.addWidget(tv)
    pb = QtGui.QPushButton('reload')
    lbl = QtGui.QLabel()

    def update_text():
Example #15
0
 def setUp(self):
     xml = self.get_data_from_test_files('dynamic_templates.xml', __file__)
     project = MockupOpusProject(xml)
     self.instance = DynamicTemplateDialog(project.find('model_template'),
                                           project)
Example #16
0
                    <variable source="expression" type="variable_definition" use="model variable" name="constant">constant</variable>
                    <variable source="expression" type="variable_definition" use="model variable" name="building.people_in_building">10 * urbansim.building.people_in_building</variable>
                    <variable source="expression" type="variable_definition" use="model variable" name=".add me">urbansim.zone.ln_constraint</variable>
            </expression_library>
        </general>
        <variable_list type="selectable_list">
            <variable_spec name=".ln_distance_to_highway" keep_fixed="True" starting_value="42.0" coefficient_name="dth" type="variable" />
            <variable_spec name=".land_price" keep_fixed="False" type="variable" />
            <variable_spec name=".ignore_me" type="variable" ignore="True"/>
            <variable_spec name="constant" type="variable" />
            <variable_spec name="dataset2.variable" type="variable" />
        </variable_list>
    </opus_project>
    '''
    app = QtGui.QApplication([], True)
    p = MockupOpusProject(xml)

    f = QtGui.QFrame()
    l = QtGui.QVBoxLayout()
    f.setLayout(l)
    tv = QtGui.QTableView()
    m = VariableSelectorTableModel(p)
    v_defs = p.findall('expression_library/variable')
    m.init_for_variable_node_list(p.find('variable_list'))
    tv.setModel(m)
    l.addWidget(QtGui.QLabel('Hello'))
    l.addWidget(tv)
    pb = QtGui.QPushButton('reload')
    lbl = QtGui.QLabel()
    def update_text():
        text = ''
Example #17
0
                      <variable_list type="variable_list">
                        <variable_spec name=".ble_saw"/>
                        <variable_spec name=".ble_sew"/>
                        <variable_spec name=".ble_rew"/>
                        <variable_spec name=".blnrsfw"/>
                        <variable_spec name=".bltv"/>
                        <variable_spec name=".bart"/>
                      </variable_list>
                    </equation>
                    <equation equation_id="3" name="simpler equation">
                      <variable_list type="variable_list">
                        <variable_spec name=".ble_rew"/>
                        <variable_spec name=".bltv"/>
                      </variable_list>
                    </equation>
                    </submodel>
                </specification>
              </model>
          </models>
      </model_manager>
      </opus_project>
    '''
    p = MockupOpusProject(xml)
    app = QtGui.QApplication([], True)
    w = SubModelEditor(p)
    # model_node = p.find('model_manager/models/model', name='land_price_model')
    model_node = p.find('model_manager/models/model', name='land_price_model')
    w.init_for_submodel_node(model_node.find('specification/submodel'))
    while w.exec_() == w.Accepted:
        print etree.tostring(w.submodel_node, pretty_print=True)
                      <variable_list type="variable_list">
                        <variable_spec name=".ble_saw"/>
                        <variable_spec name=".ble_sew"/>
                        <variable_spec name=".ble_rew"/>
                        <variable_spec name=".blnrsfw"/>
                        <variable_spec name=".bltv"/>
                        <variable_spec name=".bart"/>
                      </variable_list>
                    </equation>
                    <equation equation_id="3" name="simpler equation">
                      <variable_list type="variable_list">
                        <variable_spec name=".ble_rew"/>
                        <variable_spec name=".bltv"/>
                      </variable_list>
                    </equation>
                    </submodel>
                </specification>
              </model>
          </models>
      </model_manager>
      </opus_project>
    '''
    p = MockupOpusProject(xml)
    app = QtGui.QApplication([], True)
    w = SubModelEditor(p)
    # model_node = p.find('model_manager/models/model', name='land_price_model')
    model_node = p.find('model_manager/models/model', name='land_price_model')
    w.init_for_submodel_node(model_node.find('specification/submodel'))
    while w.exec_() == w.Accepted:
        print etree.tostring(w.submodel_node, pretty_print=True)
 def setUp(self):
     xml = self.get_data_from_test_files('dynamic_templates.xml', __file__)
     project = MockupOpusProject(xml)
     self.instance = DynamicTemplateDialog(project.find('model_template'), project)