@@ -364,3 +364,59 @@ def test_mathtext_to_png(tmpdir):
364364 mt = mathtext .MathTextParser ('bitmap' )
365365 mt .to_png (str (tmpdir .join ('example.png' )), '$x^2$' )
366366 mt .to_png (io .BytesIO (), '$x^2$' )
367+
368+
369+ def test_mathtext_fontset ():
370+ #This is my first time doing this kinds of tests, so I am not sure if I am
371+ #doing it the right way, here's my plan for this testing:
372+ #
373+ #1) Create two figures, one without my implementation
374+ # (should produce 2 texts with the same font)
375+ # and one with (should create two texts with different fonts)
376+ #2) Save the figures on Disk
377+ #3) Load the figures and compare them, if they are equal, the test fails
378+ #4) Delete the figures
379+ #
380+ # I am making the test a bit slower but avoiding the burden of adding
381+ # more figures to the repo. On my computer at least, the time for this
382+ # test was of the order of a few seconds.
383+
384+ plt .rcParams ["mathtext.fontset" ] = "dejavusans"
385+
386+ #figure 1 setup
387+ #this figure IS NOT using the 'fontset' argument, therefore,
388+ #the font should be equal to the font set in rcParams["mathtext.fontset"]
389+ f1 , ax1 = plt .subplots (figsize = (12 ,10 ))
390+ ax1 .plot (range (11 ),color = "0.9" )
391+ ax1 .text (0.2 ,9 ,r"$\mathit{This\ text\ should\ have\ a\ one\ font} $" ,
392+ size = 18 )
393+
394+ ax1 .text (0.2 ,8 ,r"$\mathit{This\ text\ should\ have\ another} $" ,
395+ size = 18 )
396+
397+ #figure 2 setup
398+ #this figure IS using the 'fontset' parameter and must have two texts
399+ #with distinct fonts in the final image
400+ f2 , ax2 = plt .subplots (figsize = (12 ,10 ))
401+ ax2 .plot (range (11 ),color = "0.9" )
402+ ax2 .text (0.2 ,9 ,r"$\mathit{This\ text\ should\ have\ a\ one\ font} $" ,
403+ size = 18 , fontset = 'dejavusans' )
404+
405+ ax2 .text (0.2 ,8 ,r"$\mathit{This\ text\ should\ have\ another} $" ,
406+ size = 18 , fontset = 'dejavuserif' )
407+
408+ f1 .savefig ('mathtext_fontset_image1.png' )
409+ f2 .savefig ('mathtext_fontset_image2.png' )
410+
411+ figureLoaded1 = io .FileIO ('mathtext_fontset_image1.png' ).readall ()
412+ figureLoaded2 = io .FileIO ('mathtext_fontset_image2.png' ).readall ()
413+
414+ figuresEqual = figureLoaded1 == figureLoaded2
415+
416+ os .remove ('mathtext_fontset_image1.png' )
417+ os .remove ('mathtext_fontset_image2.png' )
418+
419+ #if the parameter fontset is not working, the figures will be equal and the
420+ #test will fail
421+ assert not figuresEqual
422+
0 commit comments