from .context import assert_equal, process_sympy | |
import pytest | |
def pytest_generate_tests(metafunc): | |
metafunc.parametrize('s', metafunc.cls.BAD_STRINGS) | |
class TestAllBad(object): | |
# These bad latex strings should raise an exception when parsed | |
BAD_STRINGS = [ | |
"(", | |
")", | |
# "a / b /", | |
"\\frac{d}{dx}", | |
"(\\frac{d}{dx})" | |
"\\sqrt{}", | |
"\\sqrt", | |
"{", | |
"}", | |
# "1.1.1", | |
"\\mathit{TEST}" | |
"\\frac{2}{}", | |
"\\frac{}{2}", | |
"\\int", | |
# "1 +", | |
# "a +", | |
"!", | |
"!0", | |
"_", | |
"^", | |
# "a // b", | |
# "a \\cdot \\cdot b", | |
# "a \\div \\div b", | |
"a\\mod \\begin{matrix}b\\end{matrix}" | |
"|", | |
"||x|", | |
"\\lfloor x", | |
"\\lfloor a \\rceil", | |
"\\operatorname{floor}(12.3, 123.4)", | |
"()", | |
"((((((((((((((((()))))))))))))))))", | |
"-", | |
"\\frac{d}{dx} + \\frac{d}{dt}", | |
# "f()", | |
# "f(,", | |
# "f(x,,y)", | |
# "f(x,y,", | |
"\\sin^x", | |
"\\cos^2", | |
# "\\cos 1 \\cos", | |
# "\\gcd(3)", | |
# "\\lcm(2)", | |
"@", "#", "$", "%", "&", "*", | |
"\\", | |
"~", | |
"\\frac{(2 + x}{1 - x)}", | |
"\\lim_{\\pi \\to 3} a", | |
# because mix of COMMA and SEMICOLON | |
"\\left\\{\\begin{pmatrix}1\\\\2\\\\3\\end{pmatrix},\\begin{pmatrix}4\\\\3\\\\1\\end{pmatrix};\\begin{pmatrix}1\\\\1\\\\1\\end{pmatrix}\\right\\}", | |
# percentages without numbers before-hand | |
"a\\%", | |
"\\%100", | |
# dollar signs without numbers after | |
"\\$" | |
] | |
def test_bad_string(self, s): | |
with pytest.raises(Exception): | |
process_sympy(s) | |