Skip to content

Commit b40a67c

Browse files
story645rcomer
andcommitted
test that table uses repr and doesn't try to convert unitized data
Co-authored-by: Elliott Sales de Andrade <quantum.analyst@gmail.com> Co-authored-by: Ruth Comer <10599679+rcomer@users.noreply.github.com>
1 parent f0c4c41 commit b40a67c

File tree

1 file changed

+35
-0
lines changed

1 file changed

+35
-0
lines changed

lib/matplotlib/tests/test_table.py

+35
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
import datetime
2+
from unittest.mock import Mock
3+
14
import numpy as np
25
import pytest
36

@@ -7,6 +10,7 @@
710
from matplotlib.table import CustomCell, Table
811
from matplotlib.testing.decorators import image_comparison, check_figures_equal
912
from matplotlib.transforms import Bbox
13+
import matplotlib.units as munits
1014

1115

1216
def test_non_square():
@@ -229,3 +233,34 @@ def test_table_bbox(fig_test, fig_ref):
229233
loc='center',
230234
bbox=Bbox.from_extents(0.1, 0.2, 0.9, 0.8)
231235
)
236+
237+
238+
@check_figures_equal(extensions=['png'])
239+
def test_table_unit(fig_test, fig_ref):
240+
# test that table doesn't participate in unit machinery, instead uses repr/str
241+
242+
class FakeUnit:
243+
def __init__(self, thing):
244+
pass
245+
def __repr__(self):
246+
return "Hello"
247+
248+
fake_convertor = munits.ConversionInterface()
249+
# v, u, a = value, unit, axis
250+
fake_convertor.convert = Mock(side_effect=lambda v, u, a: 0)
251+
# not used, here for completeness
252+
fake_convertor.default_units = Mock(side_effect=lambda v, a: None)
253+
fake_convertor.axisinfo = Mock(side_effect=lambda u, a: munits.AxisInfo())
254+
255+
munits.registry[FakeUnit] = fake_convertor
256+
257+
data = [[FakeUnit("yellow"), FakeUnit(42)],
258+
[FakeUnit(datetime.datetime(1968, 8, 1)), FakeUnit(True)]]
259+
260+
fig_test.subplots().table(data)
261+
fig_ref.subplots().table([["Hello", "Hello"], ["Hello", "Hello"]])
262+
fig_test.canvas.draw()
263+
fake_convertor.convert.assert_not_called()
264+
265+
munits.registry.pop(FakeUnit)
266+
assert not munits.registry.get_converter(FakeUnit)

0 commit comments

Comments
 (0)