o
    8Va	                     @   s\   d dl mZmZmZmZ d dlmZmZ dd Zdd Z	dd Z
d	d
 Zdd Zdd ZdS )    )	treeapplygreedy
allresultsbrute)partialreducec                  C   sZ   ddgddgdf} t | ttttidksJ dd }dd }t | t|t|idks+J d S )	N            c                  W   s   t | S N)sumargs r   B/usr/lib/python3/dist-packages/sympy/strategies/tests/test_tree.py<lambda>       z test_treeapply.<locals>.<lambda>c                  W   s   t dd | dS )Nc                 S   s   | | S r   r   )abr   r   r   r   	   r   z2test_treeapply.<locals>.<lambda>.<locals>.<lambda>r
   )r   r   r   r   r   r   	   s    <   r   listmintuplemax)treeaddmulr   r   r   test_treeapply   s
   r   c                  C   sr   t di dd ddksJ ddgddgdf} ddgd	dgdf}t | ttttid
d dt |ttttiks7J d S )Nr   c                 S      | d S Nr   r   xr   r   r   r      r   z%test_treeapply_leaf.<locals>.<lambda>)Zleaf	   r	   r
   r      c                 S      | d S Nr
   r   r"   r   r   r   r      r   r   )r   Ztreep1r   r   r   test_treeapply_leaf   s   r(   c            	      C   s  ddl m} m} t| t|i}dd }dd }dd }t|||ks#J t||f|d|||dks5J t||g|d| ||dksGJ |||gf}t||ddksXJ t||d	dkscJ t|d
d d}t| t|i}t||}|ddks~J |d	dksJ d S )Nr   )chainminimizec                 S   r&   r'   r   r"   r   r   r   r      r   z+test_treeapply_strategies.<locals>.<lambda>c                 S      | d S r'   r   r"   r   r   r   r      r   c                 S      d|  S r!   r   r"   r   r   r   r      r   r%      r
   c                 S      |  S r   r   r"   r   r   r   r   !       Z	objectiver	   r   )Zsympy.strategiesr)   r*   r   r   r   r   )	r)   r*   joinincdecdoubler   Zmaximizefnr   r   r   test_treeapply_strategies   s    $$
r6   c                  C   s   dd } dd }dd }| ||fg}t |dd d}|ddks"J |d	d
ks*J | || || | f||fggg}t |}|ddksDJ t |dd d}|ddksTJ d S )Nc                 S   r&   r'   r   r"   r   r   r   r   (   r   ztest_greedy.<locals>.<lambda>c                 S   r+   r'   r   r"   r   r   r   r   )   r   c                 S   r,   r!   r   r"   r   r   r   r   *   r   c                 S   r.   r   r   r"   r   r   r   r   -   r/   r0   r	   r-   r
   r   
      c                 S   r.   r   r   r"   r   r   r   r   5   r/      )r   )r2   r3   r4   r   r5   ZlowestZhighestr   r   r   test_greedy'   s   r:   c                  C   s   dd } dd }dd }t t| d| dhksJ t t| |gdddhks+J t t| |fddhks:J t t| ||fgddd	hksLJ d S )
Nc                 S   r&   r'   r   r"   r   r   r   r   9   r   z!test_allresults.<locals>.<lambda>c                 S   r+   r'   r   r"   r   r   r   r   :   r   c                 S   s   | d S r!   r   r"   r   r   r   r   ;   r   r   r   r	   r%   r-   )setr   )r2   r3   r4   r   r   r   test_allresults8   s    (r<   c                  C   sj   dd } dd }dd }| |g|f}t |dd }|ddks!J |ddks)J t | d	dks3J d S )
Nc                 S   r&   r'   r   r"   r   r   r   r   D   r   ztest_brute.<locals>.<lambda>c                 S   r+   r'   r   r"   r   r   r   r   E   r   c                 S   r    r!   r   r"   r   r   r   r   F   r   c                 S   r.   r   r   r"   r   r   r   r   H   r/   r   r$   r
   )r   )r2   r3   Zsquarer   r5   r   r   r   
test_bruteC   s   r>   N)Zsympy.strategies.treer   r   r   r   	functoolsr   r   r   r(   r6   r:   r<   r>   r   r   r   r   <module>   s    