o
    à8VaØ  ã                   @   sÈ   d dl mZmZmZmZmZmZ d dlmZ d dl	m
Z
 d dlmZmZmZmZ d dlmZmZmZ dd„ Zdd	„ Zd
d„ Zdd„ Zdd„ Zdd„ ZG dd„ deƒZdd„ Zdd„ Zdd„ Zdd„ ZdS )é    )Útop_downÚ	bottom_upÚsallÚtop_down_onceÚbottom_up_onceÚ	basic_fns)Úrebuild)Úexpr_fns)ÚAddÚBasicÚSymbolÚS)ÚxÚyÚzc                 C   s   t | tƒrtjS | S ©N)Ú
isinstancer   r   ZZero)Z
expression© r   úF/usr/lib/python3/dist-packages/sympy/strategies/tests/test_traverse.pyÚzero_symbols	   s   r   c                  C   s8   t tƒ} | ttttttƒƒƒtddtttƒƒksJ ‚d S ©Nr   )r   r   r   r   r   r   )Zzero_onelevelr   r   r   Ú	test_sall   ó   0r   c                   C   ó   t tƒ ttƒ d S r   )Ú_test_global_traversalr   Ú_test_stop_on_non_basicsr   r   r   r   Útest_bottom_up   ó   r   c                   C   r   r   )r   r   r   r   r   r   r   Útest_top_down   r   r   c                 C   s8   | t ƒ}|ttttttƒƒƒtddtddƒƒksJ ‚d S r   )r   r   r   r   r   )ÚtravZzero_all_symbolsr   r   r   r      s   ÿr   c                 C   sH   dd„ }t ddt ddƒƒ}t ddt ddƒƒ}| |ƒ}||ƒ|ks"J ‚d S )Nc                 S   s"   z| d W S  t y   |  Y S w ©Né   )Ú	TypeError)Úexprr   r   r   Úadd_one_if_can%   s
   
ÿz0_test_stop_on_non_basics.<locals>.add_one_if_canr!   Úaé   Úbé   )r   )r   r$   r#   ZexpectedÚrlr   r   r   r   $   s
   r   c                   @   s   e Zd ZdS )ÚBasic2N)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r*   2   s    r*   c                 C   s   t | tƒr
t| jŽ S | S r   )r   r   r*   Úargs)r   r   r   r   Ú<lambda>6   s    r/   c                  C   s8   t tƒ} | tddtddƒƒƒtddtddƒƒksJ ‚d S ©Nr!   r&   r(   é   )r   r)   r   r*   )Ztop_rlr   r   r   Útest_top_down_once9   r   r2   c                  C   s8   t tƒ} | tddtddƒƒƒtddtddƒƒksJ ‚d S r0   )r   r)   r   r*   )Z	bottom_rlr   r   r   Útest_bottom_up_once?   r   r3   c                  C   sD   t td  } tdd„ tƒ| ƒ}tdd„ tƒ| ƒ}t|ƒ|ks J ‚d S )Nr(   c                 S   s   | d S r    r   ©Úvr   r   r   r/   G   s    ztest_expr_fns.<locals>.<lambda>c                 S   s   t  t| tdƒ¡S r    )r   Ú__new__r
   r   r4   r   r   r   r/   H   s    )r   r   r   r	   r   r   )r#   Úer'   r   r   r   Útest_expr_fnsE   s   r8   N)Zsympy.strategies.traverser   r   r   r   r   r   Zsympy.strategies.rlr   Zsympy.strategies.utilr	   Zsympyr
   r   r   r   Z	sympy.abcr   r   r   r   r   r   r   r   r   r*   r)   r2   r3   r8   r   r   r   r   Ú<module>   s      