File: test_matplotlibwidget.py

package info (click to toggle)
python-pyqtgraph 0.13.7-6
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 8,072 kB
  • sloc: python: 54,043; makefile: 127; ansic: 40; sh: 2
file content (101 lines) | stat: -rw-r--r-- 2,766 bytes parent folder | download | duplicates (2)
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)