summaryrefslogtreecommitdiff
path: root/Qwen2.5-Eval/evaluation/latex2sympy/tests/variable_test.py
diff options
context:
space:
mode:
authorYuren Hao <yurenh2@timan108.cs.illinois.edu>2025-09-04 22:16:22 -0500
committerYuren Hao <yurenh2@timan108.cs.illinois.edu>2025-09-04 22:16:22 -0500
commitfc6d57ffb8d5ddb5820fcc00b5491a585c259ebc (patch)
treee9841f93a353e2107225cfc721d1ce57c0e594dc /Qwen2.5-Eval/evaluation/latex2sympy/tests/variable_test.py
Initial commit
Diffstat (limited to 'Qwen2.5-Eval/evaluation/latex2sympy/tests/variable_test.py')
-rwxr-xr-xQwen2.5-Eval/evaluation/latex2sympy/tests/variable_test.py92
1 files changed, 92 insertions, 0 deletions
diff --git a/Qwen2.5-Eval/evaluation/latex2sympy/tests/variable_test.py b/Qwen2.5-Eval/evaluation/latex2sympy/tests/variable_test.py
new file mode 100755
index 0000000..9fc13c7
--- /dev/null
+++ b/Qwen2.5-Eval/evaluation/latex2sympy/tests/variable_test.py
@@ -0,0 +1,92 @@
+from .context import assert_equal
+import pytest
+import hashlib
+from sympy import UnevaluatedExpr, Symbol, Mul, Pow, Max, Min, gcd, lcm, floor, ceiling
+
+x = Symbol('x', real=True)
+y = Symbol('y', real=True)
+
+
+def test_variable_letter():
+ assert_equal("\\variable{x}", Symbol('x' + hashlib.md5('x'.encode()).hexdigest(), real=True))
+
+
+def test_variable_digit():
+ assert_equal("\\variable{1}", Symbol('1' + hashlib.md5('1'.encode()).hexdigest(), real=True))
+
+
+def test_variable_letter_subscript():
+ assert_equal("\\variable{x_y}", Symbol('x_y' + hashlib.md5('x_y'.encode()).hexdigest(), real=True))
+
+
+def test_variable_letter_comma_subscript():
+ assert_equal("\\variable{x_{i,j}}", Symbol('x_{i,j}' + hashlib.md5('x_{i,j}'.encode()).hexdigest(), real=True))
+
+
+def test_variable_digit_subscript():
+ assert_equal("\\variable{x_1}", Symbol('x_1' + hashlib.md5('x_1'.encode()).hexdigest(), real=True))
+
+
+def test_variable_after_subscript_required():
+ with pytest.raises(Exception):
+ assert_equal("\\variable{x_}", Symbol('x_' + hashlib.md5('x_'.encode()).hexdigest(), real=True))
+
+
+def test_variable_before_subscript_required():
+ with pytest.raises(Exception):
+ assert_equal("\\variable{_x}", Symbol('_x' + hashlib.md5('_x'.encode()).hexdigest(), real=True))
+
+
+def test_variable_bad_name():
+ with pytest.raises(Exception):
+ assert_equal("\\variable{\\sin xy}", None)
+
+
+def test_variable_in_expr():
+ assert_equal("4\\cdot\\variable{x}", 4 * Symbol('x' + hashlib.md5('x'.encode()).hexdigest(), real=True))
+
+
+def test_variable_greek_letter():
+ assert_equal("\\variable{\\alpha }\\alpha", Symbol('\\alpha ' + hashlib.md5('\\alpha '.encode()).hexdigest(), real=True) * Symbol('alpha', real=True))
+
+
+def test_variable_greek_letter_subscript():
+ assert_equal("\\variable{\\alpha _{\\beta }}\\alpha ", Symbol('\\alpha _{\\beta }' + hashlib.md5('\\alpha _{\\beta }'.encode()).hexdigest(), real=True) * Symbol('alpha', real=True))
+
+
+def test_variable_bad_unbraced_long_subscript():
+ with pytest.raises(Exception):
+ assert_equal("\\variable{x_yz}", None)
+
+
+def test_variable_bad_unbraced_long_complex_subscript():
+ with pytest.raises(Exception):
+ assert_equal("\\variable{x\\beta 10_y\\alpha 20}", None)
+
+
+def test_variable_braced_subscript():
+ assert_equal("\\variable{x\\beta 10_{y\\alpha 20}}", Symbol('x\\beta 10_{y\\alpha 20}' + hashlib.md5('x\\beta 10_{y\\alpha 20}'.encode()).hexdigest(), real=True))
+
+
+def test_variable_complex_expr():
+ assert_equal("4\\cdot\\variable{value1}\\frac{\\variable{value_2}}{\\variable{a}}\\cdot x^2", 4 * Symbol('value1' + hashlib.md5('value1'.encode()).hexdigest(), real=True) * Symbol('value_2' + hashlib.md5('value_2'.encode()).hexdigest(), real=True) / Symbol('a' + hashlib.md5('a'.encode()).hexdigest(), real=True) * x**2)
+
+
+def test_variable_dollars():
+ assert_equal("\\$\\variable{x}", Symbol('x' + hashlib.md5('x'.encode()).hexdigest(), real=True))
+
+
+def test_variable_percentage():
+ assert_equal("\\variable{x}\\%", Mul(Symbol('x' + hashlib.md5('x'.encode()).hexdigest(), real=True), Pow(100, -1, evaluate=False), evaluate=False))
+
+
+def test_variable_single_arg_func():
+ assert_equal("\\floor(\\variable{x})", floor(Symbol('x' + hashlib.md5('x'.encode()).hexdigest(), real=True)))
+ assert_equal("\\ceil(\\variable{x})", ceiling(Symbol('x' + hashlib.md5('x'.encode()).hexdigest(), real=True)))
+
+
+def test_variable_multi_arg_func():
+ assert_equal("\\gcd(\\variable{x}, \\variable{y})", UnevaluatedExpr(gcd(Symbol('x' + hashlib.md5('x'.encode()).hexdigest(), real=True), Symbol('y' + hashlib.md5('y'.encode()).hexdigest(), real=True))))
+ assert_equal("\\lcm(\\variable{x}, \\variable{y})", UnevaluatedExpr(lcm(Symbol('x' + hashlib.md5('x'.encode()).hexdigest(), real=True), Symbol('y' + hashlib.md5('y'.encode()).hexdigest(), real=True))))
+ assert_equal("\\max(\\variable{x}, \\variable{y})", Max(Symbol('x' + hashlib.md5('x'.encode()).hexdigest(), real=True), Symbol('y' + hashlib.md5('y'.encode()).hexdigest(), real=True), evaluate=False))
+ assert_equal("\\min(\\variable{x}, \\variable{y})", Min(Symbol('x' + hashlib.md5('x'.encode()).hexdigest(), real=True), Symbol('y' + hashlib.md5('y'.encode()).hexdigest(), real=True), evaluate=False))