Skip to content

Commit 1fe2dcb

Browse files
authored
Merge pull request #229 from lambda-feedback/fix/plus_minus
Fixed issues with plus_minus
2 parents 902f4c8 + 4d9ccb0 commit 1fe2dcb

File tree

3 files changed

+60
-2
lines changed

3 files changed

+60
-2
lines changed

app/preview_implementations/symbolic_preview.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,11 @@ def preview_function(response: str, params: Params) -> Result:
108108
sympy_out = []
109109
for expression in expression_list:
110110
latex_out.append(sympy_to_latex(expression, symbols, settings={"mul_symbol": r" \cdot "}))
111-
sympy_out.append(response)
111+
112+
sympy_out.append(response)
113+
114+
sympy_out = sorted(sympy_out)
115+
latex_out = sorted(latex_out)
112116

113117
if len(sympy_out) == 1:
114118
sympy_out = sympy_out[0]

app/preview_tests.py

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,60 @@ def test_natural_logarithm_notation(self):
7676
preview = result["preview"]
7777
assert preview["latex"] == r"\ln{\left(x \right)}"
7878

79+
@pytest.mark.parametrize(
80+
"response, is_latex, response_latex, response_sympy",
81+
[
82+
("plus_minus x", False, '\\left\\{- x,~x\\right\\}', "plus_minus x"),
83+
("\\pm x", True, '\\pm x', '{-x, x}'),
84+
(r"\pm x^{2}+\mp y^{2}", True, "\pm x^{2}+\mp y^{2}", "{-x**2 + y**2, x**2 - y**2}"),
85+
("plus_minus x**2 + minus_plus y**2", False, r"\left\{- x^{2} + y^{2},~x^{2} - y^{2}\right\}", "plus_minus x**2 + minus_plus y**2"),
86+
("- minus_plus x^2 minus_plus y^2", False, r"\left\{- x^{2} + y^{2},~x^{2} - y^{2}\right\}", "- minus_plus x^2 minus_plus y^2"),
87+
("- minus_plus x^2 - plus_minus y^2", False, r"\left\{- x^{2} - - y^{2},~x^{2} - y^{2}\right\}", "- minus_plus x^2 - plus_minus y^2"),
88+
("pm x**2 + mp y**2", False, r"\left\{- x^{2} + y^{2},~x^{2} - y^{2}\right\}", "plus_minus x**2 + minus_plus y**2"),
89+
("+- x**2 + -+ y**2", False, r"\left\{- x^{2} + y^{2},~x^{2} - y^{2}\right\}", "plus_minus x**2 + minus_plus y**2"),
90+
]
91+
)
92+
def test_using_plus_minus_symbols(self, response, is_latex, response_latex, response_sympy):
93+
params = {
94+
"strict_syntax": False,
95+
"elementary_functions": True,
96+
"is_latex": is_latex,
97+
"symbols": {
98+
"plus_minus": {
99+
"latex": r"\(\pm\)",
100+
"aliases": ["pm", "+-"],
101+
},
102+
"minus_plus": {
103+
"latex": r"\(\mp\)",
104+
"aliases": ["mp", "-+"],
105+
},
106+
},
107+
}
108+
params = Params(**params)
109+
result = preview_function(response, params)
110+
assert result["preview"]["latex"] == response_latex
111+
assert result["preview"]["sympy"] == response_sympy
112+
113+
def test_lh_rh_response(self):
114+
params = {
115+
"strict_syntax": False,
116+
"elementary_functions": True,
117+
"is_latex": False,
118+
"symbols": {
119+
"plus_minus": {
120+
"latex": r"\(\pm\)",
121+
"aliases": ["pm", "+-"],
122+
},
123+
"minus_plus": {
124+
"latex": r"\(\mp\)",
125+
"aliases": ["mp", "-+"],
126+
},
127+
},
128+
}
129+
params = Params(**params)
130+
result = preview_function("x + y = y + x", params)
131+
assert result["preview"]["latex"] == "x + y=x + y"
132+
assert result["preview"]["sympy"] == "x + y=y + x"
79133

80134
if __name__ == "__main__":
81135
pytest.main(['-xk not slow', "--tb=line", os.path.abspath(__file__)])

app/utility/preview_utilities.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ def parse_latex(response: str, symbols: SymbolDict, simplify: bool, parameters=N
110110
if len(parsed_responses) < 2:
111111
return parsed_responses.pop()
112112
else:
113-
return '{'+', '.join(parsed_responses)+'}'
113+
return '{'+', '.join(sorted(parsed_responses))+'}'
114114

115115

116116
def sanitise_latex(response):

0 commit comments

Comments
 (0)