| 1234567891011121314151617181920212223242526272829303132 |
- from sympy.strategies.tools import subs, typed
- from sympy.strategies.rl import rm_id
- from sympy.core.basic import Basic
- from sympy.core.singleton import S
- def test_subs():
- from sympy.core.symbol import symbols
- a, b, c, d, e, f = symbols('a,b,c,d,e,f')
- mapping = {a: d, d: a, Basic(e): Basic(f)}
- expr = Basic(a, Basic(b, c), Basic(d, Basic(e)))
- result = Basic(d, Basic(b, c), Basic(a, Basic(f)))
- assert subs(mapping)(expr) == result
- def test_subs_empty():
- assert subs({})(Basic(S(1), S(2))) == Basic(S(1), S(2))
- def test_typed():
- class A(Basic):
- pass
- class B(Basic):
- pass
- rmzeros = rm_id(lambda x: x == S(0))
- rmones = rm_id(lambda x: x == S(1))
- remove_something = typed({A: rmzeros, B: rmones})
- assert remove_something(A(S(0), S(1))) == A(S(1))
- assert remove_something(B(S(0), S(1))) == B(S(0))
|