test_var.py 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. from sympy.core.function import (Function, FunctionClass)
  2. from sympy.core.symbol import (Symbol, var)
  3. from sympy.testing.pytest import raises
  4. def test_var():
  5. ns = {"var": var, "raises": raises}
  6. eval("var('a')", ns)
  7. assert ns["a"] == Symbol("a")
  8. eval("var('b bb cc zz _x')", ns)
  9. assert ns["b"] == Symbol("b")
  10. assert ns["bb"] == Symbol("bb")
  11. assert ns["cc"] == Symbol("cc")
  12. assert ns["zz"] == Symbol("zz")
  13. assert ns["_x"] == Symbol("_x")
  14. v = eval("var(['d', 'e', 'fg'])", ns)
  15. assert ns['d'] == Symbol('d')
  16. assert ns['e'] == Symbol('e')
  17. assert ns['fg'] == Symbol('fg')
  18. # check return value
  19. assert v != ['d', 'e', 'fg']
  20. assert v == [Symbol('d'), Symbol('e'), Symbol('fg')]
  21. def test_var_return():
  22. ns = {"var": var, "raises": raises}
  23. "raises(ValueError, lambda: var(''))"
  24. v2 = eval("var('q')", ns)
  25. v3 = eval("var('q p')", ns)
  26. assert v2 == Symbol('q')
  27. assert v3 == (Symbol('q'), Symbol('p'))
  28. def test_var_accepts_comma():
  29. ns = {"var": var}
  30. v1 = eval("var('x y z')", ns)
  31. v2 = eval("var('x,y,z')", ns)
  32. v3 = eval("var('x,y z')", ns)
  33. assert v1 == v2
  34. assert v1 == v3
  35. def test_var_keywords():
  36. ns = {"var": var}
  37. eval("var('x y', real=True)", ns)
  38. assert ns['x'].is_real and ns['y'].is_real
  39. def test_var_cls():
  40. ns = {"var": var, "Function": Function}
  41. eval("var('f', cls=Function)", ns)
  42. assert isinstance(ns['f'], FunctionClass)
  43. eval("var('g,h', cls=Function)", ns)
  44. assert isinstance(ns['g'], FunctionClass)
  45. assert isinstance(ns['h'], FunctionClass)