1
+ import datetime
2
+ from unittest .mock import Mock
3
+
1
4
import numpy as np
2
5
import pytest
3
6
7
10
from matplotlib .table import CustomCell , Table
8
11
from matplotlib .testing .decorators import image_comparison , check_figures_equal
9
12
from matplotlib .transforms import Bbox
13
+ import matplotlib .units as munits
10
14
11
15
12
16
def test_non_square ():
@@ -229,3 +233,34 @@ def test_table_bbox(fig_test, fig_ref):
229
233
loc = 'center' ,
230
234
bbox = Bbox .from_extents (0.1 , 0.2 , 0.9 , 0.8 )
231
235
)
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