"""Test the LaTeX writer"""

from __future__ import annotations

import pytest

from sphinx.writers.latex import rstdim_to_latexdim


def test_rstdim_to_latexdim() -> None:
    # Length units docutils supported
    # https://docutils.sourceforge.io/docs/ref/rst/restructuredtext.html#length-units
    assert rstdim_to_latexdim('160em') == '160em'
    assert rstdim_to_latexdim('160px') == '160\\sphinxpxdimen'
    assert rstdim_to_latexdim('160in') == '160in'
    assert rstdim_to_latexdim('160cm') == '160cm'
    assert rstdim_to_latexdim('160mm') == '160mm'
    assert rstdim_to_latexdim('160pt') == '160bp'
    assert rstdim_to_latexdim('160pc') == '160pc'
    assert rstdim_to_latexdim('30%') == '0.300\\linewidth'
    assert rstdim_to_latexdim('160') == '160\\sphinxpxdimen'

    # float values
    assert rstdim_to_latexdim('160.0em') == '160.0em'
    assert rstdim_to_latexdim('.5em') == '.5em'

    # unknown values (it might be generated by 3rd party extension)
    with pytest.raises(ValueError, match='could not convert string to float: '):
        rstdim_to_latexdim('unknown')
    assert rstdim_to_latexdim('160.0unknown') == '160.0unknown'
