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, ))
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()
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)
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()
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()