Skip to content

Commit f8e3e36

Browse files
mmaterarocky
authored andcommitted
Add CellsToTeX test
1 parent 9ddd63a commit f8e3e36

File tree

2 files changed

+107
-1
lines changed

2 files changed

+107
-1
lines changed

CHANGES.rst

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@ Enhancements
3232
* ``StringSplit`` now accepts a list in the first argument.
3333
* ``SetDelayed`` now accepts several conditions imposed both at LHS as well as RHS.
3434

35-
3635
Bug fixes
3736
+++++++++
3837

test/test_cellstotex.py

Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
import os
2+
from mathics.core.parser import parse, MathicsSingleLineFeeder
3+
from mathics.core.definitions import Definitions
4+
from mathics.core.evaluation import Evaluation
5+
from mathics.core.expression import Symbol
6+
import pytest
7+
import urllib.request
8+
import unittest
9+
10+
external_url = (
11+
"https://raw.githubusercontent.com/jkuczm/MathematicaCellsToTeX/master/NoInstall.m"
12+
)
13+
14+
pytestmark = pytest.mark.skipif(os.getenv("SKIP_CELLSTOTEX", None) is not None,
15+
reason="SKIP_CELLSTOTEX environment variable set")
16+
17+
try:
18+
http_code = urllib.request.urlopen(external_url).getcode()
19+
except:
20+
url_reachable = False
21+
else:
22+
url_reachable = http_code in (200,) # add other 2xx or 3xx's?
23+
24+
definitions = Definitions(add_builtin=True)
25+
evaluation = Evaluation(definitions=definitions, catch_interrupt=False)
26+
set_versionnumber = 'Unprotect[$VersionNumber];$VersionNumber=11;Protect[$VersionNumber];'
27+
import_url = 'Import@"%s"' % external_url
28+
29+
30+
def _evaluate(str_expression):
31+
expr = parse(definitions, MathicsSingleLineFeeder(str_expression))
32+
return expr.evaluate(evaluation)
33+
34+
_evaluate('LoadModule["pymathics.asy"]')
35+
36+
def test_load():
37+
str_expected1 = "{}"
38+
message1 = ""
39+
_evaluate(set_versionnumber)
40+
result1 = _evaluate(import_url)
41+
expected1 = _evaluate(str_expected1)
42+
43+
44+
if message1:
45+
assert result1 == expected1, message1
46+
else:
47+
assert result1 == expected1
48+
49+
result2 = _evaluate('Names["CellsToTeX`*"]')
50+
expected2 = _evaluate('{"CellToTeX", "CellsToTeXException", "CellsToTeXPreamble"}')
51+
print(result2)
52+
assert result2 == expected2
53+
54+
55+
@pytest.mark.skipif(not url_reachable, reason="skipping since we can't reach %s" % external_url)
56+
@pytest.mark.xfail
57+
def test_load_and_run():
58+
print("load and run")
59+
str_expected0 = "None"
60+
_evaluate(set_versionnumber)
61+
result0 = _evaluate(import_url)
62+
expected0 = _evaluate(str_expected0)
63+
64+
if result0 == Symbol("System`$Failed"):
65+
return 0
66+
67+
str_expr1 = 'CellsToTeXPreamble[]'
68+
str_expected1 = '"\\mmaSet{morefv={gobble=2,},}\\n"'
69+
result1 = _evaluate(str_expr1)
70+
expected1 = _evaluate(str_expected1)
71+
assert result1 == expected1
72+
73+
str_expr1 = 'boxes=MakeBoxes[Pi];\
74+
cell = Cell[BoxData[boxes], "Input"];res=Catch[CellToTeX[cell, Style->"Input"]]'
75+
str_expected1 = '"\\begin{mmaCell}{Input}\n \\pi\n\\end{mmaCell}"'
76+
message1 = ""
77+
result1 = _evaluate(str_expr1)
78+
expected1 = _evaluate(str_expected1)
79+
if message1:
80+
assert result1 == expected1, message1
81+
else:
82+
assert result1 == expected1
83+
84+
str_expr2 = 'boxes=MakeBoxes[(-b \\[PlusMinus] Sqrt[b^2-4*a*c])/(2 a)];\
85+
cell = Cell[BoxData[boxes],"Input"];res=Catch[CellToTeX[cell], Style->"Input"]'
86+
str_expected2 = '"\\begin{mmaCell}{Input}\n \\mmaFrac{-b\\(\\pmb{\\pm}\\)\\mmaSqrt{\\mmaSup{b}{2}-4 a c}}{2 a}\n\\end{mmaCell}"'
87+
print(str_expr2)
88+
message2 = ""
89+
result2 = _evaluate(str_expr2)
90+
expected2 = _evaluate(str_expected2)
91+
if message2:
92+
assert result2 == expected2, message2
93+
else:
94+
assert result2 == expected2
95+
96+
str_expr3 = 'boxes=MakeBoxes[Sqrt[Integrate[f[x],{x,a,b}]]];\
97+
cell = Cell[BoxData[boxes],"Input"];res=Catch[CellToTeX[cell]]'
98+
print(str_expr3)
99+
100+
str_expected3 = '"\\begin{mmaCell}[morefunctionlocal={x}]{Input}\n \\mmaSqrt{\\mmaSubSupM{\\int}{a}{b}f[x]dx}\n\\end{mmaCell}"'
101+
message3 = ""
102+
result3 = _evaluate(str_expr3)
103+
expected3 = _evaluate(str_expected3)
104+
if message3:
105+
assert result3 == expected3, message3
106+
else:
107+
assert result3 == expected3

0 commit comments

Comments
 (0)