Example #1
0
def test_mouse_press_redirect_filter(qtbot: QtBot):
    a = EventTestWidget()
    b = EventTestWidget()
    qtbot.addWidget(a)
    qtbot.addWidget(b)

    b.installEventFilter(MousePressRedirectFilter(a))

    with qtbot.waitSignal(a.eventSuccess):
        qtbot.mousePress(b, QtCore.Qt.LeftButton)

    with qtbot.waitSignal(b.eventSuccess):
        qtbot.mousePress(b, QtCore.Qt.LeftButton)

    with qtbot.assertNotEmitted(a.eventSuccess):
        qtbot.keyPress(b, QtCore.Qt.Key_Enter)
Example #2
0
def test_tool_calculator_name(qtbot: QtBot):
    lineedit = CalculatorName("a", ["b"], ["abs"])
    qtbot.addWidget(lineedit)

    assert lineedit.hasAcceptableInput()
    lineedit.setText("")
    assert not lineedit.hasAcceptableInput()
    lineedit.setText("a a")
    assert not lineedit.hasAcceptableInput()
    lineedit.setText("a\ta")
    assert not lineedit.hasAcceptableInput()
    lineedit.setText("a\na")
    assert not lineedit.hasAcceptableInput()
    lineedit.setText("b")
    assert not lineedit.hasAcceptableInput()
    lineedit.setText("abs")
    assert not lineedit.hasAcceptableInput()
Example #3
0
def test_laser_widget_cursor(qtbot: QtBot):
    main = QtWidgets.QMainWindow()
    qtbot.addWidget(main)
    main.statusBar()  # Create bar
    viewspace = LaserViewSpace()
    main.setCentralWidget(viewspace)

    view = viewspace.activeView()
    view.addLaser(Laser(rand_data(["a"])))
    widget = view.activeWidget()

    # Cursor
    widget.updateCursorStatus(2.0, 2.0, 1.0)
    assert main.statusBar().currentMessage() == "2,2 [1]"

    widget.updateCursorStatus(1.0, 3.0, np.nan)
    assert main.statusBar().currentMessage() == "1,3 [nan]"
Example #4
0
 def test_create(self, qtbot: QtBot, ctrlr: api.AbstractController):
     """Test basic creation of the window."""
     gui = MinegaulerGUI(ctrlr, self.initial_state)
     qtbot.addWidget(gui)
     assert gui.windowTitle() == "Minegauler"
     assert not gui.windowIcon().isNull()
     # Check the menubar.
     exp_menus = ["Game", "Options", "Help"]
     assert [a.text() for a in gui.menuBar().actions()] == exp_menus
     # Check the main child widgets.
     assert type(gui._panel_widget) is _MockPanelWidget
     self._panel_class_mock.assert_called_once()
     assert type(gui._mf_widget) is _MockMinefieldWidget
     self._minefield_class_mock.assert_called_once()
     assert type(gui._name_entry_widget) is main_window._NameEntryBar
     gui.show()
     maybe_stop_for_interaction(qtbot)
