Latex tests
This commit is contained in:
parent
5211821a84
commit
4ac7de48b0
6 changed files with 139 additions and 39 deletions
68
tests/python/test_latex.py
Normal file
68
tests/python/test_latex.py
Normal file
|
@ -0,0 +1,68 @@
|
|||
import pytest
|
||||
from tempfile import TemporaryDirectory
|
||||
from shutil import which
|
||||
from os.path import exists
|
||||
from re import match
|
||||
from PySide6.QtGui import QColor
|
||||
|
||||
from LogarithmPlotter.util import latex
|
||||
|
||||
latex.SHOW_GUI_MESSAGES = False
|
||||
|
||||
|
||||
@pytest.fixture()
|
||||
def latex_obj():
|
||||
directory = TemporaryDirectory()
|
||||
obj = latex.Latex(directory)
|
||||
if not obj.checkLatexInstallation():
|
||||
raise Exception("Cannot run LaTeX tests without a proper LaTeX installation. Make sure to install a LaTeX distribution, DVIPNG, and the calligra package, and run the tests again.")
|
||||
yield obj
|
||||
directory.cleanup()
|
||||
|
||||
|
||||
class TestLatex:
|
||||
def test_check_install(self, latex_obj: latex.Latex) -> None:
|
||||
assert latex_obj.latexSupported == True
|
||||
assert latex_obj.checkLatexInstallation() == True
|
||||
bkp = [latex.DVIPNG_PATH, latex.LATEX_PATH]
|
||||
# Check what happens when one is missing.
|
||||
latex.DVIPNG_PATH = None
|
||||
assert latex_obj.latexSupported == False
|
||||
assert latex_obj.checkLatexInstallation() == False
|
||||
latex.DVIPNG_PATH = bkp[0]
|
||||
latex.LATEX_PATH = None
|
||||
assert latex_obj.latexSupported == False
|
||||
assert latex_obj.checkLatexInstallation() == False
|
||||
# Reset
|
||||
[latex.DVIPNG_PATH, latex.LATEX_PATH] = bkp
|
||||
|
||||
def test_render(self, latex_obj: latex.Latex) -> None:
|
||||
result = latex_obj.render(r"\frac{d\sqrt{\mathrm{f}(x \times 2.3)}}{dx}", 14, QColor(0, 0, 0, 255))
|
||||
# Ensure result format
|
||||
assert type(result) == str
|
||||
[path, width, height] = result.split(",")
|
||||
assert exists(path)
|
||||
assert match(r"\d+", width)
|
||||
assert match(r"\d+", height)
|
||||
# Ensure it returns errors on invalid latex.
|
||||
with pytest.raises(latex.RenderError):
|
||||
latex_obj.render(r"\nonexistant", 14, QColor(0, 0, 0, 255))
|
||||
# Replace latex bin with one that returns errors
|
||||
bkp = latex.LATEX_PATH
|
||||
latex.LATEX_PATH = which("false")
|
||||
with pytest.raises(latex.RenderError):
|
||||
latex_obj.render(r"\mathrm{f}(x)", 14, QColor(0, 0, 0, 255))
|
||||
latex.LATEX_PATH = bkp
|
||||
|
||||
def test_prerendered(self, latex_obj: latex.Latex) -> None:
|
||||
args = [r"\frac{d\sqrt{\mathrm{f}(x \times 2.3)}}{dx}", 14, QColor(0, 0, 0, 255)]
|
||||
latex_obj.render(*args)
|
||||
prerendered = latex_obj.findPrerendered(*args)
|
||||
assert type(prerendered) == str
|
||||
[path, width, height] = prerendered.split(",")
|
||||
assert exists(path)
|
||||
assert match(r"\d+", width)
|
||||
assert match(r"\d+", height)
|
||||
prerendered2 = latex_obj.findPrerendered(args[0], args[1]+2, args[2])
|
||||
assert prerendered2 == ""
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue