summaryrefslogtreecommitdiffstats
path: root/tests/test_dollarmath.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_dollarmath.py')
-rw-r--r--tests/test_dollarmath.py96
1 files changed, 96 insertions, 0 deletions
diff --git a/tests/test_dollarmath.py b/tests/test_dollarmath.py
new file mode 100644
index 0000000..9f88726
--- /dev/null
+++ b/tests/test_dollarmath.py
@@ -0,0 +1,96 @@
+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.dollarmath import dollarmath_plugin
+from mdit_py_plugins.dollarmath import index as main
+
+FIXTURE_PATH = Path(__file__).parent.joinpath("fixtures")
+
+
+def test_inline_func():
+
+ inline_func = main.math_inline_dollar()
+
+ 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.math_block_dollar()
+ md = MarkdownIt()
+ src = r"$$\na=1\n\nc\nb=2$$ (abc)"
+ tokens = []
+ state = StateBlock(src, md, {}, tokens)
+ block_func(state, 0, 10, False)
+ print(tokens[0].as_dict())
+ assert tokens[0].as_dict() == {
+ "type": "math_block_label",
+ "tag": "math",
+ "nesting": 0,
+ "attrs": None,
+ "map": [0, 1],
+ "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(dollarmath_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("dollar_math.md")),
+)
+def test_dollarmath_fixtures(line, title, input, expected):
+ md = MarkdownIt("commonmark").use(
+ dollarmath_plugin, allow_space=False, allow_digits=False, double_inline=True
+ )
+ md.options.xhtmlOut = False
+ text = md.render(input)
+ print(text)
+ assert text.rstrip() == expected.rstrip()