def test_layer_name_dialog_03(qgis_app: QgsApplication, qgis_locale: QSettings, qgis_plugin: Dict[str, Any],
                              qgis_bot: QgisBot, qtbot: QtBot, qgis_new_project: None):
    """
    Tests the layer name dialog invalidates the input when the user enters an existing layer name

    :param qgis_app: QGIS application fixture
    :type qgis_app: QgsApplication
    :param qgis_locale: QT settings fixture with a user locale
    :type qgis_locale: QSettings
    :param qgis_plugin: QGIS loading and unloading fixture for plugins
    :type qgis_plugin: dict of Any
    :param qgis_bot: QGIS Bot to automate GUI tests
    :type qgis_bot: QgisBot
    :param qtbot: QT fixture to automate GUI tests
    :type qtbot: QtBot
    :param qgis_new_project: Ensures the project instance is clean
    :type qgis_new_project: None
    """
    assert type(qgis.utils.plugins['gisfire_spread_simulation']).__name__ == 'GisFIRESpreadSimulation'
    project: QgsProject = QgsProject()
    project_instance: QgsProject = project.instance()
    vl_a = QgsVectorLayer('Point', 'a', 'memory')
    vl_b = QgsVectorLayer('Point', 'b', 'memory')
    vl_c = QgsVectorLayer('Point', 'c', 'memory')
    project_instance.addMapLayer(vl_a)
    project_instance.addMapLayer(vl_b)
    project_instance.addMapLayer(vl_c)

    dialog: LayerNameDialog = LayerNameDialog(layers=project_instance.mapLayers())
    assert len(dialog._layer_names) == 3
    qtbot.addWidget(dialog)
    dialog.show()
    assert dialog.isVisible()
    assert dialog._lineedit_layer_name.palette().color(QPalette.WindowText) == QColor(dialog._text_color)
    qtbot.keyClicks(dialog._lineedit_layer_name, 'a')
    assert dialog._lineedit_layer_name.palette().color(QPalette.WindowText) == QColor('red')
    buttons: QDialogButtonBox = dialog._button_box
    button_ok: QPushButton = buttons.button(QDialogButtonBox.Ok)
    assert not button_ok.isEnabled()
    qtbot.keyClicks(dialog._lineedit_layer_name, 'f')
    assert dialog._lineedit_layer_name.palette().color(QPalette.WindowText) == QColor(dialog._text_color)
    assert button_ok.isEnabled()
    qtbot.mouseClick(button_ok, qgis.QtCore.Qt.LeftButton)
    assert not dialog.isVisible()
    assert dialog.layer_name == 'af'
Example #6
0
def test_laser_widget_actions(qtbot: QtBot):
    viewspace = LaserViewSpace()
    qtbot.addWidget(viewspace)
    viewspace.show()
    view = viewspace.activeView()
    view.addLaser(
        Laser(rand_data(["a", "b"]),
              info={"File Path": "/home/pewpew/real.npz"}))
    widget = view.activeWidget()

    dlg = widget.actionCalibration()
    dlg.close()
    dlg = widget.actionConfig()
    dlg.close()
    widget.actionDuplicate()
    widget.actionCopyImage()
    dlg = widget.actionExport()
    dlg.close()
    dlg = widget.actionSave()
    dlg.close()
    dlg = widget.actionStatistics()
    dlg.close()
    dlg = widget.actionSelectDialog()
    dlg.close()
    dlg = widget.actionColocal()
    dlg.close()

    widget.contextMenuEvent(
        QtGui.QContextMenuEvent(QtGui.QContextMenuEvent.Mouse,
                                QtCore.QPoint(0, 0)))

    # Test contextmenu
    widget.graphics.mask = np.ones((10, 10), dtype=bool)
    widget.contextMenuEvent(
        QtGui.QContextMenuEvent(
            QtGui.QContextMenuEvent.Mouse,
            widget.graphics.mapFromScene(QtCore.QPointF(0, 0)),
        ))

    widget.actionCopySelectionText()
    widget.actionCropSelection()
    dlg = widget.actionStatisticsSelection()
    dlg.close()
    dlg = widget.actionColocalSelection()
    dlg.close()
Example #7
0
    def mf_widget(self, qtbot: QtBot, ctrlr: api.AbstractController):
        widget = MinefieldWidget(None, ctrlr, self.state)
        qtbot.addWidget(widget)
        widget._set_cell_image = Mock(wraps=widget._set_cell_image)
        widget.at_risk_signal.connect(self.at_risk_signal_cb)
        widget.no_risk_signal.connect(self.no_risk_signal_cb)

        self._qtbot = qtbot
        self._mf_widget = widget
        self._mouse_buttons_down = Qt.NoButton
        self._mouse_down_pos = None

        yield widget

        self._qtbot = None
        self._mf_widget = None
        self._mouse_buttons_down = Qt.NoButton
        self._mouse_down_pos = None
Example #8
0
def test_info_dialog(qtbot: QtBot):
    dialog = dialogs.InformationDialog({"a": "A", "b": "B"})
    qtbot.addWidget(dialog)
    dialog.open()

    assert dialog.table.rowCount() == 3
    dialog.table.item(2, 0).setText("b")
    assert dialog.table.rowCount() == 4
    assert not dialog.isComplete()
    dialog.table.item(2, 0).setText("c")
    assert dialog.isComplete()
    dialog.table.item(2, 1).setText("C")
    assert dialog.table.rowCount() == 4

    with qtbot.waitSignal(dialog.infoChanged) as emit:
        dialog.accept()

    assert emit.args[0] == {"a": "A", "b": "B", "c": "C"}
