1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101
|
"""
MatplotlibWidget test:
Tests the creation of a MatplotlibWidget.
"""
from importlib.metadata import version
import numpy as np
import pytest
import pyqtgraph as pg
from pyqtgraph.Qt import QtWidgets
pytest.importorskip("matplotlib")
# see https://github.com/matplotlib/matplotlib/pull/24172
if (
pg.Qt.QT_LIB == "PySide6"
and tuple(map(int, pg.Qt.PySide6.__version__.split("."))) > (6, 4)
and tuple(map(int, version("matplotlib").split("."))) < (3, 6, 2)
):
pytest.skip(
"matplotlib + PySide6 6.4 bug",
allow_module_level=True
)
from pyqtgraph.widgets.MatplotlibWidget import MatplotlibWidget
pg.mkQApp()
default_parent = None
default_figsize = MatplotlibWidget.figsize_default
default_dpi = MatplotlibWidget.dpi_default
def assert_widget_fields(mplw, parent, figsize, dpi):
assert mplw.parent() == parent
assert np.allclose(mplw.getFigure().get_size_inches(), figsize)
assert mplw.getFigure().dpi == dpi
def test_init_with_qwidget_arguments():
"""
Ensures providing only the parent argument to the constructor properly
intializes the widget to match the QWidget constructor prototype.
"""
win = QtWidgets.QMainWindow()
mplw = MatplotlibWidget(win)
assert_widget_fields(mplw, win, default_figsize, default_dpi)
def test_init_with_matplotlib_arguments():
"""
Tests the contructor that sets variables associated with Matplotlib and
abstracts away any details about the underlying QWidget parent class.
"""
figsize = (1.0, 3.0)
dpi = 256
mplw = MatplotlibWidget(figsize, dpi)
assert_widget_fields(mplw, default_parent, figsize, dpi)
def test_init_with_no_arguments():
mplw = MatplotlibWidget()
assert_widget_fields(mplw, default_parent, default_figsize, default_dpi)
def test_init_sanity():
"""
Tests to ensure the constructor behaves as expected.
"""
parent = QtWidgets.QMainWindow()
figsize = (1.0, 4.0)
dpi = 256
# These tests will not work if these two assertions do not hold.
assert figsize != default_figsize
assert dpi != default_dpi
mplw = MatplotlibWidget(parent, figsize=figsize)
assert_widget_fields(mplw, parent, figsize, default_dpi)
mplw = MatplotlibWidget(parent, dpi=dpi)
assert_widget_fields(mplw, parent, default_figsize, dpi)
mplw = MatplotlibWidget(parent, figsize, dpi)
assert_widget_fields(mplw, parent, figsize, dpi)
mplw = MatplotlibWidget(figsize, dpi)
assert_widget_fields(mplw, default_parent, figsize, dpi)
mplw = MatplotlibWidget(figsize, dpi, parent)
assert_widget_fields(mplw, parent, figsize, dpi)
mplw = MatplotlibWidget(dpi=dpi, parent=parent)
assert_widget_fields(mplw, parent, default_figsize, dpi)
|