summaryrefslogtreecommitdiffstats
path: root/tests/test_texmath.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_texmath.py')
-rw-r--r--tests/test_texmath.py105
1 files changed, 105 insertions, 0 deletions
diff --git a/tests/test_texmath.py b/tests/test_texmath.py
new file mode 100644
index 0000000..80bf67b
--- /dev/null
+++ b/tests/test_texmath.py
@@ -0,0 +1,105 @@
+from pathlib import Path
+from textwrap import dedent
+
+from markdown_it import MarkdownIt
+from markdown_it.rules_block import StateBlock
+from markdown_it.rules_inline import StateInline
+from markdown_it.utils import read_fixture_file
+import pytest
+
+from mdit_py_plugins.texmath import index as main
+from mdit_py_plugins.texmath import texmath_plugin
+
+FIXTURE_PATH = Path(__file__).parent.joinpath("fixtures")
+
+
+def test_inline_func():
+
+ inline_func = main.make_inline_func(main.rules["dollars"]["inline"][0])
+
+ md = MarkdownIt()
+ src = r"$a=1$ $b=2$"
+ tokens = []
+ state = StateInline(src, md, {}, tokens)
+ inline_func(state, False)
+ assert tokens[0].as_dict() == {
+ "type": "math_inline",
+ "tag": "math",
+ "nesting": 0,
+ "attrs": None,
+ "map": None,
+ "level": 0,
+ "children": None,
+ "content": "a=1",
+ "markup": "$",
+ "info": "",
+ "meta": {},
+ "block": False,
+ "hidden": False,
+ }
+ assert state.pos == 5
+
+
+def test_block_func():
+ block_func = main.make_block_func(main.rules["dollars"]["block"][0])
+ md = MarkdownIt()
+ src = r"$$\na=1\n\nc\nb=2$$ (abc)"
+ tokens = []
+ state = StateBlock(src, md, {}, tokens)
+ block_func(state, 0, 10, False)
+ assert tokens[0].as_dict() == {
+ "type": "math_block_eqno",
+ "tag": "math",
+ "nesting": 0,
+ "attrs": None,
+ "map": None,
+ "level": 0,
+ "children": None,
+ "content": "\\na=1\\n\\nc\\nb=2",
+ "markup": "$$",
+ "info": "abc",
+ "meta": {},
+ "block": True,
+ "hidden": False,
+ }
+
+
+def test_plugin_parse(data_regression):
+ md = MarkdownIt().use(texmath_plugin)
+ tokens = md.parse(
+ dedent(
+ """\
+ $$
+ a=1
+ b=2
+ $$ (abc)
+
+ - ab $c=1$ d
+ """
+ )
+ )
+ data_regression.check([t.as_dict() for t in tokens])
+
+
+@pytest.mark.parametrize(
+ "line,title,input,expected",
+ read_fixture_file(FIXTURE_PATH.joinpath("texmath_dollar.md")),
+)
+def test_dollar_fixtures(line, title, input, expected):
+ md = MarkdownIt("commonmark").use(texmath_plugin)
+ md.options["xhtmlOut"] = False
+ text = md.render(input)
+ print(text)
+ assert text.rstrip() == expected.rstrip()
+
+
+@pytest.mark.parametrize(
+ "line,title,input,expected",
+ read_fixture_file(FIXTURE_PATH.joinpath("texmath_bracket.md")),
+)
+def test_bracket_fixtures(line, title, input, expected):
+ md = MarkdownIt("commonmark").use(texmath_plugin, delimiters="brackets")
+ md.options["xhtmlOut"] = False
+ text = md.render(input)
+ print(text)
+ assert text.rstrip() == expected.rstrip()