Example #9
0
def test_merge_tool(qtbot: QtBot):
    viewspace = LaserViewSpace()
    qtbot.addWidget(viewspace)
    viewspace.show()
    view = viewspace.activeView()

    data = rand_data(["A", "B"])
    view.addLaser(Laser(data, info={"Name": "Laser 1", "File Path": "/test/laser1"}))
    data = rand_data(["B", "C"])
    view.addLaser(Laser(data, info={"Name": "Laser 2", "File Path": "/test/laser1"}))

    tool = MergeTool(view.activeWidget())
    view.addTab("Tool", tool)
    qtbot.waitExposed(tool)

    assert tool.list.count() == 1

    # Test load via dialog
    dlg = tool.addLaserDialog()
    assert dlg.comboBoxItems() == ["Laser 2"]
    dlg.accept()

    assert tool.list.count() == 2
    assert [row.offset() == (0, 0) for row in tool.list.rows]
    assert tool.list.rows[0].combo_element.currentText() == "A"
    assert tool.list.rows[1].combo_element.currentText() == "B"

    tool.action_align_horz.trigger()

    assert tool.list.rows[0].offset() == (0, 0)
    assert tool.list.rows[1].offset() == (0, 10)

    tool.action_align_vert.trigger()

    assert tool.list.rows[0].offset() == (0, 0)
    assert tool.list.rows[1].offset() == (10, 0)

    tool.action_align_auto.trigger()

    assert tool.list.rows[0].offset() == (0, 0)
    # Second image position unknown

    tool.apply()
