U
    L?h"                     @   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 d dlmZ d dlmZ d dlmZ d dl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)Integer)S)StrSymbol)xyzc                 C   s   t | trtjS | S N)
isinstancer   r   ZZero)
expression r   V/var/www/html/venv/lib/python3.8/site-packages/sympy/strategies/tests/test_traverse.pyzero_symbols   s    r   c                  C   s@   t t} | ttttttttdtdtttks<td S Nr   )r   r   r   r   r   r   r   AssertionError)Zzero_onelevelr   r   r   	test_sall   s    r   c                   C   s   t t tt d S r   )_test_global_traversalr   _test_stop_on_non_basicsr   r   r   r   test_bottom_up   s    r   c                   C   s   t t tt d S r   )r   r   r   r   r   r   r   test_top_down   s    r   c                 C   sH   | t }|ttttttttdtdttdtdksDtd S r   )r   r   r   r   r   r   r   )travZzero_all_symbolsr   r   r   r   "   s     r   c                 C   sh   dd }t tdtdt tdtd}t tdtdt tdtd}| |}|||ksdtd S )Nc                 S   s(   z
| d W S  t k
r"   |  Y S X d S 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   )r    r%   r$   expectedrlr   r   r   r   )   s
    ""r   c                   @   s   e Zd ZdS )Basic2N)__name__
__module____qualname__r   r   r   r   r,   7   s   r,   c                 C   s$   | j r t| j d ts t| j  S | S r   )argsr   r   r,   )r   r   r   r   r+   ;   s    
r+   c                  C   sX   t t} | ttdtdttdtdttdtdttdtdksTtd S )Ng      ?g       @r)      )r   r+   r   r   r,   r   )Ztop_rlr   r   r   test_top_down_onceA   s    $ r2   c                  C   sX   t t} | ttdtdttdtdttdtdttdtdksTtd S )Nr"   r'   g      @g      @)r   r+   r   r   r,   r   )Z	bottom_rlr   r   r   test_bottom_up_onceH   s    $ r3   c                  C   sD   t td  } tdd t| }tdd t| }t||ks@td S )Nr)   c                 S   s   | d S r!   r   vr   r   r   <lambda>Q       ztest_expr_fns.<locals>.<lambda>c                 S   s   t t| tdS r!   )r   __new__r
   r   r4   r   r   r   r6   R   r7   )r   r   r   r	   r   r   r   )r$   er(   r   r   r   test_expr_fnsO   s    r:   N)%Zsympy.strategies.traverser   r   r   r   r   r   Zsympy.strategies.rlr   Zsympy.strategies.utilr	   Zsympy.core.addr
   Zsympy.core.basicr   Zsympy.core.numbersr   Zsympy.core.singletonr   Zsympy.core.symbolr   r   Z	sympy.abcr   r   r   r   r   r   r   r   r   r,   r+   r2   r3   r:   r   r   r   r   <module>   s&    