63 lines
2.1 KiB
Python
63 lines
2.1 KiB
Python
"""
|
|
Backend-loading machinery tests, using variations on the template backend.
|
|
"""
|
|
|
|
import sys
|
|
from types import SimpleNamespace
|
|
from unittest.mock import MagicMock
|
|
|
|
import matplotlib as mpl
|
|
from matplotlib import pyplot as plt
|
|
from matplotlib.backends import backend_template
|
|
from matplotlib.backends.backend_template import (
|
|
FigureCanvasTemplate, FigureManagerTemplate)
|
|
|
|
|
|
def test_load_template():
|
|
mpl.use("template")
|
|
assert type(plt.figure().canvas) == FigureCanvasTemplate
|
|
|
|
|
|
def test_load_old_api(monkeypatch):
|
|
mpl_test_backend = SimpleNamespace(**vars(backend_template))
|
|
mpl_test_backend.new_figure_manager = (
|
|
lambda num, *args, FigureClass=mpl.figure.Figure, **kwargs:
|
|
FigureManagerTemplate(
|
|
FigureCanvasTemplate(FigureClass(*args, **kwargs)), num))
|
|
monkeypatch.setitem(sys.modules, "mpl_test_backend", mpl_test_backend)
|
|
mpl.use("module://mpl_test_backend")
|
|
assert type(plt.figure().canvas) == FigureCanvasTemplate
|
|
plt.draw_if_interactive()
|
|
|
|
|
|
def test_show(monkeypatch):
|
|
mpl_test_backend = SimpleNamespace(**vars(backend_template))
|
|
mock_show = MagicMock()
|
|
monkeypatch.setattr(
|
|
mpl_test_backend.FigureManagerTemplate, "pyplot_show", mock_show)
|
|
monkeypatch.setitem(sys.modules, "mpl_test_backend", mpl_test_backend)
|
|
mpl.use("module://mpl_test_backend")
|
|
plt.show()
|
|
mock_show.assert_called_with()
|
|
|
|
|
|
def test_show_old_global_api(monkeypatch):
|
|
mpl_test_backend = SimpleNamespace(**vars(backend_template))
|
|
mock_show = MagicMock()
|
|
monkeypatch.setattr(mpl_test_backend, "show", mock_show, raising=False)
|
|
monkeypatch.setitem(sys.modules, "mpl_test_backend", mpl_test_backend)
|
|
mpl.use("module://mpl_test_backend")
|
|
plt.show()
|
|
mock_show.assert_called_with()
|
|
|
|
|
|
def test_load_case_sensitive(monkeypatch):
|
|
mpl_test_backend = SimpleNamespace(**vars(backend_template))
|
|
mock_show = MagicMock()
|
|
monkeypatch.setattr(
|
|
mpl_test_backend.FigureManagerTemplate, "pyplot_show", mock_show)
|
|
monkeypatch.setitem(sys.modules, "mpl_Test_Backend", mpl_test_backend)
|
|
mpl.use("module://mpl_Test_Backend")
|
|
plt.show()
|
|
mock_show.assert_called_with()
|