summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/jupynotex/tests/test_notebook.py
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/jupynotex/tests/test_notebook.py')
-rw-r--r--macros/latex/contrib/jupynotex/tests/test_notebook.py237
1 files changed, 237 insertions, 0 deletions
diff --git a/macros/latex/contrib/jupynotex/tests/test_notebook.py b/macros/latex/contrib/jupynotex/tests/test_notebook.py
new file mode 100644
index 0000000000..bf6511cbd3
--- /dev/null
+++ b/macros/latex/contrib/jupynotex/tests/test_notebook.py
@@ -0,0 +1,237 @@
+# Copyright 2020 Facundo Batista
+# All Rights Reserved
+# Licensed under Apache 2.0
+
+import base64
+import json
+import os
+import pathlib
+import re
+import tempfile
+import textwrap
+
+import pytest
+
+from jupynotex import Notebook
+
+
+@pytest.fixture
+def notebook():
+ _, name = tempfile.mkstemp()
+
+ def _f(cells):
+ with open(name, 'wt', encoding='utf8') as fh:
+ json.dump({'cells': cells}, fh)
+
+ return Notebook(name)
+
+ yield _f
+ os.unlink(name)
+
+
+def test_empty(notebook):
+ nb = notebook([])
+ assert len(nb) == 0
+
+
+def test_source_code(notebook):
+ rawcell = {
+ 'cell_type': 'code',
+ 'source': ['line1\n', ' line2\n'],
+ }
+ nb = notebook([rawcell])
+ assert len(nb) == 1
+
+ src, _ = nb.get(1)
+ expected = textwrap.dedent("""\
+ \\begin{verbatim}
+ line1
+ line2
+ \\end{verbatim}
+ """)
+ assert src == expected
+
+
+def test_source_markdown(notebook):
+ rawcell = {
+ 'cell_type': 'markdown',
+ 'source': ['line1\n', ' line2\n'],
+ }
+ nb = notebook([rawcell])
+ assert len(nb) == 1
+
+ src, _ = nb.get(1)
+ expected = textwrap.dedent("""\
+ \\begin{verbatim}
+ line1
+ line2
+ \\end{verbatim}
+ """)
+ assert src == expected
+
+
+def test_output_missing(notebook):
+ rawcell = {
+ 'cell_type': 'code',
+ 'source': [],
+ }
+ nb = notebook([rawcell])
+ assert len(nb) == 1
+
+ _, out = nb.get(1)
+ assert out is None
+
+
+def test_output_simple_executeresult_plain(notebook):
+ rawcell = {
+ 'cell_type': 'code',
+ 'source': [],
+ 'outputs': [
+ {
+ 'output_type': 'execute_result',
+ 'data': {
+ 'text/plain': ['default always present', 'line2'],
+ },
+ },
+ ],
+ }
+ nb = notebook([rawcell])
+ assert len(nb) == 1
+
+ _, out = nb.get(1)
+ expected = textwrap.dedent("""\
+ \\begin{verbatim}
+ default always present
+ line2
+ \\end{verbatim}
+ """)
+ assert out == expected
+
+
+def test_output_simple_executeresult_latex(notebook):
+ rawcell = {
+ 'cell_type': 'code',
+ 'source': [],
+ 'outputs': [
+ {
+ 'output_type': 'execute_result',
+ 'data': {
+ 'text/latex': ['some latex line', 'latex 2'],
+ 'text/plain': ['default always present'],
+ },
+ },
+ ],
+ }
+ nb = notebook([rawcell])
+ assert len(nb) == 1
+
+ _, out = nb.get(1)
+ expected = textwrap.dedent("""\
+ some latex line
+ latex 2
+ """)
+ assert out == expected
+
+
+def test_output_simple_executeresult_image(notebook):
+ raw_content = b"\x01\x02 asdlklda3wudghlaskgdlask"
+ rawcell = {
+ 'cell_type': 'code',
+ 'source': [],
+ 'outputs': [
+ {
+ 'output_type': 'execute_result',
+ 'data': {
+ 'image/png': base64.b64encode(raw_content).decode('ascii'),
+ 'text/plain': ['default always present'],
+ },
+ },
+ ],
+ }
+ nb = notebook([rawcell])
+ assert len(nb) == 1
+
+ _, out = nb.get(1)
+ m = re.match(r'\\includegraphics\{(.+)\}\n', out)
+ assert m
+ (fpath,) = m.groups()
+ assert pathlib.Path(fpath).read_bytes() == raw_content
+
+
+def test_output_simple_stream(notebook):
+ rawcell = {
+ 'cell_type': 'code',
+ 'source': [],
+ 'outputs': [
+ {
+ 'output_type': 'stream',
+ 'text': ['some text line', 'text 2'],
+ },
+ ],
+ }
+ nb = notebook([rawcell])
+ assert len(nb) == 1
+
+ _, out = nb.get(1)
+ expected = textwrap.dedent("""\
+ \\begin{verbatim}
+ some text line
+ text 2
+ \\end{verbatim}
+ """)
+ assert out == expected
+
+
+def test_output_simple_display_data(notebook):
+ raw_content = b"\x01\x02 asdlklda3wudghlaskgdlask"
+ rawcell = {
+ 'cell_type': 'code',
+ 'source': [],
+ 'outputs': [
+ {
+ 'output_type': 'display_data',
+ 'data': {
+ 'image/png': base64.b64encode(raw_content).decode('ascii'),
+ },
+ },
+ ],
+ }
+ nb = notebook([rawcell])
+ assert len(nb) == 1
+
+ _, out = nb.get(1)
+ m = re.match(r'\\includegraphics\{(.+)\}\n', out)
+ assert m
+ (fpath,) = m.groups()
+ assert pathlib.Path(fpath).read_bytes() == raw_content
+
+
+def test_output_multiple(notebook):
+ rawcell = {
+ 'cell_type': 'code',
+ 'source': [],
+ 'outputs': [
+ {
+ 'output_type': 'execute_result',
+ 'data': {
+ 'text/latex': ['some latex line', 'latex 2'],
+ },
+ }, {
+ 'output_type': 'stream',
+ 'text': ['some text line', 'text 2'],
+ },
+ ],
+ }
+ nb = notebook([rawcell])
+ assert len(nb) == 1
+
+ _, out = nb.get(1)
+ expected = textwrap.dedent("""\
+ some latex line
+ latex 2
+ \\begin{verbatim}
+ some text line
+ text 2
+ \\end{verbatim}
+ """)
+ assert out == expected