def setup_arrayeditor(qbot, data, title="", xlabels=None, ylabels=None): """Setups an arrayeditor.""" dlg = ArrayEditor() dlg.setup_and_check(data, title, xlabels=xlabels, ylabels=ylabels) dlg.show() qbot.addWidget(dlg) return dlg
def launch_arrayeditor(data, title="", xlabels=None, ylabels=None): """Helper routine to launch an arrayeditor and return its result""" dlg = ArrayEditor() assert dlg.setup_and_check(data, title, xlabels=xlabels, ylabels=ylabels) dlg.show() dlg.accept() # trigger slot connected to OK button return dlg.get_value()
def test_arrayeditor_edit_overflow(qtbot, monkeypatch): """ Test that entry of an overflowing integer is caught and handled properly. Integration regression test for #6114 . """ MockQMessageBox = Mock() attr_to_patch = 'spyder.widgets.variableexplorer.arrayeditor.QMessageBox' monkeypatch.setattr(attr_to_patch, MockQMessageBox) # Numpy doesn't raise the OverflowError for ints smaller than 64 bits if not os.name == 'nt': int32_bit_exponent = 66 else: int32_bit_exponent = 34 test_parameters = [(1, np.int32, int32_bit_exponent), (2, np.int64, 66)] expected_array = np.array([5, 6, 7, 3, 4]) for idx, int_type, bit_exponent in test_parameters: test_array = np.arange(0, 5).astype(int_type) dialog = ArrayEditor() assert dialog.setup_and_check(test_array, '1D array', xlabels=None, ylabels=None) dialog.show() qtbot.waitForWindowShown(dialog) view = dialog.arraywidget.view qtbot.keyClick(view, Qt.Key_Down) qtbot.keyClick(view, Qt.Key_Up) qtbot.keyClicks(view, '5') qtbot.keyClick(view, Qt.Key_Down) qtbot.keyClick(view, Qt.Key_Space) qtbot.keyClicks(view.focusWidget(), str(int(2**bit_exponent))) qtbot.keyClick(view.focusWidget(), Qt.Key_Down) MockQMessageBox.critical.assert_called_with(ANY, "Error", ANY) assert MockQMessageBox.critical.call_count == idx qtbot.keyClicks(view, '7') qtbot.keyClick(view, Qt.Key_Up) qtbot.keyClicks(view, '6') qtbot.keyClick(view, Qt.Key_Down) qtbot.wait(200) dialog.accept() qtbot.wait(500) assert np.sum( expected_array == dialog.get_value()) == len(expected_array)
def test_arrayeditor_edit_1d_array(qtbot): exp_arr = np.array([1, 0, 2, 3, 4]) arr = np.arange(0, 5) dlg = ArrayEditor() assert dlg.setup_and_check(arr, '1D array', xlabels=None, ylabels=None) dlg.show() qtbot.waitForWindowShown(dlg) view = dlg.arraywidget.view qtbot.keyPress(view, Qt.Key_Down) qtbot.keyPress(view, Qt.Key_Up) qtbot.keyClicks(view, '1') qtbot.keyPress(view, Qt.Key_Down) qtbot.keyClicks(view, '0') qtbot.keyPress(view, Qt.Key_Down) qtbot.keyPress(view, Qt.Key_Return) assert np.sum(exp_arr == dlg.get_value()) == 5
def test_arrayeditor_edit_2d_array(qtbot): arr = np.ones((3, 3)) diff_arr = arr.copy() dlg = ArrayEditor() assert dlg.setup_and_check(arr, '2D array', xlabels=None, ylabels=None) dlg.show() qtbot.waitForWindowShown(dlg) view = dlg.arraywidget.view qtbot.keyPress(view, Qt.Key_Down) qtbot.keyPress(view, Qt.Key_Right) qtbot.keyClicks(view, '3') qtbot.keyPress(view, Qt.Key_Down) qtbot.keyPress(view, Qt.Key_Right) qtbot.keyClicks(view, '0') qtbot.keyPress(view, Qt.Key_Left) qtbot.keyPress(view, Qt.Key_Return) assert np.sum(diff_arr != dlg.get_value()) == 2
def test_arrayeditor_edit_overflow(qtbot, monkeypatch): """Int. test #6114: entry of an overflow int caught and handled properly""" MockQMessageBox = Mock() attr_to_patch = 'spyder.widgets.variableexplorer.arrayeditor.QMessageBox' monkeypatch.setattr(attr_to_patch, MockQMessageBox) # Numpy doesn't raise the OverflowError for ints smaller than 64 bits if platform.startswith('linux'): int32_bit_exponent = 66 else: int32_bit_exponent = 34 test_parameters = [(1, np.int32, int32_bit_exponent), (2, np.int64, 66)] expected_array = np.array([5, 6, 7, 3, 4]) for idx, int_type, bit_exponent in test_parameters: test_array = np.arange(0, 5).astype(int_type) dialog = ArrayEditor() assert dialog.setup_and_check(test_array, '1D array', xlabels=None, ylabels=None) dialog.show() qtbot.waitForWindowShown(dialog) view = dialog.arraywidget.view qtbot.keyPress(view, Qt.Key_Down) qtbot.keyPress(view, Qt.Key_Up) qtbot.keyClicks(view, '5') qtbot.keyPress(view, Qt.Key_Down) qtbot.keyPress(view, Qt.Key_Space) qtbot.keyClicks(view.focusWidget(), str(int(2 ** bit_exponent))) qtbot.keyPress(view.focusWidget(), Qt.Key_Down) MockQMessageBox.critical.assert_called_with(ANY, "Error", ANY) assert MockQMessageBox.critical.call_count == idx qtbot.keyClicks(view, '7') qtbot.keyPress(view, Qt.Key_Up) qtbot.keyClicks(view, '6') qtbot.keyPress(view, Qt.Key_Down) qtbot.keyPress(view, Qt.Key_Return) assert np.sum(expected_array == dialog.get_value()) == len(expected_array)