41 lines
1.4 KiB
Python
41 lines
1.4 KiB
Python
import pytest
|
|
import numpy as np
|
|
from matplotlib import pyplot as plt
|
|
|
|
|
|
@pytest.mark.backend('TkAgg', skip_on_importerror=True)
|
|
def test_blit():
|
|
from matplotlib.backends import _tkagg
|
|
def evil_blit(photoimage, aggimage, offsets, bboxptr):
|
|
data = np.asarray(aggimage)
|
|
height, width = data.shape[:2]
|
|
dataptr = (height, width, data.ctypes.data)
|
|
_tkagg.blit(
|
|
photoimage.tk.interpaddr(), str(photoimage), dataptr, offsets,
|
|
bboxptr)
|
|
|
|
fig, ax = plt.subplots()
|
|
for bad_boxes in ((-1, 2, 0, 2),
|
|
(2, 0, 0, 2),
|
|
(1, 6, 0, 2),
|
|
(0, 2, -1, 2),
|
|
(0, 2, 2, 0),
|
|
(0, 2, 1, 6)):
|
|
with pytest.raises(ValueError):
|
|
evil_blit(fig.canvas._tkphoto,
|
|
np.ones((4, 4, 4)),
|
|
(0, 1, 2, 3),
|
|
bad_boxes)
|
|
|
|
|
|
@pytest.mark.backend('TkAgg', skip_on_importerror=True)
|
|
def test_missing_back_button():
|
|
from matplotlib.backends.backend_tkagg import NavigationToolbar2Tk
|
|
class Toolbar(NavigationToolbar2Tk):
|
|
# only display the buttons we need
|
|
toolitems = [t for t in NavigationToolbar2Tk.toolitems if
|
|
t[0] in ('Home', 'Pan', 'Zoom')]
|
|
|
|
fig = plt.figure()
|
|
# this should not raise
|
|
Toolbar(fig.canvas, fig.canvas.manager.window)
|