コード例 #1
0
ファイル: test_tool.py プロジェクト: salilab/rmf_chimerax
 def test_rmf_viewer(self):
     """Test creation of RMFViewer tool"""
     mock_session = make_session()
     m1 = Model(mock_session, 'test')
     m1.rmf_hierarchy = None
     m1.rmf_features = []
     m1.rmf_provenance = []
     m1._rmf_resolutions = set((1.0, 10.0))
     m1._selected_rmf_resolutions = set((1.0, 10.0, None))
     m2 = Model(mock_session, 'test')
     mock_session.models.add((m1, m2))
     _ = src.tool.RMFViewer(mock_session, "RMF Viewer")
     # Test update on model creation
     m3 = Model(mock_session, 'test')
     m3.rmf_hierarchy = None
     m3.rmf_features = []
     m3.rmf_provenance = []
     m3._rmf_resolutions = set((1.0, 10.0))
     m3._selected_rmf_resolutions = set((1.0, 10.0, None))
     mock_session.models.add((m3, ))
コード例 #2
0
ファイル: test_tool.py プロジェクト: salilab/rmf_chimerax
    def test_button_clicks(self):
        """Test clicking on select/show/hide buttons"""
        def get_first_tree(stack):
            for w in stack.widget(1).children():
                if isinstance(w, QTreeView):
                    self.assertIsInstance(w.model(),
                                          src.tool._RMFHierarchyModel)
                    return w
            raise ValueError("could not find tree")

        def get_buttons(stack):
            for w in stack.widget(1).children():
                if isinstance(w, QPushButton):
                    yield w

        class TestChimeraObj:
            def __init__(self, deleted=False):
                self.deleted = deleted

        root = make_node("root", 0, resolution=10)
        child1 = make_node("child1", 1)
        child1.chimera_obj = TestChimeraObj()
        child2 = make_node("child2", 2)
        grandchild = make_node("grandchild", 3)
        child2.add_children([grandchild])
        delchild = make_node("child3", 3)
        delchild.chimera_obj = TestChimeraObj(deleted=True)
        root.add_children((child1, child2, delchild))

        mock_session = make_session()
        m1 = Model(mock_session, 'test')
        m1.rmf_hierarchy = root

        m1.rmf_features = [make_node("f1", 4), make_node("f2", 5)]
        m1.rmf_provenance = []
        m1._rmf_resolutions = set((1, 10))
        m1._selected_rmf_resolutions = set((1, 10, None))
        mock_session.models.add((m1, ))
        r = src.tool.RMFViewer(mock_session, "RMF Viewer")
        tree1 = get_first_tree(r.model_stack.widget(0))
        buttons = list(get_buttons(r.model_stack.widget(0)))
        # Show, View, Hide, Select
        self.assertEqual(len(buttons), 5)
        # Call "clicked" methods directly
        r._select_button_clicked(tree1)
        tree1.selectAll()
        r._show_button_clicked(tree1)
        r._show_only_button_clicked(tree1)
        r._hide_button_clicked(tree1)
        r._view_button_clicked(tree1)
        # Call indirectly via clicking each button
        for b in buttons:
            b.click()
コード例 #3
0
ファイル: test_tool.py プロジェクト: salilab/rmf_chimerax
    def test_rmf_viewer_snapshot(self):
        """Test snapshot of RMFViewer tool"""
        mock_session = make_session()
        m1 = Model(mock_session, 'test')
        m1.rmf_hierarchy = None
        m1.rmf_features = []
        m1.rmf_provenance = []
        m1._rmf_resolutions = set((1.0, 10.0))
        m1._selected_rmf_resolutions = set((1.0, None))
        mock_session.models.add((m1, ))
        r = src.tool.RMFViewer(mock_session, "RMF Viewer")
        s = r.take_snapshot(mock_session, None)

        newr = src.tool.RMFViewer.restore_snapshot(mock_session, s)
        self.assertIsInstance(newr, src.tool.RMFViewer)
コード例 #4
0
ファイル: test_tool.py プロジェクト: salilab/rmf_chimerax
    def test_resolution_clicked(self):
        """Test clicking on resolution checkboxes"""
        def get_first_tree(stack):
            for w in stack.widget(1).children():
                if isinstance(w, QTreeView):
                    self.assertIsInstance(w.model(),
                                          src.tool._RMFHierarchyModel)
                    return w
            raise ValueError("could not find tree")

        def get_buttons(stack):
            for w in stack.widget(1).children():
                if isinstance(w, QCheckBox):
                    yield w

        class TestChimeraObj:
            pass

        root = make_node("root", 0)
        child1 = make_node("child1", 1, resolution=1)
        child2 = make_node("child2", 2, resolution=10)
        root.add_children((child1, child2))

        mock_session = make_session()
        m1 = Model(mock_session, 'test')
        m1.rmf_hierarchy = root

        m1.rmf_features = [make_node("f1", 4), make_node("f2", 5)]
        m1.rmf_provenance = []
        m1._rmf_resolutions = set((1, 10))
        m1._selected_rmf_resolutions = set((1, None))
        mock_session.models.add((m1, ))
        r = src.tool.RMFViewer(mock_session, "RMF Viewer")
        tree1 = get_first_tree(r.model_stack.widget(0))
        res1b, res10b = list(get_buttons(r.model_stack.widget(0)))
        # Call "clicked" methods directly
        # Show/hide resolution 10
        cb = QCheckBox('foo')
        cb.setChecked(True)
        r._resolution_button_clicked(cb, tree1, 10)
        cb = QCheckBox('bar')
        cb.setChecked(False)
        r._resolution_button_clicked(cb, tree1, 10)
        tree1.selectAll()
        # Call indirectly via clicking each button
        for b in res1b, res10b:
            b.click()
コード例 #5
0
ファイル: test_tool.py プロジェクト: salilab/rmf_chimerax
    def test_feature_selected(self):
        """Test selecting features"""
        def get_first_tree(stack):
            for w in stack.widget(0).children():
                if isinstance(w, QTreeView):
                    self.assertIsInstance(w.model(),
                                          src.tool._RMFFeaturesModel)
                    return w
            raise ValueError("could not find tree")

        root = make_node("root", 0)
        mock_session = make_session()
        m1 = Model(mock_session, 'test')
        m1.rmf_hierarchy = root
        m1.rmf_features = [make_node("f1", 4), make_node("f2", 5)]
        m1.rmf_features[0].chimera_obj = 'test object'
        m1.rmf_provenance = []
        m1._rmf_resolutions = set((1.0, 10.0))
        m1._selected_rmf_resolutions = set((1.0, 10.0, None))
        mock_session.models.add((m1, ))
        r = src.tool.RMFViewer(mock_session, "RMF Viewer")
        tree1 = get_first_tree(r.model_stack.widget(0))
        r._select_feature(tree1)
        tree1.selectAll()