def test_pandas_dateoffset_view(): """ Test that pandas ``DateOffset`` objs can be viewied in CollectionsEditor. Regression test for spyder-ide/spyder#6729. """ test_dateoffset = pandas.DateOffset() col_editor = CollectionsEditor(None) col_editor.setup(test_dateoffset) col_editor.show() assert col_editor.get_value() col_editor.accept()
def test_edit_nonsettable_objects(qtbot, nonsettable_objects_data): """ Test that errors trying to edit attributes in ColEdit are handled properly. Integration regression test for issues spyder-ide/spyder#6727 and spyder-ide/spyder#6728. """ for test_obj, expected_obj, keys in nonsettable_objects_data: col_editor = CollectionsEditor(None) col_editor.setup(test_obj) col_editor.show() qtbot.waitForWindowShown(col_editor) view = col_editor.widget.editor indicies = [view.source_model.get_index_from_key(key) for key in keys] for _ in range(3): qtbot.keyClick(view, Qt.Key_Right) last_row = -1 rows_to_test = [index.row() for index in indicies] for row in rows_to_test: for _ in range(row - last_row - 1): qtbot.keyClick(view, Qt.Key_Down) qtbot.keyClick(view, Qt.Key_Space) qtbot.keyClick(view.focusWidget(), Qt.Key_Backspace) qtbot.keyClicks(view.focusWidget(), "2") qtbot.keyClick(view.focusWidget(), Qt.Key_Down) last_row = row qtbot.wait(100) # Due to numpy's deliberate breakage of __eq__ comparison assert all([ key == "_typ" or (getattr(col_editor.get_value(), key) == getattr( expected_obj, key)) for key in keys ]) col_editor.accept() qtbot.wait(200) # Same reason as above assert all([ key == "_typ" or (getattr(col_editor.get_value(), key) == getattr( expected_obj, key)) for key in keys ]) if getattr(test_obj, "_typ", None) is None: keys.remove("_typ") assert all([ getattr(test_obj, key) == getattr(expected_obj, key) for key in keys ])
def test_xml_dom_element_view(): """ Test that XML DOM ``Element``s are able to be viewied in CollectionsEditor. Regression test for spyder-ide/spyder#5642. """ xml_path = path.join(LOCATION, 'dom_element_test.xml') with open(xml_path) as xml_file: xml_data = xml_file.read() xml_content = parseString(xml_data) xml_element = xml_content.getElementsByTagName("note")[0] col_editor = CollectionsEditor(None) col_editor.setup(xml_element) col_editor.show() assert col_editor.get_value() col_editor.accept()
def test_collectionseditor_when_clicking_on_header_and_large_rows(qtbot): """ Test that sorting works when clicking in its header and there's a large number of rows. """ li = [1] * 10000 editor = CollectionsEditor() editor.setup(li) editor.show() # Perform the sorting. It should be done quite quickly because # there's a very small number of rows in display. view = editor.widget.editor header = view.horizontalHeader() with qtbot.waitSignal(header.sectionClicked, timeout=200): qtbot.mouseClick(header.viewport(), Qt.LeftButton, pos=QPoint(1, 1)) # Assert data was sorted correctly. assert data(view.model, 0, 0) == 9999 editor.accept()