Example #10
0
    def test_click(self, qtbot: QtBot):
        widget = ColormapEdit()
        qtbot.addWidget(widget)
        width = widget.width() - 20
        with qtbot.waitSignal(widget.double_clicked):
            qtbot.mouseDClick(widget,
                              Qt.LeftButton,
                              pos=QPoint(30,
                                         widget.height() // 2))

        pos = 20 / width
        widget.add_color(ColorPosition(pos, Color(125, 231, 21)))
        assert len(widget.colormap) == 1
        with qtbot.assertNotEmitted(widget.double_clicked):
            qtbot.mouseDClick(widget,
                              Qt.LeftButton,
                              pos=QPoint(30,
                                         widget.height() // 2))
        assert len(widget.colormap) == 0
Example #11
0
def test_laser_graphics_widgets(qtbot: QtBot):
    graphics = LaserGraphicsView(GraphicsOptions())
    qtbot.addWidget(graphics)

    x = np.random.random((10, 10))
    graphics.drawImage(x, QtCore.QRectF(0, 0, 100, 100), "x")

    qtbot.waitExposed(graphics)

    graphics.startRulerWidget()
    assert graphics.widget is not None
    event = QtGui.QMouseEvent(
        QtCore.QEvent.MouseButtonPress,
        graphics.mapFromScene(QtCore.QPointF(0, 0)),
        QtCore.Qt.LeftButton,
        QtCore.Qt.LeftButton,
        QtCore.Qt.NoModifier,
    )
    graphics.mousePressEvent(event)
    event.setLocalPos(graphics.mapFromScene(QtCore.QPointF(100, 100)))
    graphics.mouseMoveEvent(event)
    graphics.mouseReleaseEvent(event)

    assert np.isclose(graphics.widget.line.length(), 100 * np.sqrt(2))

    graphics.endWidget()
    assert graphics.widget is None

    graphics.startSliceWidget()
    assert graphics.widget is not None
    event = QtGui.QMouseEvent(
        QtCore.QEvent.MouseButtonPress,
        graphics.mapFromScene(QtCore.QPointF(5, 5)),
        QtCore.Qt.LeftButton,
        QtCore.Qt.LeftButton,
        QtCore.Qt.NoModifier,
    )
    graphics.mousePressEvent(event)
    event.setLocalPos(graphics.mapFromScene(QtCore.QPointF(95, 5)))
    graphics.mouseMoveEvent(event)
    graphics.mouseReleaseEvent(event)

    assert np.all(graphics.widget.sliced == x[0, :])
Example #12
0
def test_laser_view(qtbot: QtBot):
    viewspace = LaserViewSpace()
    qtbot.addWidget(viewspace)
    viewspace.show()
    view = viewspace.activeView()
    laser = view.addLaser(Laser(rand_data(["A1", "B2", "C3"])))
    qtbot.waitExposed(laser)

    view.tabs.setTabText(0, "newname")
    assert view.stack.widget(0).laserName() == "newname"

    view.contextMenuEvent(
        QtGui.QContextMenuEvent(QtGui.QContextMenuEvent.Mouse,
                                QtCore.QPoint(0, 0)))

    # Drop event
    drag_mime = QtCore.QMimeData()
    path = Path(__file__).parent.joinpath("data", "io", "npz", "test.npz")
    drag_mime.setUrls([QtCore.QUrl.fromLocalFile(str(path.resolve()))])
    drag_event = QtGui.QDragEnterEvent(
        QtCore.QPoint(0, 0),
        QtCore.Qt.CopyAction,
        drag_mime,
        QtCore.Qt.LeftButton,
        QtCore.Qt.NoModifier,
    )
    view.dragEnterEvent(drag_event)
    assert drag_event.isAccepted()
    drop_event = QtGui.QDropEvent(
        QtCore.QPoint(0, 0),
        QtCore.Qt.CopyAction,
        drag_mime,
        QtCore.Qt.LeftButton,
        QtCore.Qt.NoModifier,
    )
    with qtbot.waitSignal(view.numTabsChanged):
        view.dropEvent(drop_event)
    assert drop_event.isAccepted()
    assert len(view.widgets()) == 2

    dlg = view.actionOpen()
    dlg.show()
    dlg.close()
Example #13
0
def test_laser_view_space_apply_dialogs(qtbot: QtBot):
    viewspace = LaserViewSpace()
    qtbot.addWidget(viewspace)
    viewspace.show()

    qtbot.addWidget(viewspace)
    viewspace.views[0].addLaser(Laser(rand_data("A1")))
    viewspace.refresh()

    dlg = viewspace.configDialog()
    dlg.applyPressed.emit(dlg)
    dlg.close()
    dlg = viewspace.colortableRangeDialog()
    dlg.applyPressed.emit(dlg)
    dlg.close()
    dlg = viewspace.fontsizeDialog()
    dlg.intValueSelected.emit(5)
    dlg.close()

    assert viewspace.options.font.pointSize() == 5
Example #14
0
    def test_click(self, qtbot: QtBot):
        widget = ColormapEdit()
        qtbot.addWidget(widget)
        width = widget.width() - 20
        with qtbot.waitSignal(widget.double_clicked):
            qtbot.mouseDClick(widget,
                              Qt.LeftButton,
                              pos=QPoint(30,
                                         widget.height() // 2))

        pos = 20 / width
        widget.add_color(pos, Color(0.274, 0.02, 0.745))
        widget.add_color(pos / 2, Color(0.274, 0.2, 0.745))
        assert len(widget.colormap.colors) == 4
        with qtbot.assertNotEmitted(widget.double_clicked):
            qtbot.mouseDClick(widget,
                              Qt.LeftButton,
                              pos=QPoint(30,
                                         widget.height() // 2))
        assert len(widget.colormap.colors) == 3
Example #15
0
def test_wizard_import_path_widget_directory(qtbot: QtBot):
    widget = options.PathSelectWidget(path, "Agilent Batch", [".b"], "Directory")
    qtbot.addWidget(widget)
    assert not widget.isComplete()

    drag_mime = QtCore.QMimeData()
    drag_mime.setUrls(
        [
            QtCore.QUrl.fromLocalFile(
                str(path.joinpath("agilent", "test_ms.b").resolve())
            )
        ]
    )
    drag_event = QtGui.QDragEnterEvent(
        QtCore.QPoint(0, 0),
        QtCore.Qt.CopyAction,
        drag_mime,
        QtCore.Qt.LeftButton,
        QtCore.Qt.NoModifier,
    )
    widget.dragEnterEvent(drag_event)
    assert drag_event.isAccepted()
    drop_event = QtGui.QDropEvent(
        QtCore.QPoint(0, 0),
        QtCore.Qt.CopyAction,
        drag_mime,
        QtCore.Qt.LeftButton,
        QtCore.Qt.NoModifier,
    )
    with qtbot.waitSignal(widget.pathChanged):
        widget.dropEvent(drop_event)
    assert drop_event.isAccepted()

    assert Path(widget.lineedit_path.text()).samefile(
        path.joinpath("agilent", "test_ms.b")
    )
    assert widget.isComplete()

    dlg = widget.selectPath()
    assert dlg.fileMode() == QtWidgets.QFileDialog.Directory
    dlg.close()
Example #16
0
def test_wizard_import_text(qtbot: QtBot):
    wiz = ImportWizard(path.joinpath("textimage", "csv.csv"))
    qtbot.addWidget(wiz)
    wiz.show()
    qtbot.waitExposed(wiz)

    # Format
    page = wiz.currentPage()
    page.radio_text.setChecked(True)
    wiz.next()
    assert wiz.currentId() == wiz.page_text

    # Path and Options
    wiz.next()

    # Config
    page = wiz.currentPage()

    with qtbot.waitSignal(wiz.laserImported) as emit:
        wiz.accept()
        assert emit.args[0].shape == (5, 5)
Example #17
0
def test_wizard_srr_import_text(qtbot: QtBot):
    path = Path(__file__).parent.joinpath("data", "io")
    wiz = SRRImportWizard([
        path.joinpath("textimage", "srr1.csv"),
        path.joinpath("textimage", "srr2.csv"),
    ], )
    qtbot.addWidget(wiz)
    wiz.show()
    qtbot.waitExposed(wiz)

    # Format
    page = wiz.currentPage()
    page.radio_text.setChecked(True)
    wiz.next()
    assert wiz.currentId() == wiz.page_text

    wiz.next()

    with qtbot.waitSignal(wiz.laserImported) as emit:
        wiz.accept()
        assert len(emit.args[0].data) == 2
Example #18
0
def test_wizard_srr_config(qtbot: QtBot):
    path = Path(__file__).parent.joinpath("data", "io")
    wiz = SRRImportWizard(
        [
            path.joinpath("textimage", "csv.csv"),
            path.joinpath("textimage", "csv.csv"),
        ],
        config=Config(10.0, 40.0, 0.25),
    )
    qtbot.addWidget(wiz)
    wiz.show()
    qtbot.waitExposed(wiz)

    # Format
    page = wiz.currentPage()
    page.radio_text.setChecked(True)
    wiz.next()
    assert wiz.currentId() == wiz.page_text

    # Path and Options
    wiz.next()

    # Config
    page = wiz.currentPage()
    assert page.getNames() == ("_Element_", )
    assert not page.isComplete()
    page.lineedit_warmup.setText("0")
    assert page.isComplete()

    page.lineedit_warmup.setText("-1")
    assert not page.isComplete()

    page.lineedit_speed.setText("0")
    assert not page.isComplete()

    dlg = page.buttonNamesPressed()
    dlg.close()

    page.updateNames({"_Element_": "Pew"})
    assert page.getNames() == ("Pew", )
Example #19
0
def test_colorrange_dialog(qtbot: QtBot):
    default_range = (0.0, 1.0)
    ranges = {"A": (1.0, 2.0), "B": ("2%", 3.0)}

    dialog = dialogs.ColorRangeDialog(ranges, default_range, ["A", "B", "C"],
                                      "C")
    qtbot.addWidget(dialog)
    dialog.open()

    # Loads C as current, has default range
    assert dialog.combo_element.currentText() == "C"
    assert dialog.lineedit_min.text() == ""
    assert dialog.lineedit_max.text() == ""
    assert dialog.lineedit_min.placeholderText() == "0.0"
    assert dialog.lineedit_max.placeholderText() == "1.0"
    # Not added yet
    assert "C" not in dialog.ranges
    # Add and check is there
    dialog.lineedit_min.setText("1%")
    dialog.lineedit_max.setText("2%")
    dialog.combo_element.setCurrentText("B")  # Update C
    assert dialog.ranges["C"] == ("1%", "2%")

    assert dialog.lineedit_min.text() == "2%"
    assert dialog.lineedit_max.text() == "3.0"

    dialog.combo_element.setCurrentText("A")
    assert dialog.lineedit_min.text() == "1.0"
    assert dialog.lineedit_max.text() == "2.0"

    dialog.check_all.click()
    dialog.lineedit_min.setText("1.0")
    dialog.lineedit_max.setText("2.0")
    # dialog.combo_element.setCurrentText("C")

    dialog.apply()

    assert dialog.default_range == (1.0, 2.0)
    assert dialog.ranges == {}
Example #20
0
def test_wizard_import_thermo(qtbot: QtBot):
    wiz = ImportWizard(path.joinpath("thermo", "icap_columns.csv"))
    qtbot.addWidget(wiz)
    wiz.show()
    qtbot.waitExposed(wiz)

    # Format
    page = wiz.currentPage()
    page.radio_thermo.setChecked(True)
    wiz.next()
    assert wiz.currentId() == wiz.page_thermo

    # Path and Options
    wiz.next()

    # Config
    page = wiz.currentPage()
    assert page.lineedit_scantime.text() == "1.0049"

    with qtbot.waitSignal(wiz.laserImported) as emit:
        wiz.accept()
        assert emit.args[0].shape == (5, 5)
Example #21
0
def test_wizard_import_agilent(qtbot: QtBot):
    wiz = ImportWizard(path.joinpath("agilent", "test_ms.b"))
    qtbot.addWidget(wiz)
    wiz.show()
    qtbot.waitExposed(wiz)

    # Format
    page = wiz.currentPage()
    page.radio_agilent.setChecked(True)
    wiz.next()
    assert wiz.currentId() == wiz.page_agilent

    # Path and Options
    wiz.next()

    # Config
    page = wiz.currentPage()
    assert page.lineedit_scantime.text() == "0.5"

    with qtbot.waitSignal(wiz.laserImported) as emit:
        wiz.accept()
        assert emit.args[0].shape == (5, 5)
Example #22
0
def test_stats_dialog(qtbot: QtBot):
    x = np.array(np.random.random([10, 10]), dtype=[("a", float)])
    x[0, :] = np.nan
    m = np.full(x.shape, True, dtype=bool)

    dialog = dialogs.StatsDialog(x, m, {"a": "u"}, "a", (1.0, 1.0))
    qtbot.addWidget(dialog)
    dialog.open()

    assert dialog.label_area.text().endswith("90 μm²")
    dialog.pixel_size = (1e3, 1e3)
    dialog.updateStats()
    assert dialog.label_area.text().endswith("90 mm²")
    dialog.pixel_size = (1e5, 1e5)
    dialog.updateStats()
    assert dialog.label_area.text().endswith("9000 cm²")

    dialog.contextMenuEvent(
        QtGui.QContextMenuEvent(QtGui.QContextMenuEvent.Mouse,
                                QtCore.QPoint(0, 0)))

    dialog.copyToClipboard()
Example #23
0
def test_tool_filter(qtbot: QtBot):
    viewspace = LaserViewSpace()
    qtbot.addWidget(viewspace)
    viewspace.show()
    view = viewspace.activeView()
    view.addLaser(Laser(rand_data(["a"])))
    tool = FilteringTool(view.activeWidget())
    view.addTab("Tool", tool)
    qtbot.waitExposed(tool)

    tool.combo_filter.setCurrentText("Mean")
    tool.combo_filter.activated.emit(0)
    tool.lineedit_fparams[0].setText("3.0")
    tool.lineedit_fparams[1].setText("3.0")
    tool.lineedit_fparams[0].editingFinished.emit()
    assert np.all(tool.fparams == [3.0, 3.0])
    assert tool.isComplete()

    tool.lineedit_fparams[0].setText("5.0")
    tool.lineedit_fparams[0].editingFinished.emit()
    assert np.all(tool.fparams == [5.0, 3.0])
    assert tool.isComplete()

    tool.combo_filter.setCurrentText("Median")
    tool.combo_filter.activated.emit(0)
    assert np.all(tool.fparams == [5.0, 3.0])
    assert tool.isComplete()

    tool.lineedit_fparams[0].setText("4.0")
    tool.lineedit_fparams[0].editingFinished.emit()
    assert not tool.isComplete()

    tool.combo_filter.setCurrentText("Mean")
    tool.combo_filter.activated.emit(0)
    assert np.all(tool.fparams == [5.0, 3.0])
    assert tool.isComplete()

    tool.apply()
Example #24
0
def test_wizard_import_path_widget_multiple_file(qtbot: QtBot):
    widget = options.MultiplePathSelectWidget([], "Numpy Archive", [".npz"], "File")
    qtbot.addWidget(widget)
    assert not widget.isComplete()

    widget.addPath(path.joinpath("npz", "test.npz"))
    assert Path(widget.paths[0]).samefile(path.joinpath("npz", "test.npz"))
    assert len(widget.paths) == 1
    assert widget.isComplete()

    widget.addPaths([path.joinpath("npz", "test.npz")])
    assert len(widget.paths) == 2

    widget.addPathsInDirectory(path.joinpath("npz"))
    assert len(widget.paths) == 3

    dlg = widget.selectMultiplePaths()
    assert dlg.fileMode() == QtWidgets.QFileDialog.ExistingFiles
    dlg.close()

    dlg = widget.selectAllInDirectory()
    assert dlg.fileMode() == QtWidgets.QFileDialog.Directory
    dlg.close()
Example #25
0
def test_name_edit_dialog(qtbot: QtBot):
    dialog = dialogs.NameEditDialog(["a", "b"], allow_remove=True)
    qtbot.addWidget(dialog)
    dialog.open()

    dialog.addName("c")
    dialog.addNames(["d", "e"])

    dialog.list.item(0).setText("A")
    dialog.list.item(1).setCheckState(QtCore.Qt.Unchecked)

    assert np.all([
        dialog.list.item(i).data(dialog.originalNameRole)
        for i in range(dialog.list.count())
    ] == ["a", "b", "c", "d", "e"], )
    assert np.all([
        dialog.list.item(i).text() for i in range(dialog.list.count())
    ] == ["A", "b", "c", "d", "e"], )

    with qtbot.waitSignal(dialog.namesSelected) as emit:
        dialog.accept()

    assert np.all(list(emit.args[0].keys()) == ["a", "c", "d", "e"])
Example #26
0
def test_config_dialog_krisskross(qtbot: QtBot):
    dialog = dialogs.ConfigDialog(SRRConfig())
    qtbot.addWidget(dialog)
    dialog.open()

    assert hasattr(dialog, "lineedit_warmup")
    assert hasattr(dialog, "spinbox_offsets")

    qtbot.mouseClick(dialog.spinbox_offsets, QtCore.Qt.LeftButton)
    dialog.lineedit_warmup.setText("7.5")
    dialog.spinbox_offsets.setValue(3)
    dialog.updateConfig()

    assert dialog.config.warmup == 7.5
    assert dialog.config._subpixel_size == 3

    assert dialog.isComplete()
    dialog.lineedit_warmup.setText("-1")
    assert not dialog.isComplete()

    dialog.apply()
    dialog.check_all.setChecked(True)
    dialog.apply()
def test_layer_name_dialog_02(qgis_app: QgsApplication, qgis_locale: QSettings, qgis_plugin: Dict[str, Any],
                              qgis_bot: QgisBot, qtbot: QtBot, qgis_new_project: None):
    """
    Tests the layer name dialog is correctly shown and destroyed with an Ok action

    :param qgis_app: QGIS application fixture
    :type qgis_app: QgsApplication
    :param qgis_locale: QT settings fixture with a user locale
    :type qgis_locale: QSettings
    :param qgis_plugin: QGIS loading and unloading fixture for plugins
    :type qgis_plugin: dict of Any
    :param qgis_bot: QGIS Bot to automate GUI tests
    :type qgis_bot: QgisBot
    :param qtbot: QT fixture to automate GUI tests
    :type qtbot: QtBot
    :param qgis_new_project: Ensures the project instance is clean
    :type qgis_new_project: None
    """
    assert type(qgis.utils.plugins['gisfire_spread_simulation']).__name__ == 'GisFIRESpreadSimulation'
    project: QgsProject = QgsProject()
    project_instance: QgsProject = project.instance()
    vl_a = QgsVectorLayer('Point', 'a', 'memory')
    vl_b = QgsVectorLayer('Point', 'b', 'memory')
    vl_c = QgsVectorLayer('Point', 'c', 'memory')
    project_instance.addMapLayer(vl_a)
    project_instance.addMapLayer(vl_b)
    project_instance.addMapLayer(vl_c)

    dialog: LayerNameDialog = LayerNameDialog(layers=project_instance.mapLayers())
    assert len(dialog._layer_names) == 3
    qtbot.addWidget(dialog)
    dialog.show()
    assert dialog.isVisible()
    buttons: QDialogButtonBox = dialog._button_box
    button_ok: QPushButton = buttons.button(QDialogButtonBox.Ok)
    qtbot.mouseClick(button_ok, qgis.QtCore.Qt.LeftButton)
    assert not dialog.isVisible()
Example #28
0
def test_ruler_widget_item(qtbot: QtBot):
    window = QtWidgets.QMainWindow()
    qtbot.addWidget(window)

    scene = QtWidgets.QGraphicsScene(0, 0, 100, 100)
    view = QtWidgets.QGraphicsView(scene)
    window.setCentralWidget(view)

    img = ScaledImageItem.fromArray(np.random.random((10, 10)),
                                    QtCore.QRectF(50, 50, 50, 50))
    item = RulerWidgetItem(img)
    scene.addItem(item)
    item.mousePressEvent(
        FakeSceneMouseEvent(QtCore.Qt.LeftButton, QtCore.QPointF(50, 50)))
    item.mouseMoveEvent(
        FakeSceneMouseEvent(QtCore.Qt.LeftButton, QtCore.QPointF(100, 100)))
    item.mouseReleaseEvent(
        FakeSceneMouseEvent(QtCore.Qt.LeftButton, QtCore.QPointF(100, 100)))

    assert item.line.length() == np.sqrt(50**2 + 50**2)

    # Draw everything
    window.show()
    qtbot.waitExposed(window)
Example #29
0
def test_main_window_actions_empty(qtbot: QtBot):
    window = MainWindow()
    qtbot.addWidget(window)

    assert not window.action_export_all.isEnabled()
    assert not window.action_tool_calculator.isEnabled()
    assert not window.action_tool_drift.isEnabled()
    assert not window.action_tool_filter.isEnabled()
    assert not window.action_tool_standards.isEnabled()
    assert not window.action_tool_overlay.isEnabled()

    dlg = window.actionOpen()
    dlg.close()
    dlg = window.actionWizardImport()
    dlg.close()
    dlg = window.actionWizardSRR()
    dlg.close()
    dlg = window.actionAbout()
    dlg.close()

    window.button_status_index.toggle()
    assert window.viewspace.options.units == "index"
    window.button_status_um.toggle()
    assert window.viewspace.options.units == "μm"
Example #30
0
def test_config_dialog(qtbot: QtBot):
    config = Config()

    dialog = dialogs.ConfigDialog(config)
    qtbot.addWidget(dialog)
    dialog.open()

    assert not hasattr(dialog, "lineedit_warmup")
    assert not hasattr(dialog, "spinbox_offsets")
    # Check the texts are correct
    assert dialog.lineedit_spotsize.text() == str(config.spotsize)
    assert dialog.lineedit_speed.text() == str(config.speed)
    assert dialog.lineedit_scantime.text() == str(config.scantime)
    dialog.lineedit_spotsize.setText("1")
    dialog.lineedit_speed.setText("2.")
    dialog.lineedit_scantime.setText("3.0000")
    dialog.updateConfig()
    # Check it updated
    assert dialog.config.spotsize == 1.0
    assert dialog.config.speed == 2.0
    assert dialog.config.scantime == 3.0

    assert dialog.isComplete()
    dialog.lineedit_scantime.setText("-1")
    assert not dialog.isComplete()
    dialog.lineedit_speed.setText("-1")
    assert not dialog.isComplete()
    dialog.lineedit_spotsize.setText("-1")
    assert not dialog.isComplete()

    # Just run code as can't test clipboard
    dialog.copyToClipboard()

    dialog.apply()
    dialog.check_all.setChecked(True)
    dialog.apply()