o
    8Va                     @   s   d dl mZ d dlmZmZmZmZmZmZm	Z	m
Z
 d dl mZ dd Zdd Zdd	 Zd
d Zdd Zdd Zdd Zdd Zdd ZdS )    )S)rm_idglomflattenunpacksort
distributesubsrebuild)Basicc                  C   s`   t dd } | tddtdksJ | tddtdks J | tddtddks.J d S )Nc                 S   s   | dkS Nr    xr   r   @/usr/lib/python3/dist-packages/sympy/strategies/tests/test_rl.py<lambda>       ztest_rm_id.<locals>.<lambda>r         )r   r   )Zrmzerosr   r   r   
test_rm_id   s    r   c               	   C   s   ddl m}  ddlm} dd }dd }dd }t|||}|| || d| d	dd
d}| d| d}t|jt|jks@J d S )Nr   Addr   c                 S      |   d S )Nr   Zas_coeff_Mulr   r   r   r   r          ztest_glom.<locals>.<lambda>c                 S   r   r   r   r   r   r   r   r      r   c                 S   s   | | S )Nr   )Zcntargr   r   r   r      r      r   FZevaluate   )sympyr   Z	sympy.abcr   r   setargs)r   r   keycountZnewargsrlresultexpectedr   r   r   	test_glom   s   r'   c                   C   s,   t tddtddtddddksJ d S )Nr   r   r      )r   r   r   r   r   r   test_flatten   s   ,r)   c                   C   s4   t tddks
J t tddtddksJ d S )Nr   r   )r   r   r   r   r   r   test_unpack   s    r*   c                   C   s(   t ttdddtdddksJ d S )Nr   r   r   )r   strr   r   r   r   r   	test_sort   s   (r,   c                  C   s   G dd dt } G dd dt }t| |}|| dd|ddd	|| dddd	| dddd	ks2J || ddd| dddksBJ d S )
Nc                   @      e Zd ZdS )ztest_distribute.<locals>.T1N__name__
__module____qualname__r   r   r   r   T1#   r   r2   c                   @   r-   )ztest_distribute.<locals>.T2Nr.   r   r   r   r   T2$   r   r3   r   r   r   r(   r   )r   r   )r2   r3   Zdistribute_t12r   r   r   test_distribute"   s   
$r4   c                  C   sh   ddl m} m}m} |d\}}|d| ||dd}| |d||d|}t|| }|||ks2J d S )Nr   )r   Mulsymbolszx, yr   Fr   )r   r   r5   r6   r   )r   r5   r6   r   yexprr&   Zdistribute_mulr   r   r   test_distribute_add_mul,   s   
r9   c                  C   s.   t dd} | ddksJ | ddksJ d S )Nr   r   r   )r	   )r$   r   r   r   	test_subs4   s   
r:   c                  C   s6   ddl m}  t| tdtd}t|dksJ d S )Nr   r   r   r   r   )r   r   r   __new__r   r
   )r   r8   r   r   r   test_rebuild9   s   r<   N)r   r   Zsympy.strategies.rlr   r   r   r   r   r   r	   r
   r   r   r'   r)   r*   r,   r4   r9   r:   r<   r   r   r   r   <module>   s    (
